Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
Agents for every team and models trained on your own data, inside your network. Ignite Ember hosts nothing. The base is free under Apache-2.0; paid modules from €8k a year, nothing metered.
BusinessGitHub @ignite-emberAvailability not checked yetOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
igni's backend, CLI and cloud layer
Translation pending
Loading the full README.
Read the full README ↗One spark ignites a team. An AI coding assistant built with Agno orchestration.
Inspired by Claude Code, igni 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.
Claude Code uses a single agent loop — powerful but monolithic. igni 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.
Head-to-head benchmark on a 12-case software-engineering suite, 5 runs per system, deterministic grading. See docs/BENCHMARKS.md for the full breakdown.
| igni (MiniMax-M2.7) + CodeIndex | Claude Code (Opus-4.7) | |
|---|---|---|
| Directly mergeable (✅) | 49 / 60 (82 %) | 31 / 60 (52 %) |
| Needs clarification (⚠) | 4 / 60 (7 %) | 22 / 60 (37 %) |
| Wrong target (❌) | 7 / 60 (12 %) | 7 / 60 (12 %) |
| Reproducibly correct cases (5/5 ✅) | 8 of 12 | 3 of 12 |
| Cost per run | ~$0.05 | $4.01 |
| Wall time mean | 2 331 s | 1 548 s |
igni wins by +18 ✅ trials at 1/80th the cost. The gap is concentrated in the ⚠ band — igni commits to a concrete answer where Claude Code stays in design-conversation mode. Both systems hit the same hard-wrong rate (12 %), so the win comes from converting partial/clarifying responses into directly-mergeable ones.
The architectural choices that drive the gap: (1) CodeIndex queried first, not files — a pre-built semantic + metadata index lets the agent locate reuse targets and conventions by typed filter or HyDE-style code-shaped query, instead of grep-walking the repo. (2) A mandatory "What already exists" preamble — agent must name the reuse target, the closest near-miss it rejected, and the conventions to match before writing any code. (3) A small, focused model with structured tools — MiniMax-M2.7 + index access matches Opus-4.7 quality at 1/80th the price.
| Feature | Claude Code | igni |
|---|---|---|
| Architecture | Single agent loop | Multi-agent teams (Agno) |
| Task routing | Manual sub-agent spawning | Automatic via Coordinate/Route modes |
| Code intelligence | Grep + file reads | Shell-first reads; CodeIndex semantic search as a licensed extension |
| Project knowledge | None | The Artifacts extension (licensed; its own Neo4j store), served through your igni server |
| Planning | Plan mode (read-only) | Agno reasoning + Tasks mode |
| IDE integration | MCP server (stdio) | None — igni ships the desktop app, the web client and the CLI; MCP 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 | Whatever your igni server routes to, or your own (model-agnostic) |
brew install ignite-ember/tap/igni-core # or: pip install igni-core (the old name ignite-ember works for both)
cd your-project
igni -m "In one sentence, what does this project do?" # `ignite-ember` if brew installed it
igni is the command; ignite-ember is kept as an alias so existing
shell aliases and scripts keep working. Both are the same entry point —
pip installs both names, the Homebrew formula symlinks one, so a brew
install gives you ignite-ember and a pip install gives you both.
On the command line it runs one task and exits (-m, or -p for a
pipe); there is no terminal chat UI any more — run it bare and it says so.
What the published package holds today. igni-core on PyPI is
v1.0.4, and it is this repository's build: the igni_core module,
the igni command and the decisions service. The old name installs the
same thing — pip install ignite-ember resolves to igni-core==1.0.4
through the alias (packages/ignite-ember/ — metadata, and a dependency
on igni-core at the same version), and the Homebrew formula installs
igni-core as well. The command above works either way. To work on it
instead of installing it:
git clone https://github.com/ignite-ember/igni-core.git
cd igni-core
uv venv && uv pip install -e ".[dev]"
source .venv/bin/activate # puts `igni` on your PATH
The interactive chat is the desktop app and the web client. A headless run cannot ask before it runs a command, so decide up front what it may do — see A headless run cannot ask you anything.
To point it at your own igni server, set api_url in your user config,
~/.igni/config.yaml — not a project's .igni/config.yaml or
config.local.yaml, which may not name a server and are ignored for it,
with a warning — and run igni login (or igni login --token-stdin with a
token). That writes ~/.igni/credentials.json, which igni -m and the desktop
app both use. /login is not a shell subcommand: igni /login answers
Error: No such command.
# ~/.igni/config.yaml
api_url: https://igni-api.acme.example
# Only when the portal (the sign-in page) is not on the API's origin,
# e.g. the API on :7777 and the portal on :3000:
portal_url: https://igni.acme.example
This is the beginning of the README. Read the rest at the original. Read the full README ↗