Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

1,621 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MindRoot

Build, operate, and embed tool-using AI agents without locking your application to one model, vendor, or interface.

PyPI

MindRoot is a self-hostable Python agent platform with a web UI, REST API, Python SDK, and an extensible plugin runtime. It turns models into operational agents by connecting them to typed tools, internal services, pipelines, knowledge bases, persistent context, custom interfaces, and external systems.

It is designed for teams that need more than a chat wrapper:

  • Application developers can embed agents through an API or Python SDK.
  • AI engineers can swap model, speech, retrieval, and tool providers without rebuilding the agent layer.
  • Platform teams can control which capabilities each agent receives.
  • Product teams can ship purpose-built interfaces rather than exposing a generic chatbot.
  • Plugin authors can package backend logic, HTTP routes, frontend components, and agent tools as independently installable Python projects.

MindRoot can be used as an agent backend, an internal automation platform, a customizable AI workspace, or the foundation of a complete vertical application.

MindRoot is broad by design, but not monolithic: most capabilities live in plugins, and agents receive only the commands and services enabled for them.

Why MindRoot

Many agent frameworks stop at a Python loop. MindRoot includes the surrounding application and operating layer needed to turn that loop into a usable system:

CapabilityWhat it provides
Agent runtimeMulti-turn model execution, tool dispatch, command results, conversation state, and task completion
Provider abstractionSwappable local or hosted LLM, image, speech, retrieval, and automation providers
Capability controlsCommands and services can be enabled per agent instead of exposing every integration globally
Plugin runtimeInstallable Python packages can add tools, services, pipelines, FastAPI routes, static assets, templates, and Web Components
Interactive UIStreaming chat, command status, rich results, custom components, and replaceable application layouts
Programmatic accessREST task API and the mrsdk Python client
Knowledge and memoryPlugin-based RAG, reusable knowledge bases, session context, and persistent memory
OperationsAdmin UI for agents, plugins, providers, users, API keys, and configuration
ExtensibilityHooks and ordered pipelines can inspect or transform prompts, messages, context, and results

The practical result is a system in which an agent capability can be built once and used from the standard chat UI, a custom plugin UI, a backend API call, or another application.

Architecture

flowchart LR
subgraph Clients
CHAT[Streaming Web UI]
APP[Custom Plugin UI]
API[REST API]
SDK[Python SDK]
end
subgraph MindRoot["MindRoot Runtime"]
AUTH[Users, sessions and API keys]
AGENT[Agent loop<br/>persona, policy and context]
ROUTER[Model and service resolution]
TOOLS[Command dispatcher]
EVENTS[SSE event stream]
PIPE[Pipelines and hooks]
LOG[Conversation and task trace]
end
subgraph Plugins["Installable Plugins"]
CMD[Agent commands]
SVC[Internal services]
ROUTES[FastAPI routes]
UI[Lit components<br/>templates and assets]
KB[Knowledge and memory]
end
subgraph Providers["Local or Hosted Providers"]
LLM[LLMs]
MEDIA[Speech, image and video]
DATA[Databases and retrieval]
AUTO[Browser, desktop and shell]
EXT[Business APIs and MCP]
end
CHAT --> AUTH
APP --> AUTH
API --> AUTH
SDK --> API
AUTH --> AGENT
AGENT <--> ROUTER
AGENT --> TOOLS
AGENT <--> PIPE
AGENT --> LOG
AGENT --> EVENTS
EVENTS --> CHAT
EVENTS --> APP
TOOLS --> CMD
ROUTER --> SVC
PIPE --> Plugins
CMD --> Providers
SVC --> Providers
KB --> AGENT
ROUTES --> APP
UI --> APP
ROUTER --> LLM
Loading

Execution model

  1. A user or application invokes an agent through chat, the REST API, or the SDK.
  2. MindRoot loads that agent's instructions, model configuration, context, and enabled capabilities.
  3. The selected model can return an answer or invoke a registered command.
  4. MindRoot validates and executes the command, records its result, and feeds the result back into the agent loop.
  5. Partial commands, running state, results, media, and completion events can stream to the UI over SSE.
  6. The agent returns a final task result and, for API callers, an optional trace of the commands executed.

Plugins participate throughout this path. A single plugin can supply the command the agent calls, the service behind it, an authenticated HTTP endpoint, and the component that renders its result.

What you can build

MindRoot is intended for real applications rather than one narrow agent pattern. Examples include:

  • Internal research and operations assistants
  • Document extraction and report-generation systems
  • Knowledge-base and RAG applications
  • Browser, desktop, and shell automation
  • Background and bulk-processing workflows
  • Voice and multimodal agents
  • Database-backed business assistants
  • Rich data viewers, dashboards, and generated workspaces
  • Domain-specific products with a completely custom UI

Existing plugins cover integrations such as Anthropic, OpenAI, OpenRouter, Gemini, Groq, DeepSeek, Cerebras, Fireworks, Together AI, Deepgram, image and video generation, browser and computer control, SQL databases, Supabase, file and Office-document operations, MCP, persistent memory, knowledge bases, job queues, and custom UI components.

The plugin ecosystem changes faster than this README. Use the admin plugin index or install a compatible plugin directly from GitHub to inspect the currently available integrations.

Quick start

Requirements

  • A supported Python 3 environment
  • A virtual environment is strongly recommended
  • Credentials for at least one model provider, unless you configure a local provider
  • On some Linux systems, libgl-dev may be required

1. Install

python -m venv .venv
source .venv/bin/activate
pip install mindroot

2. Configure

Set a secret and the credentials required by your chosen provider:

export JWT_SECRET_KEY="replace-with-a-long-random-value"export ANTHROPIC_API_KEY="..."# or OPENAI_API_KEY, or credentials for another installed provider

Optional email verification:

export REQUIRE_EMAIL_VERIFY=true

See the SMTP plugin documentation for mail configuration.

3. Create the first administrator and start MindRoot

mindroot --admin-user admin --admin-password 'replace-this-password'

For subsequent starts:

mindroot

To use another port:

mindroot -p 8001

MindRoot stores configuration relative to its working environment, so start it consistently from the same deployment directory.

4. Configure an agent

Open /admin and:

  1. Install a model-provider plugin.
  2. Configure its required environment variables.
  3. Create or select an agent.
  4. Enable only the commands that agent should be allowed to use.
  5. Restart MindRoot after installing or changing plugins when prompted.

You now have an agent accessible through the web interface and programmatically.

Use MindRoot from an application

REST API

Run an agent as a long-running task:

curl -X POST \
"http://localhost:8010/task/Assistant?api_key=${MINDROOT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"instructions":"Inspect this request, use the enabled tools, and return a concise report."}' \
--max-time 300

A successful response includes the final result, task trace, and conversation log identifier:

{
"status": "ok",
"results": "Final textual or structured result",
"full_results": [
{
"cmd": "some_command",
"args": {},
"result": "..."
}
],
"log_id": "..."
}

See API documentation for authentication, task-agent configuration, endpoint behavior, and additional examples.

Python SDK

pip install mrsdk
frommrsdkimportMindRootClientclient=MindRootClient(
api_key="your_api_key",
base_url="http://localhost:8010",
)
result=client.run_task(
agent_name="Assistant",
instructions="What is the square root of 256? Show your work.",
)
print(result["results"])

See the mrsdk repository for SDK details and task-trace access.

The plugin model

A MindRoot plugin is a normal installable Python package that can contribute one or more layers of an application:

my_plugin/
├── plugin_info.json # Metadata, commands and services
├── pyproject.toml
└── src/my_plugin/
├── mod.py # Agent commands and internal services
├── router.py # Optional FastAPI routes
├── static/ # JavaScript, CSS and other assets
├── templates/ # Plugin-owned pages
├── inject/ # Add content to existing template blocks
└── override/ # Replace existing template blocks

A minimal agent command

fromlib.providers.commandsimportcommand@command()asyncdeflookup_order(order_id: str, context=None):
"""Return order status for an order ID."""return {
"order_id": order_id,
"status": "in_transit",
}

List the command in plugin_info.json, install the package, and enable it for the desired agent in the admin UI. The function signature becomes the command contract exposed to the model.

Commands can:

  • call external APIs or internal services;
  • read and update session context;
  • return structured data for subsequent reasoning;
  • publish partial and final events;
  • feed custom result components;
  • delegate work or initiate background jobs.

Services provide reusable backend capabilities without necessarily exposing them directly to a model. Plugins may also register ordered pipelines to transform data at defined execution stages.

Full-stack plugins

Plugins are not limited to tools. They can add FastAPI routes and complete frontend experiences using Jinja2 and Lit Web Components. The standard chat UI exposes command lifecycle events such as partial output, running state, final results, media, and completion. A plugin can register a renderer for its command and turn structured output into a chart, table, editor, approval form, or other interactive interface.

This allows domain applications to live with the agent rather than maintaining a disconnected frontend and orchestration stack.

See Plugin documentation for package structure, decorators, routes, template injection, component integration, SSE events, pipelines, and development guidance.

Capability and provider composition

MindRoot separates several concerns that are often hard-coded together:

  • Agents define behavior, instructions, model choices, and permitted commands.
  • Commands are capabilities the model may invoke.
  • Services are reusable implementations consumed by commands or other services.
  • Providers satisfy capabilities using local or remote infrastructure.
  • Pipelines and hooks modify data at execution boundaries.
  • UI plugins decide how interactions and results are presented.

This separation makes it possible to retain an agent and its application while changing a model provider, retrieval backend, speech system, database, or interface. It also makes capability review straightforward: each agent has an explicit enabled command set.

Knowledge, memory, and long-running work

MindRoot's plugin architecture supports:

  • Retrieval-augmented generation and reusable knowledge bases
  • Pre-generated embeddings and document collections
  • Session-scoped state and conversation history
  • Persistent agent memory
  • Background jobs and bulk task processing
  • Full task traces for application-side inspection

For the knowledge-base plugin, install runvnc/mr_kb from Admin → Plugins → Install from GitHub. A step-by-step custom-agent example is available in agents.md.

Administration and operation

The admin interface centralizes:

  • Agent definitions and personas
  • Per-agent command access
  • Model and service configuration
  • Plugin installation
  • Users and API keys
  • Knowledge and application configuration

Plugins may be installed from a configured registry/index or directly from a GitHub repository. Because plugins execute backend code, treat installation like any other server-side dependency: review and trust the source, pin versions for production, and restart the process after changes.

For a durable deployment, run MindRoot behind a process supervisor and reverse proxy, provide secrets through your deployment environment, use persistent storage, and expose it over TLS.

Design principles

Model and infrastructure choice

MindRoot supports hosted and local services through plugins. Application code should not need to be rewritten merely because the preferred model or inference provider changes.

Explicit capabilities

Tools are registered and enabled per agent. A research agent, support agent, and infrastructure agent can share one deployment without receiving the same permissions.

Full-stack extensibility

The same plugin can own business logic, agent commands, routes, and presentation. Extensibility does not stop at a model-tool adapter.

Inspectable execution

Programmatic task responses can include both a final result and the command trace that produced it. The web interface also surfaces command lifecycle activity as it happens.

Open distribution

Plugins, agents, personas, models, and knowledge assets can be distributed through configurable registries or directly as independent repositories. The public registry at registry.agenthost.org is a work in progress and can be replaced with a user-specific registry.

Gallery

Admin interface

Admin Interface

Plugin management

Plugin Management

Computer use

Computer Use

3D graph visualization

3D Graph Demo

Technical explanation

Chain Rule Demo

Character generation

Character Generation

Fantasy character creation

Fantasy Character

Morgan's Method

Morgan's Method

HeyGen integration

HeyGen Integration

Documentation

Project status

MindRoot is an actively developed, extensible platform. APIs, plugin conventions, and operational guidance may evolve. For production deployments, pin the MindRoot and plugin versions you have validated and review release changes before upgrading.

About

AI agent web app platform

Topics

Resources

Stars

95 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages