Omni-Agent Orchestration Platform — 87 specialised AI agents, any LLM provider.
Project description
Limbi is an omni-agent orchestration platform for running many specialized AI agents from one command, one Python API, or one MCP-compatible editor workflow.
Current package version: 1.6.2
Quick Install
Use whichever install path fits your setup:
# Homebrew
brew tap sayon999-d/limbi https://github.com/sayon999-d/Limbi-.git
brew install limbi
# curl installer
curl -fsSL https://raw.githubusercontent.com/sayon999-d/Limbi-/main/scripts/install.sh | bash
# pip
python -m pip install --upgrade limbi
Recent Updates
Limbi has grown from a simple agent runner into a workspace-aware orchestration layer. The recent changes focus on making it more practical for real terminal work, easier to guide from the keyboard, and easier to extend without rewriting the core runtime.
What was added:
- Live progress stages during thinking, so you can see when Limbi is planning, searching, calculating, generating, or running delegated agents.
- A shorter terminal command surface so the banner and quick help only show the commands most people actually need during normal use.
- A custom skill system with
/skills,/skill, update, and delete support. - A self-learning skill path with approval-gated skill creation, skill refinement, and a local skill hub for publishing packs.
- Skill configs that can inherit the current provider, or pin their own provider/model.
- Saved custom skills in
.limbi/config.jsonfor later reuse. - A safer skill runner that borrows the chosen runtime for the task and then restores the original shell selection.
- Graph-backed session memory with episodic logs and a persistent user model that survives restarts.
- Better source-grounded URL research for prompts that include links.
- Direct internet research for prompts without URLs, with live Google or DuckDuckGo search paths selected automatically from the prompt.
- Browser automation helpers for page fetch, search, screenshot, click, type, and form fill.
- A durable task board for delegated workstreams with heartbeats and zombie detection.
- Persistent scheduler storage for natural-language cron-like jobs and unattended runs.
- Execution backend catalogs for local, Docker, SSH, Singularity, Modal, Daytona, and Vercel Sandbox style execution targets.
- A tighter rolling context window so repeated turns are compressed instead of replayed over and over.
- Research answer repair so Limbi can rewrite accidental internal registry dumps into a topic-based answer when the prompt was meant to be research.
- Adaptive runtime budgeting so simple tasks stay light and harder tasks get more room.
- One-line bootstrap scripts for Linux, macOS, WSL2, and Windows-style environment checks.
What changed:
- The CLI now shows high-level progress instead of a blank waiting state.
- Manual provider and model selection stays available, but the default flow is less noisy.
- API keys are reused from workspace storage instead of being re-entered every time.
- Custom skills can be created, updated, listed, and removed from inside the terminal.
- Custom skills can be refined over time, published locally, and shared as skill packs.
- Internet research now chooses a visible search path, then fetches and summarizes the top pages before answering.
- Session memory is no longer only linear. Limbi now uses graph-linked context and episodic logs so related work is easier to recall and share across agents.
- The running context is compacted more aggressively so the prompt window stays lighter and less repetitive.
- Research prompts are filtered so Limbi answers the topic instead of dumping internal agent registry text.
- The release flow has been kept explicit so version bumps stay predictable.
- Delegated tasks now get durable task board records with heartbeats and zombie detection.
- Browser tasks can fetch, search, click, type, and capture screenshots from dynamic sites.
- Scheduler and execution backend choices are persisted, inspectable, and reusable.
- The repo now includes bootstrap scripts to check Python, Node, ripgrep, ffmpeg, and Git.
In short: Limbi now tries harder to stay useful across longer sessions, not just within one single prompt.
Current system size:
- 90 registered agents
- 469 available agent actions
- 19 supported LLM provider modes
- CLI, Python API, FastAPI backend, MCP server, and VS Code extension support
Limbi is built for developers, operators, founders, researchers, and teams who want an AI assistant that can coordinate work across engineering, infrastructure, cloud, security, data, documentation, business operations, and industry-specific tasks.
Why Limbi Exists
Most AI tools are good at answering questions, but real work usually needs more than an answer.
A realistic task can involve many separate roles:
- A planner to break the goal into steps.
- A code agent to inspect or generate code.
- A security agent to check risks.
- A testing agent to prepare validation.
- A DevOps or cloud agent to prepare deployment.
- A documentation agent to write the final explanation.
- A memory layer to carry findings from one step into the next.
Without orchestration, the user has to copy information between prompts, tools, dashboards, terminals, cloud consoles, tickets, and documents. That creates context switching, repeated work, and mistakes.
Limbi was built to solve that coordination problem.
Instead of asking one general model to do every job alone, Limbi lets the model act as an orchestrator. It can talk normally, choose the right agent, run agent actions, collect the result, store the result in shared context memory, and continue the workflow with better context.
Limbi also understands more than one local model style. If you run Ollama, Ollama Cloud, LM Studio, vLLM, LocalAI, KoboldCpp, llama.cpp, or any other local OpenAI-compatible server, Limbi can treat it as a local provider and skip API-key prompts when the endpoint is clearly local.
Limbi also supports model routers and hosted model catalogs such as OpenRouter, Hugging Face Inference Providers, Chutes, Bytez, OpenAI, Anthropic, Google, Groq, Together AI, Mistral, Azure OpenAI, and Cohere. In /models, Limbi can query the provider catalog after you enter a valid key and show the model IDs you can use.
What Problem Limbi Solves
Limbi solves four core problems.
| Problem | What usually happens | What Limbi provides |
|---|---|---|
| Tool fragmentation | Users switch between many tools and manually copy context. | One orchestration layer for many domains. |
| Generic AI responses | A single model tries to reason about every domain at once. | Specialized agents with focused responsibilities. |
| Lost context | Findings from one step are forgotten in the next step. | Shared context memory between agents. |
| Weak execution trail | Users cannot easily see what was executed or why. | Audit logging, structured results, and workspace state. |
Is Limbi Necessary
Limbi is useful when your task needs coordination across multiple areas.
Use Limbi when:
- You want one prompt to involve planning, code, testing, security, cloud, documentation, or operations.
- You want to switch LLM providers without changing your application code.
- You want project-local memory and audit logs.
- You want an MCP server that exposes agent tools to compatible editors or AI clients.
- You want to build on a reusable multi-agent framework instead of writing glue code from scratch.
Limbi may not be necessary when:
- You only need a simple one-off chat response.
- You do not need agents, memory, tools, or orchestration.
- You do not want local workspace files such as
.limbi/config.json. - Your use case is better served by a single direct API call to one LLM provider.
What Limbi Focuses On
Limbi is not trying to be just another chat interface. Its main focus is orchestration, control, and reusable work.
What Limbi prioritizes:
- Multi-agent execution instead of one model doing everything alone.
- Workspace-aware memory so work can continue across turns and across agents.
- Provider flexibility so you can use local models, cloud models, or OpenAI-compatible endpoints without changing your workflow.
- Practical execution tools such as file handling, code generation, research, web summarization, Git, security, and operations.
- Human control through
/models,/agent,/agents, and/keysso you can guide the system when needed. - Clear runtime feedback, audit logs, and context sharing so results are easier to trust and review.
- Local-first behavior for laptop users, including support for smaller models when memory is limited.
What Limbi does not try to optimize for:
- Pure chat novelty or entertainment.
- A single universal model with no memory or tool layer.
- Hidden automation with no audit trail.
- Locking you into one provider or one cloud vendor.
In practice, that means Limbi is better suited for tasks where the answer is only part of the job. It is designed to plan, route, remember, fetch, write, compare, and track the work as it happens.
How Limbi Works
Every Limbi request follows the same high-level lifecycle.
- The user sends a prompt through the CLI, Python API, FastAPI server, or MCP client.
- Limbi initializes or loads the local
.limbi/workspace. - The orchestrator loads provider settings, agent registry data, recent executions, shared context, and optional RAG context.
- The selected LLM receives the prompt and decides whether to answer directly or delegate work.
- If delegation is needed, Limbi parses structured JSON delegation blocks from the LLM response.
- The orchestrator resolves the target agent and action from the registry.
- Agent actions execute and return structured results.
- Results are logged to the audit database.
- Results are published to shared context memory.
- Limbi returns a final response that includes the answer and execution summary.
Architecture
flowchart TD
User["User"]
CLI["CLI: python -m limbi"]
PythonAPI["Python API"]
HTTP["FastAPI backend"]
MCP["MCP client or editor"]
Workspace["Project workspace: .limbi"]
Config["config.json"]
Audit["audit.db"]
Memory["memory.db"]
Context["context_memory.db"]
Vector["chroma_db"]
Orchestrator["Orchestrator"]
Provider["LLM provider layer"]
Parser["Payload parser"]
Registry["Agent registry"]
Agents["87 specialized agents"]
Result["Final response"]
User --> CLI
User --> PythonAPI
User --> HTTP
User --> MCP
CLI --> Orchestrator
PythonAPI --> Orchestrator
HTTP --> Orchestrator
MCP --> Registry
Workspace --> Config
Workspace --> Audit
Workspace --> Memory
Workspace --> Context
Workspace --> Vector
Config --> Orchestrator
Audit --> Orchestrator
Context --> Orchestrator
Vector --> Orchestrator
Orchestrator --> Provider
Provider --> Orchestrator
Orchestrator --> Parser
Parser --> Registry
Registry --> Agents
Agents --> Audit
Agents --> Context
Agents --> Orchestrator
Orchestrator --> Result
Result --> User
Architecture Explanation
The CLI, Python API, FastAPI server, and MCP server are entry points. They all route work into the Limbi system.
The .limbi/ workspace stores local project state. It contains configuration, audit logs, memory databases, session data, logs, and optional vector search data.
The orchestrator is the core controller. It prepares the LLM prompt, injects agent registry data, reads memory, retrieves optional RAG context, executes delegations, retries failures, and returns the final response.
The provider layer hides differences between LLM vendors. Users can move between local Ollama models, Ollama Cloud models, local OpenAI-compatible servers such as LM Studio, vLLM, LocalAI, KoboldCpp, or llama.cpp, remote routers such as OpenRouter, Hugging Face, Chutes, and Bytez, and hosted providers such as OpenAI, Anthropic, Google, Groq, Mistral, Azure OpenAI, Cohere, Together AI, and OpenAI-compatible endpoints.
The payload parser extracts structured agent delegation blocks from the LLM output.
The agent registry maps names such as security_agent or testing_agent to Python agent classes and their available actions.
The shared context memory system lets one agent's result influence later work. For example, if the security agent finds a critical issue, the DevOps agent can see that context before preparing a deployment plan.
Runtime Feedback
Limbi shows live runtime feedback while a prompt is running.
While it works, the terminal updates an elapsed-time indicator so you know the request is still moving.
When the run finishes, Limbi prints a compact summary with:
- latency
- prompt token usage
- completion token usage
- total token usage
- an estimated hallucination risk percentage
That hallucination value is a heuristic, not a scientific measurement. It is there to help you spot when a prompt may need more structure or when the model seems to be stretching.
Execution Pipeline
sequenceDiagram
participant U as User
participant C as CLI or API
participant O as Orchestrator
participant L as LLM Provider
participant P as Payload Parser
participant R as Agent Registry
participant A as Selected Agent
participant M as Context Memory
participant D as Audit Log
U->>C: Send natural language prompt
C->>O: Create chat request
O->>M: Load shared session context
O->>D: Load recent execution history
O->>L: Send prompt with agents and context
L-->>O: Return response and optional delegation JSON
O->>P: Parse delegation blocks
P-->>O: Return agent, action, params
O->>R: Resolve agent class
R-->>O: Return agent instance
O->>A: Execute action with params
A-->>O: Return structured result
O->>D: Store execution result
O->>M: Publish result to shared context
O-->>C: Return final answer and execution summary
C-->>U: Display response
Agent Working Model
All agents follow the same contract.
flowchart LR
A["User prompt"] --> B["Orchestrator"]
B --> C["LLM reasoning"]
C --> D["Delegation JSON"]
D --> E["Agent registry lookup"]
E --> F["BaseAgent.execute<br/>(action, params)"]
F --> G["handle_<action>(...)"]
G --> H["AgentResult"]
H --> I["Audit log"]
H --> J["Shared context memory"]
I --> K["Final user response"]
J --> K
Each agent is a Python class that inherits from BaseAgent. An agent exposes actions by defining methods named handle_<action_name>. For example, an agent with handle_review exposes an action named review.
When the orchestrator executes an action, the agent returns an AgentResult with:
successagentactiondataerror
That structure makes results predictable and easy to log, summarize, and reuse.
Agent Categories
Limbi currently registers 89 agents. The exact list can be checked at any time:
python -m limbi --list-agents
Cognitive and Reasoning Agents
These agents help the system plan, route, critique, reason, coordinate, learn, evaluate, and remember.
| Agent | Main responsibility |
|---|---|
planner_agent |
Breaks large goals into smaller execution steps. |
critic_agent |
Reviews plans and outputs for quality, gaps, and risk. |
router_agent |
Classifies prompts and chooses suitable agents. |
react_agent |
Supports reason-and-act style workflows. |
reflex_agent |
Provides reflexive evaluation and adaptation behavior. |
model_reflex_agent |
Handles model-oriented reflex workflows. |
taskloop_agent |
Supports repeated task loops and iterative execution. |
memory_agent |
Stores and recalls conversation memory. |
context_memory_agent |
Shares results between agents in a session. |
swarm_agent |
Coordinates multi-agent workflows. |
evaluation_agent |
Benchmarks and evaluates outputs. |
learning_agent |
Captures learning and feedback over time. |
knowledge_agent |
Stores and retrieves reusable knowledge. |
research_agent |
Helps gather and structure research findings. |
Engineering Agents
These agents work on software engineering tasks such as code, files, tests, databases, migrations, Git, and documentation.
| Agent | Main responsibility |
|---|---|
code_agent |
Generates, explains, reviews, and debugs code. |
file_agent |
Reads, writes, searches, and organizes files. |
git_agent |
Handles Git-oriented operations and explanations. |
database_agent |
Works with schemas, queries, migrations, and database planning. |
testing_agent |
Creates test plans, test cases, and quality checks. |
qa_agent |
Supports quality assurance strategy and regression thinking. |
migration_agent |
Plans and describes migrations between systems or schemas. |
docs_agent |
Produces and updates documentation. |
documentation_agent |
Generates README files, API docs, ADRs, runbooks, and glossaries. |
data_agent |
Supports data processing and analysis workflows. |
nlp_agent |
Supports text classification, summarization, entities, translation, and intent work. |
analytics_agent |
Handles analytics reports and insight generation. |
reporting_agent |
Builds structured reports and summaries. |
performance_agent |
Reviews performance, latency, capacity, and optimization. |
DevOps, Cloud, and Platform Agents
These agents support infrastructure, deployment, observability, cloud, Kubernetes, CI/CD, and platform operations.
| Agent | Main responsibility |
|---|---|
devops_agent |
Coordinates deployment and operations workflows. |
cicd_agent |
Works with CI/CD pipelines, releases, and rollback planning. |
sre_agent |
Supports reliability, incidents, SLOs, and operational health. |
incident_agent |
Helps triage and summarize incidents. |
observability_agent |
Works with logs, metrics, alerts, and monitoring plans. |
aws_agent |
Supports AWS-oriented workflows. |
gcp_agent |
Supports Google Cloud workflows. |
azure_agent |
Supports Azure workflows. |
kubernetes_agent |
Supports Kubernetes manifests, scaling, pods, and clusters. |
api_gateway_agent |
Supports API gateway routes, rate limits, CORS, auth, and health. |
workflow_agent |
Creates, validates, and visualizes workflows. |
integration_agent |
Plans and describes service integrations. |
auth_agent |
Supports authentication, tokens, and authorization workflows. |
feature_flag_agent |
Creates, toggles, lists, and evaluates feature flags. |
notification_agent |
Supports notification and message delivery workflows. |
scheduler_agent |
Supports scheduling and calendar-style coordination. |
execution_backend_agent |
Recommends and catalogs execution backends such as local, Docker, SSH, Modal, Daytona, and Vercel Sandbox. |
os_agent |
Supports operating-system-oriented tasks. |
browser_agent |
Supports browser-oriented tasks and web interaction workflows. |
web_scraping_agent |
Fetches pages, extracts links, inspects forms, and summarizes web content. |
tool_builder_agent |
Generates tool specifications and helper tooling. |
Security, Governance, and Compliance Agents
These agents help identify risk, prepare policy decisions, and support governance.
| Agent | Main responsibility |
|---|---|
security_agent |
Supports security reviews, dependency scans, secrets checks, and risk summaries. |
compliance_agent |
Supports audits, compliance reports, and gap analysis. |
policy_agent |
Supports policy interpretation and policy drafting. |
approval_agent |
Supports approval workflows and human-in-the-loop gates. |
legal_agent |
Supports legal summaries, contract review, and compliance-oriented reasoning. |
government_agent |
Supports government service, grant, and policy workflows. |
Business and Operations Agents
These agents help with sales, finance, support, marketing, people operations, and business process work.
| Agent | Main responsibility |
|---|---|
finance_agent |
Supports financial summaries, forecasts, and budget reasoning. |
sales_agent |
Supports sales planning, lead qualification, and proposal outlines. |
payments_agent |
Supports payment, invoice, refund, subscription, and analytics flows. |
cost_agent |
Supports cost reports, forecasts, and optimization. |
procurement_agent |
Supports purchasing, vendor, and procurement workflows. |
customer_support_agent |
Supports support response and ticket workflows. |
customer_success_agent |
Supports success plans, risk summaries, and customer health. |
marketing_agent |
Supports campaign, messaging, and marketing planning. |
social_media_agent |
Supports content calendars, drafts, sentiment, and moderation. |
hr_agent |
Supports HR plans, policy summaries, and people operations. |
recruiting_agent |
Supports candidate and recruiting workflows. |
onboarding_agent |
Supports onboarding plans and checklists. |
project_management_agent |
Supports projects, sprints, risks, and delivery planning. |
jira_agent |
Supports Jira issue and project-tracking workflows. |
comms_agent |
Supports communication drafts and internal updates. |
feedback_agent |
Supports feedback collection and improvement loops. |
Industry and Domain Agents
These agents provide domain-specific support for common verticals.
| Agent | Main responsibility |
|---|---|
healthcare_agent |
Supports healthcare summaries and operational workflows. |
education_agent |
Supports lesson plans, quizzes, learning paths, and rubrics. |
real_estate_agent |
Supports listings, real estate summaries, and investment reasoning. |
ecommerce_agent |
Supports product listings, commerce operations, and pricing workflows. |
insurance_agent |
Supports policy summaries, claims, fraud signals, and underwriting checklists. |
logistics_agent |
Supports routing, shipments, warehouse summaries, and demand buffers. |
hospitality_agent |
Supports hospitality planning and service workflows. |
travel_agent |
Supports travel planning and related operations. |
manufacturing_agent |
Supports manufacturing plans and operational summaries. |
agriculture_agent |
Supports crop plans, harvest schedules, field risk, and input budgets. |
energy_agent |
Supports energy usage, planning, and sustainability workflows. |
sustainability_agent |
Supports ESG, supply chain, waste, water, and sustainability scoring. |
blockchain_agent |
Supports wallet risk, tokenomics, smart contract checklists, and transactions. |
iot_agent |
Supports IoT fleet, telemetry, and device operations. |
media_agent |
Supports media planning, production schedules, and distribution plans. |
design_agent |
Supports product and interface design planning. |
multimodal_agent |
Supports workflows involving multiple content types. |
simulation_agent |
Supports simulation planning and scenario analysis. |
Installation Guide
1. Check Python First
Limbi requires Python 3.11 or newer.
python --version
If the version is lower than 3.11, install Python 3.11 or newer before continuing.
On macOS with Homebrew:
brew install python@3.11
Then create a virtual environment:
python3.11 -m venv .venv
source .venv/bin/activate
python --version
The final command should show Python 3.11 or newer.
2. Install Limbi
For normal use from PyPI:
python -m pip install --upgrade pip
python -m pip install limbi
For local development from this repository:
python -m pip install --upgrade pip
python -m pip install -e .
If you want every optional provider and server feature:
python -m pip install "limbi[all]"
3. Verify The Install
Because some paths with spaces can break console scripts, this README uses module execution as the safe command form.
python -m limbi --version
python -m limbi --list-providers
python -m limbi --list-agents
Expected checks:
- Version should print the installed Limbi version.
- Providers should list provider names such as
ollama,lmstudio,vllm,localai,koboldcpp,openai,anthropic,google, andgroq. - Agents should list 89 agents.
4. Choose An LLM Provider
Limbi defaults to Ollama.
For local Ollama:
ollama serve
ollama pull llama3.2:3b
export LLM_PROVIDER=ollama
export LLM_MODEL=llama3.2:3b
For Ollama Cloud:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=ollama_cloud
export LLM_BASE_URL="https://ollama.com/v1"
export OLLAMA_API_KEY="your_ollama_cloud_key"
Limbi only asks for a cloud API key when you actually choose a cloud provider or cloud model. Startup stays quiet for local providers. If you already saved a key with /keys, Limbi reuses it automatically.
For other local model servers, use the OpenAI-compatible provider. Limbi treats localhost endpoints as local, so it will not ask for an API key when the base URL is clearly local.
For LM Studio:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=lmstudio
export LLM_BASE_URL="http://localhost:1234/v1"
export LLM_MODEL="local-model-name"
For vLLM:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=vllm
export LLM_BASE_URL="http://localhost:8000/v1"
export LLM_MODEL="local-model-name"
If you want Limbi to manage the key for you during a session, use /models or /keys after startup. Limbi stores the key in the workspace config under .limbi/config.json, so you do not have to re-enter it every time.
For LocalAI:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=localai
export LLM_BASE_URL="http://localhost:8080/v1"
export LLM_MODEL="local-model-name"
For KoboldCpp:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=koboldcpp
export LLM_BASE_URL="http://localhost:5001/v1"
export LLM_MODEL="local-model-name"
For llama.cpp:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=llamacpp
export LLM_BASE_URL="http://localhost:8081/v1"
export LLM_MODEL="local-model-name"
For OpenRouter:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=openrouter
export LLM_MODEL="openai/gpt-4o"
export LLM_API_KEY="your_api_key_here"
For Hugging Face Inference Providers:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=huggingface
export LLM_MODEL="meta-llama/Llama-3.1-8B-Instruct"
export LLM_API_KEY="your_api_key_here"
For Chutes:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=chutes
export LLM_MODEL="meta-llama/Llama-3.1-8B-Instruct"
export LLM_API_KEY="your_api_key_here"
For Bytez:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=bytez
export LLM_MODEL="meta-llama/Llama-3.1-8B-Instruct"
export LLM_API_KEY="your_api_key_here"
For OpenAI:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=openai
export LLM_MODEL=gpt-4o
export LLM_API_KEY="your_api_key_here"
For Anthropic:
python -m pip install "limbi[anthropic]"
export LLM_PROVIDER=anthropic
export LLM_MODEL=claude-sonnet-4-20250514
export LLM_API_KEY="your_api_key_here"
For Groq:
python -m pip install "limbi[groq]"
export LLM_PROVIDER=groq
export LLM_MODEL=llama-3.1-70b-versatile
export LLM_API_KEY="your_api_key_here"
For an OpenAI-compatible local server:
python -m pip install "limbi[openai]"
export LLM_PROVIDER=openai_compatible
export LLM_BASE_URL="http://localhost:1234/v1"
export LLM_MODEL="local-model-name"
export LLM_API_KEY="not-needed"
5. Run A Prompt
Use one-shot mode:
python -m limbi "what agents do you have?"
Use interactive mode:
python -m limbi
Inside interactive mode:
/model
/models
/agent
/agents
/key
/keys
/list
/providers
/trust
/clear
/help
/quit
Use /models when you want to pick a provider and model first, then let Limbi reuse the saved key if it already exists. Use /keys when you want to set, replace, or delete the saved key for a provider without changing the model.
6. Understand The Workspace
On first run, Limbi creates a hidden .limbi/ folder in the current directory.
The first launch also asks whether you trust the current workspace. If you deny it, Limbi exits instead of working in that folder.
.limbi/
|-- config.json
|-- audit.db
|-- memory.db
|-- context_memory.db
|-- chroma_db/
|-- sessions/
`-- logs/
Use this to see hidden folders:
ls -a
The CLI first-run message is plain text and does not use emoji icons.
7. Optional RAG Setup
RAG and codebase vector search require ChromaDB.
python -m pip install "limbi[rag]"
Then use the Python API:
from limbi import Orchestrator
orch = Orchestrator()
print(orch.ingest_codebase("."))
print(orch.vector_store_stats())
If ChromaDB is not installed, normal chat can still work. Only codebase indexing and vector search need this extra.
8. Optional MCP Setup
Generate MCP configuration:
python -m limbi --generate-mcp-config
This writes:
.vscode/mcp.json
The generated config uses:
python -m limbi.mcp_server
Do not expect python -m limbi.mcp_server to answer like a chat command. It is a stdio server and waits for an MCP client to send JSON-RPC input.
CLI Commands
Use the safe module form:
python -m limbi "prompt"
python -m limbi
python -m limbi --list-agents
python -m limbi --list-providers
python -m limbi --generate-mcp-config
python -m limbi --version
python -m limbi --help
If your path does not contain spaces and the console script works, this shorter form is also available:
limbi "prompt"
limbi --list-agents
The on-screen command list is intentionally short:
| Command | Description |
|---|---|
/models |
Choose provider and model for the current session |
/keys |
Manage saved API keys for providers |
/skills |
Open the custom skill manager |
/skill |
Run a saved custom skill with a task |
/agents |
Manually choose an agent and run one action |
/agent |
Alias for /agents |
/trust |
Show workspace trust status |
/clear |
Clear conversation history |
/help |
Show the short help list |
/quit |
Exit Limbi |
Advanced commands like /trace, /traces, /permissions, /eval, /benchmark, /list,
/providers, /model, and /key still exist, but they are kept out of the main banner so
the CLI stays focused during normal work.
Provider Configuration
| Variable | Default | Purpose |
|---|---|---|
LLM_PROVIDER |
ollama |
Provider to use. |
LLM_MODEL |
llama3.2:3b |
Model name. |
LLM_API_KEY |
Empty | API key for hosted providers. |
LLM_BASE_URL |
http://localhost:11434 |
Provider base URL. |
LLM_TEMPERATURE |
0.2 |
Sampling temperature. |
LLM_MAX_TOKENS |
2048 |
Maximum output tokens. |
AZURE_DEPLOYMENT |
Empty | Azure OpenAI deployment name. |
AZURE_API_VERSION |
2024-06-01 |
Azure OpenAI API version. |
LIMBI_API_KEY |
Empty | Optional API key required by the HTTP backend. |
LIMBI_CORS_ORIGINS |
Localhost defaults | Comma-separated browser origins allowed to call the backend. |
If you enable LIMBI_API_KEY, set the same value in the VS Code setting limbi.apiKey so the extension can keep working.
Manual Control Commands
Use /models when you want to choose the provider and model manually for the current session. Limbi will ask for an API key only when the selected provider actually needs one.
Use /agent when you want to manually choose one registered agent and run one of its actions directly.
Use /keys when you want to manage stored provider keys. This is the persistent key store for Limbi. Once saved, the key stays available in .limbi/config.json until you delete it.
The custom skill manager can:
- create and update skills
- delete skills you no longer need
- export a single skill or a skill pack
- import a skill or skill pack
- publish a skill pack into the local
.limbi/skill_hub/folder
Skills keep metadata for provider, model, tags, examples, and the open agentskills.io-style
manifest fields so they can grow into a more shareable format over time.
These commands do not replace the normal orchestrator. They sit beside it, so you can keep the automatic workflow for normal prompts and switch to manual control only when you need it.
You can use the Up and Down arrow keys to move through the /models and /agent selection screens, then press Enter to confirm.
The runtime summary now appears under the answer as a compact footer with hallucination, latency, and token usage.
URL Research
If your prompt includes one or more URLs, Limbi now treats it like a source-grounded research task.
Example:
Summarize this page and explain the main points:
https://example.com/article
Limbi will:
- Detect the URL in your prompt.
- Fetch the page content through the web research path.
- Extract the title, headings, and readable content.
- Build a source context block for the orchestrator.
- Return a summary grounded in the fetched page instead of guessing from memory.
If multiple URLs are present, Limbi also compares the source summaries so it can describe agreement and differences more clearly.
If a page is heavily JavaScript-rendered or blocks simple HTTP fetching, Limbi may return a partial summary or a fetch error instead of inventing details.
If your prompt asks for research without a URL, Limbi now performs a live web search first. It picks a search path when it can infer one from the prompt:
- Google-style prompts use
www.google.com - DuckDuckGo-style prompts use
www.duckduckgo.com - Other research prompts fall back to auto mode and try Google, then DuckDuckGo
After the search, Limbi fetches the top pages, summarizes them, and grounds the response in those results instead of in Limbi's internal agent registry.
Session Memory And Adaptive Runtime
Limbi keeps a live session memory while it is running:
- Every user prompt and assistant response is written into the workspace memory stores.
- Shared session state is kept in
context_memory.dbso other agents can read the current goal, recent focus, and conversation summary. - Related turns and results are linked as graph nodes and edges so recall is more relevant than a flat replay of the session.
- The same session memory stays available if you switch provider or model during the run.
- Limbi also stores the conversation summary so later turns can stay grounded in earlier work.
Limbi adapts its runtime budget to the task:
- Simple prompts use a smaller token budget and a lower temperature.
- Larger builds, research tasks, and multi-step jobs get a higher token budget.
- The CLI footer shows the current hallucination estimate, latency, token usage, task complexity, and runtime token budget.
This is designed to keep the assistant lighter for small tasks and more thorough for harder ones without making the user manage those knobs manually.
Security Hardening
Limbi now includes a few protections that matter if you run the backend beyond a private local terminal:
- API access can be protected with
LIMBI_API_KEY. - Browser access is limited through
LIMBI_CORS_ORIGINSinstead of allowing every origin. - Audit records are sanitized before they are stored and before they are returned from the API.
- Internal exception details are no longer echoed back to clients.
- MCP and the VS Code extension can send the same API key so authenticated setups still work smoothly.
- The CLI asks whether to trust a workspace before it starts work in that folder.
- The CLI only asks for an API key when the selected provider or local endpoint truly needs one.
- Saved provider keys stay inside the local workspace config and can be removed later with
/keys.
Recommended setup for anything shared, exposed, or long-lived:
export LIMBI_API_KEY="choose-a-long-random-secret"
export LIMBI_CORS_ORIGINS="http://127.0.0.1:8000,http://localhost:8000"
If you are only using Limbi on your own machine, you can leave LIMBI_API_KEY empty and keep the default localhost origins.
Install
Limbi now has two easy installation paths:
Homebrew
Tap the repo and install Limbi through Homebrew:
brew tap sayon999-d/limbi https://github.com/sayon999-d/Limbi-.git
brew install limbi
One-line installer
You can also bootstrap and install Limbi directly from the repo:
curl -fsSL https://raw.githubusercontent.com/sayon999-d/Limbi-/main/scripts/install.sh | bash
On Windows PowerShell:
irm https://raw.githubusercontent.com/sayon999-d/Limbi-/main/scripts/install.ps1 | iex
If you want the installer to pull straight from the repo instead of PyPI, set:
LIMBI_INSTALL_SOURCE=git
Bootstrap check
Limbi also includes a small bootstrap checker for setting up a new machine or verifying a fresh environment.
Use it like this:
python scripts/bootstrap.py
It checks for:
- Python 3.11+
- Git
- ripgrep
- ffmpeg
- Node.js and npm
The bootstrap script does not modify your system automatically. It prints the missing tools and the most obvious install path for the current platform, which keeps the setup step safe and predictable.
Python API
import asyncio
from limbi import Orchestrator, list_agents, get_llm_provider
async def main():
agents = list_agents()
action_count = sum(len(actions) for actions in agents.values())
print(f"{len(agents)} agents, {action_count} actions")
provider = get_llm_provider()
print(provider.info())
orch = Orchestrator(session_id="demo")
result = await orch.chat(
"Plan a safe deployment and identify testing, security, and rollback tasks."
)
print(result["conversation_text"])
asyncio.run(main())
FastAPI Backend
Install server dependencies:
python -m pip install "limbi[server]"
Run from the repository root:
uvicorn main:app --reload
Useful endpoints:
| Endpoint | Purpose |
|---|---|
GET /health |
Backend health. |
POST /api/chat |
Send a chat message. |
POST /api/chat/clear |
Clear chat history. |
GET /api/agents |
List agents. |
POST /api/agents/{agent_name}/{action} |
Run a specific agent action. |
GET /api/audit/executions |
View recent executions. |
GET /api/audit/stats |
View execution statistics. |
POST /api/rag/ingest |
Index a directory for RAG. |
GET /api/rag/stats |
View vector store statistics. |
Example:
curl -X POST http://127.0.0.1:8000/api/chat \
-H "Content-Type: application/json" \
-d '{"message":"prepare a deployment checklist","stream":false}'
If you enabled LIMBI_API_KEY, include it in the request:
curl -X POST http://127.0.0.1:8000/api/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LIMBI_API_KEY" \
-d '{"message":"prepare a deployment checklist","stream":false}'
Common Errors And Fixes
bad interpreter
This can happen when the virtual environment path contains spaces.
Use:
python -m limbi "prompt"
Instead of:
limbi "prompt"
Provider requires an API key
If you select a hosted provider, Limbi will ask for the key the first time you actually use that provider or cloud model. After you save it, Limbi reuses it from the workspace config.
If you are using a local model service and Limbi still asks for a key, check that:
LLM_PROVIDERis set to a local provider such asollama,lmstudio,vllm,localai,koboldcpp, orllamacppLLM_BASE_URLpoints to a local address such aslocalhostor127.0.0.1
To clear or replace a saved key, use:
python -m limbi
Then run:
/keys
No such option: --generate-mcp-config
You are using an older installed package.
For local development:
python -m pip install -e .
python -m limbi --generate-mcp-config
For PyPI users:
python -m pip install --upgrade limbi
python -m limbi --generate-mcp-config
GitHub Actions Publishing
You can publish Limbi to PyPI from GitHub Actions with Twine.
- Add this repository secret in GitHub:
PYPI_API_TOKEN
- Create a GitHub Release or run the workflow manually from the Actions tab.
- The workflow in
.github/workflows/publish.ymlwill:- install build tools
- build the package
- run
twine check - upload the distributions with
python -m twine upload --skip-existing
The workflow uses:
TWINE_USERNAME=__token__
TWINE_PASSWORD=${{ secrets.PYPI_API_TOKEN }}
Keep bumping the package version before each release, because PyPI will reject any file name that already exists.
chromadb not installed
ChromaDB is optional and only required for RAG.
python -m pip install "limbi[rag]"
Package 'limbi' requires a different Python
Your environment is older than Python 3.11.
python --version
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install limbi
python -m limbi.mcp_server appears to hang
That is expected. The MCP server waits for an MCP client over stdio.
Use:
python -m limbi --generate-mcp-config
Then connect from an MCP-capable editor or client.
Project Structure
limbi/
|-- __init__.py
|-- __main__.py
|-- cli.py
|-- orchestrator.py
|-- llm_provider.py
|-- payload_parser.py
|-- audit_log.py
|-- vector_store.py
|-- workspace.py
|-- mcp_server.py
`-- agents/
Other important files:
main.py
limbi_mcp_server.py
limbi-vscode/
pyproject.toml
setup.py
README.md
LICENSE
License
Apache 2.0. See LICENSE.
Author
Built by Sayon Manna.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file limbi-1.6.7.tar.gz.
File metadata
- Download URL: limbi-1.6.7.tar.gz
- Upload date:
- Size: 238.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4c07ac27e05f902467f8aa37420de0980520349e047034ea6388d0d9ac2e2d3
|
|
| MD5 |
18e13118d822eb2d3d19ce573d159919
|
|
| BLAKE2b-256 |
d9bdec124c2465bbf6101c77074126b14f96e0edf18e3a1bca7a52f2459fa1a5
|
File details
Details for the file limbi-1.6.7-py3-none-any.whl.
File metadata
- Download URL: limbi-1.6.7-py3-none-any.whl
- Upload date:
- Size: 259.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dedf7c201e9e1ce58902b5fe14a438d743f9526fdbae4b26a60bff38c9c30040
|
|
| MD5 |
49d0d9143f3689bf139eaea7fa3a8bd2
|
|
| BLAKE2b-256 |
7bacf17d0b3bc40db77f994ce24836b8aa4d44cea42407a710c1e4a748ca3107
|