Terminal-based AI coding assistant built on Agno
Project description
Ember Code
One spark ignites a team. An AI coding assistant built with Agno orchestration.
Inspired by Claude Code, Ember Code is a terminal-based coding agent that assembles specialized AI teams on the fly. Describe your task — the Orchestrator picks the right agents, the right team mode, and runs them.
Why Ember Code?
Claude Code uses a single agent loop — powerful but monolithic. Ember Code takes a different approach: dynamic multi-agent orchestration. Instead of one agent doing everything, Agno's team system decomposes tasks, routes them to specialized agents, and synthesizes results — all automatically.
| Feature | Claude Code | Ember Code |
|---|---|---|
| Architecture | Single agent loop | Multi-agent teams (Agno) |
| Task routing | Manual sub-agent spawning | Automatic via Coordinate/Route modes |
| Code intelligence | Grep + file reads | CodeIndex semantic search (included free) |
| Knowledge base | None | ChromaDB vector store with custom embeddings |
| Planning | Plan mode (read-only) | Agno reasoning + Tasks mode |
| IDE integration | MCP server (stdio) | MCP server + client (Agno MCPTools) |
| Extensibility | Plugins, hooks, MCP | Agents + hooks + toolkits + MCP |
| Agent evals | Not built-in | Built-in regression testing framework |
| Memory | File-based MEMORY.md | Agno Memory + DB-backed storage |
| Learning | None | Agno LearningMachine (user profiles, entity memory) |
| Guardrails | None | PII detection, prompt injection, moderation |
| HITL | Implicit | Explicit confirmation/input requirements |
| Default model | Anthropic Claude | MiniMax M2.7 (model-agnostic, swappable) |
Quick Start
brew install ignite-ember/tap/ignite-ember # or: pip install ignite-ember
ignite-ember /login # sign up for hosted models (MiniMax M2.7)
ignite-ember # start coding
Or bring your own model (OpenAI, Anthropic, Groq, Ollama, etc.):
export OPENAI_API_KEY=sk-...
# .ember/config.yaml
models:
default: gpt-4o
registry:
gpt-4o:
provider: openai_like
model_id: gpt-4o
url: https://api.openai.com/v1
api_key: sk-... # direct key in config
# api_key_env: OPENAI_API_KEY # or from env var
# api_key_cmd: "op read ..." # or from shell command
See Quickstart for the full setup guide.
Upgrading
v0.3.8 includes the following changes:
- Problem: Escape key did not close the MCP panel (
/mcp) or the task panel.- Solution: Added all dialog/panel widgets to the Escape handler, including MCPPanelWidget and TaskPanel.
v0.3.7 includes the following changes:
- Problem: Edit/Write/Bash tools never asked for user confirmation, even when permissions were set to "ask".
- Solution:
requires_confirmationflag is now set on each function after registration in all custom toolkits.
- Solution:
v0.3.6 includes the following changes:
-
Problem: Debug logs grow unbounded and can fill up disk space.
- Solution: Switched to RotatingFileHandler with 10MB limit and 2 backup files.
-
Problem: Shell command output can be extremely large, causing issues when sending to the LLM.
- Solution: Truncate tool results to 30,000 characters, keeping start and end of output.
-
Problem: TUI escape key only closes the login dialog, leaving other panels open.
- Solution: Now closes any open panel: login, help, model picker, or session picker.
-
Problem: Learning features get stuck and never complete (caused by httpx connection pool issues in threads).
- Solution: Run learning extraction as an async task on the main event loop instead of a separate thread.
To upgrade Ember Code to the latest version:
brew upgrade ignite-ember/tap/ignite-ember
If brew upgrade doesn't work or you encounter issues, manually reinstall:
brew uninstall ignite-ember && brew untap ignite-ember/tap && brew tap ignite-ember/tap && brew install ignite-ember
TUI Mode
ignite-ember launches the Textual-based terminal UI by default. The backend runs as a separate process, connected via Unix socket.
Features: streaming responses, agent tree visualization, token tracking, session picker, keyboard shortcuts, HITL confirmation dialogs.
IDE Integration
Ember Code integrates with IDEs via the Model Context Protocol (MCP):
{
"mcpServers": {
"ignite-ember": {
"type": "stdio",
"command": "ignite-ember",
"args": ["mcp", "serve"]
}
}
}
Works with VS Code, JetBrains (IntelliJ, PyCharm, etc.), Cursor, and Windsurf. See MCP docs for details.
Key Features
Knowledge Base
Built-in vector knowledge base powered by ChromaDB and the Ember embeddings API:
knowledge:
enabled: true
collection_name: "my_project"
embedder: "local" # local SentenceTransformer (or "ember" for cloud)
Add content via slash commands: /knowledge add <url|path|text>, search with /knowledge search <query>. Agents can search the knowledge base automatically during execution.
Learning & Reasoning
- Learning — Agno LearningMachine builds user profiles, entity memory, and session context across conversations
- Reasoning tools —
thinkandanalyzetools for step-by-step reasoning during complex tasks
Guardrails
Built-in safety guardrails via Agno's pre-hook system:
guardrails:
pii_detection: true # detect and flag PII in prompts
prompt_injection: true # detect injection attempts
moderation: true # OpenAI moderation API
Human-in-the-Loop (HITL)
Agents can pause execution to request confirmation or user input before proceeding with sensitive operations. The TUI shows interactive approval dialogs.
Documentation
- Quickstart — Get up and running in under 5 minutes
- Architecture — System design and agent topology
- Agents — Specialized agents and their roles
- Skills — Reusable prompted workflows (
/deploy,/review-pr, etc.) - Onboarding — First-run setup, CodeIndex, and agent proposals
- Tools — Available toolkits and capabilities
- MCP — IDE integration via Model Context Protocol
- Configuration — Settings, permissions, and customization
- CodeIndex — Semantic code intelligence engine
- Evals — Agent evaluation framework and regression testing
- Hooks — Pre/post tool execution hooks
- Migration — Coming from Claude Code or Codex
- Security — Threat model, permissions, and enterprise hardening
- Development — Contributing and extending Ember Code
License
MIT
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 ignite_ember-0.3.8.tar.gz.
File metadata
- Download URL: ignite_ember-0.3.8.tar.gz
- Upload date:
- Size: 713.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d720449e96cdc04e583a7fb7535607046c5efbdee7b920f51135af10b69c7948
|
|
| MD5 |
d7d9bdd2e9b8b37fdcb5ec1556e7f53b
|
|
| BLAKE2b-256 |
248ef94beece8ccca460fe60506f67eff3e76e5f8b4e84fb7fc35b9fb2b7601a
|
Provenance
The following attestation bundles were made for ignite_ember-0.3.8.tar.gz:
Publisher:
release.yml on ignite-ember/ember__code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ignite_ember-0.3.8.tar.gz -
Subject digest:
d720449e96cdc04e583a7fb7535607046c5efbdee7b920f51135af10b69c7948 - Sigstore transparency entry: 1389238548
- Sigstore integration time:
-
Permalink:
ignite-ember/ember__code@d44f1e026dddf7955a987f0c58f3a44b237a0265 -
Branch / Tag:
refs/tags/v0.3.8 - Owner: https://github.com/ignite-ember
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d44f1e026dddf7955a987f0c58f3a44b237a0265 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ignite_ember-0.3.8-py3-none-any.whl.
File metadata
- Download URL: ignite_ember-0.3.8-py3-none-any.whl
- Upload date:
- Size: 323.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f6e6ebb7fa9dee80b2312c9a4d4ab9ab9dda2b71c1c61e9bfbb73e1a62e1c95
|
|
| MD5 |
4c8d979291f5b4d96c3f824f5cbbee3b
|
|
| BLAKE2b-256 |
3b2591c4c85d561540b34a29440a98d447cf8ba97c9bf6aa9a6dd391f529719f
|
Provenance
The following attestation bundles were made for ignite_ember-0.3.8-py3-none-any.whl:
Publisher:
release.yml on ignite-ember/ember__code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ignite_ember-0.3.8-py3-none-any.whl -
Subject digest:
3f6e6ebb7fa9dee80b2312c9a4d4ab9ab9dda2b71c1c61e9bfbb73e1a62e1c95 - Sigstore transparency entry: 1389238554
- Sigstore integration time:
-
Permalink:
ignite-ember/ember__code@d44f1e026dddf7955a987f0c58f3a44b237a0265 -
Branch / Tag:
refs/tags/v0.3.8 - Owner: https://github.com/ignite-ember
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d44f1e026dddf7955a987f0c58f3a44b237a0265 -
Trigger Event:
push
-
Statement type: