Reads the task and your repo, produces a written implementation spec — files, steps, acceptance criteria.
One sentence in,
a verified pull request out.
Describe a task. Niki plans, codes, tests and reviews it across four independent agents — then hands you a reviewable branch with the full decision trail.
- Apache-2.0 open source
- Rust single binary
- BYOK no telemetry
Watch one sentence become a reviewable branch.
Niki is the open-source multi-agent coding pipeline. No shared conversation, no confirmation bias: each stage is an independent agent that exchanges typed artifacts with the next.
- You write the task —
niki run "…" - Planner, Coder, Tester and Reviewer each do their job
- You review the finished
niki/<id>branch
$ niki run "Add a /health endpoint" --project ./my-app [Planner] done — spec: 1 file to modify[Coder] done — changed 1 file · index.js [modified][Tester] done — 8/8 tests passed[Reviewer]done — approved · correctness 10/10 · quality 8/10 [NIKI] task complete — branch: niki/6d281d6d · verdict: approvedreport: artifacts/report.md · patch: artifacts/changes.patch
// real output from niki 0.7.0 — smoke-test task
the multi-agent pipeline
live run · typed artifacts, not chatImplements the plan inside a hermetic sandbox copy of your project. Never touches your working tree.
Runs the project's own test suite — plus generated regression tests — in the same isolated sandbox.
Audits the diff for correctness and quality. Bounces work back to the Coder until it passes.
A reviewable branch with a real commit, the full patch, a run report and per-agent artifacts.
why niki
Multi-agent, not monolithic
Planning, coding, testing and review are separate agents with their own prompts, models and context. Each does one job well.
Hermetic by default
All work happens in a rootless Podman or Docker sandbox against a copy of your repo. Network egress blocked unless you allow it.
Output is a git branch
You get niki/<id> with a real commit, a diff and artifacts — reviewable like any human PR. Nothing lands on main until you say so.
Reviewer-driven revisions
The Reviewer bounces work back to the Coder until it's approved — up to max_revision_rounds. You review a finished result.
Fully auditable
report.md, changes.patch and per-agent JSON artifacts capture what every agent decided, and why.
BYOK & provider-mixing
Bring your own keys. Give each agent a different provider — a strong reasoner for Planner, a cheap model for Tester.
Proof, not promises.
Every run leaves behind the entire decision trail: a reviewable branch, a unified diff, a human-readable report and per-agent JSON artifacts. Failing test suites block the branch unless you explicitly override.
- Reviewable
niki/<id>branch with a real commit changes.patch— the unified diff, inspectable anywherereport.md— human-readable run report with verdictartifacts/*.json— what each agent decided, and whyniki audit— consolidated compliance bundle

hermetic by default
Security modelSandboxed. Isolated. Auditable.
Agents work inside a rootless container with dropped capabilities and a read-only root filesystem. Egress is blocked unless you allow it. Your working tree is never touched mid-run.
- Rootless Podman or Docker, CapDrop ALL, read-only rootfs
- Network egress blocked by default — allowlist to open it
- Command deny-lists:
rm -rf /andcurl | shblocked by policy - Hard-enforced spend cap aborts before a branch is created
- Fail-closed permission modes for headless CI
$ niki doctorinstall ok niki 0.7.0config ok niki.toml foundproviders ok anthropic, ollamasandbox ok podman · niki-sandbox:24.04security ok egress blocked · capdrop all✓ ready to run
[sandbox]
network_disabled = true
cap_drop = "ALL"
rootfs = "read-only"
deny = ["rm -rf /", "curl | sh"]byok · any provider, per agent
All integrationsNiki ships no proxy and phones home to no one. Point each agent at the provider that fits its job — or run everything on a local Ollama for $0.00.
[agents.planner]
provider = "anthropic"
model = "claude-sonnet-4"
[agents.coder]
provider = "anthropic"
model = "claude-sonnet-4"
[agents.tester]
provider = "openai"
model = "gpt-4o-mini" # cheap, test-gen is easy
[agents.reviewer]
provider = "anthropic"
model = "claude-sonnet-4"terminal-native · ide-ready
Interactive TUI
niki chat streams agent state live — a unified status grammar, no flicker, reduced-motion aware.
Headless CI
niki run --bare --output-format json gives a stable, pipe-pure JSON envelope. OTLP trace export included.
ACP / IDE
niki acp speaks the Agent Client Protocol — drive Niki from Zed and other ACP-compatible editors.
verified output, honest numbers
4 agents
Independent Planner → Coder → Tester → Reviewer
1 branch
Reviewable niki/<id> output per run
0 telemetry
No hosted proxy, no phoning home, BYOK
$0.00
On local Ollama; ~a cent on frontier models
Free software, honest claims.
Apache-2.0, built in Rust, one binary. Every marketing claim is mapped to the code that backs it — and corrected when it doesn't. No telemetry, no hosted middleman, no training on your code.
$0. Pay your provider, not us.
Niki is free open-source software. You bring your own keys — a real task costs about a cent on a frontier model, or nothing on local Ollama. Spend caps keep it bounded.
Delegate the task. Review the branch.
First verified branch in under five minutes — no container runtime required to start.
curl -fsSL https://raw.githubusercontent.com/RavaniRoshan/niki/master/scripts/install.sh | bash
niki init --interactive
niki run "Add a /health endpoint" --backend worktree