A personal coding-agent harness in Go. One static binary. Instant to open.
Paused
Bring your own key
12providers
Anthropic
OpenAI
Google
Ollama
OpenRouter
- OpenCode Zen
Kimi Code
Kilo Code
NVIDIA
Groq
Together
DeepSeek
One pipeline, one config file. Route a different model to every stage.
Four agents turn a task into a branch
Planner, Coder, Tester, and Reviewer each start from a fresh context. They hand the next stage typed artifacts instead of one ever-growing conversation, so every step stays independently checkable.
How the pipeline worksTask inPlanner
TaskSpec
Planner
Reads the task and the current files, then defines the smallest safe plan.
- Context
- Fresh LLM session
- Handoff
- TaskSpec
Planner selected
Nothing lands until the tests pass
A run writes a fresh niki/<id> branch only when the diff is non-empty and the executed test suite passed. A failed suite blocks the branch unless you force the run, and committed history is never rewritten.
Read the security modelniki run "add a /health endpoint"
- Non-empty diffrequired
- Executed test suiterequired
- niki/<id> createdrequired
- Committed historynever rewritten
Branch niki/4f2a · 1 commit · main untouched
The run leaves receipts you can read
Every run writes changes.patch, report.md, and one artifacts/*.json per agent. Inspect them before you decide what belongs in your branch.
curl -fsSL https://raw.githubusercontent.com/RavaniRoshan/niki/master/scripts/install.sh | bashExplicit plan mode researches without executing. Approve the plan with niki run --plan <id>.
# Add a /health endpoint
## Smallest safe change
- register GET /health in the existing router
- reuse the db ping readiness already makes
- one test, asserting 200 and the body shape
Sample output. The real file ships with the run and stays with the branch.
Route a different model to every stage
Put a stronger reasoner on planning and review, a faster model on testing, or mix providers per stage. Niki is bring-your-own-key end to end.
See provider setup
[general]
max_revision_rounds = 3
spend_cap_usd = 5.0
[agents.planner]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
[agents.coder]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
[agents.tester]
provider = "openai"
model = "gpt-4o-mini"
[agents.reviewer]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
Performance contracts. No feelings, just measurements.
Every number is real, measured on host with the included PTY probe harness and hyperfine. NIKI boots to first frame 3.96x faster than Codex, consumes 39% less memory, and compiles to a binary 12.8x smaller.
Built-in tool suite. Zero fluff.
Seven core coding tools, each with explicit safety guarantees. No bloat, no framework sprawl, just what a coding agent needs.
Every run is auditable.
Three files stand between a finished run and your merge decision. No dashboards to trust, nothing inferred on a server you cannot read.
changes.patchThe exact diff
--- a/src/server.ts +++ b/src/server.ts @@ -41,6 +41,12 @@ +router.get('/health', async (_req, res) => { + const db = await ping(); + res.status(db ? 200 : 503).json({ ok: db }); +});A unified diff written from the completed run and bound to the branch when branch creation succeeds.
report.mdWhat happened, in order
- Planner3 steps
- Coder+12 -6
- Tester4 passed
- Reviewerapproved
A readable account of every stage, its verdict, and the reason the run stopped or continued.
artifacts/*.jsonPer-agent decisions
{ "agent": "reviewer", "decision": "approve", "revisions": 0, "blocking": true }One JSON file per agent recording what it decided and why, so a reviewer can argue with the call.
Changelog
- v0.11.0TUI redesign, Go rewrite, and platform hardening
- v0.8.0Agent-harness + runtime release
- v0.7.0Mega-plan execution
- v0.6.0Claude Code parity, interaction, trust, and ecosystem surface
What you can change
Pick the agents
Four named stages run by default, and specialist agents can be added behind risk gates. Explicit pipeline topologies are never rewritten.
Explore agents- Planner
TaskSpec - Coder
unified diff - Tester
test results - Reviewer
verdict
- Planner
Choose the sandbox
Podman or Docker for isolation, or a git worktree backend that needs no container runtime at all.
Explore integrations- PodmanDefault rootless container sandbox with no daemon.
- DockerContainer sandbox fallback. Docker writes through the project mount.
- worktreeGit worktree backend that needs no container runtime.
Set the guardrails
Spend caps, a single hysteresis budget across retries, and command deny lists, all in one config file.
Explore securityspend_cap_usdaborts the runmax_stepsaborts the runmax_wallclock_secsaborts the runcommand deny listfails closed
Niki is free software you can read end to end.
MIT licensed, no telemetry, your own provider keys. Every prompt, every gate, and every artifact is in a repository you can fork tonight.
Read the sourceRuns on your machine
- PodmanDefault rootless container sandbox with no daemon.
- DockerContainer sandbox fallback. Docker writes through the project mount.
- worktreeGit worktree backend that needs no container runtime.
Talks to 12 providers
Anthropic, OpenAI, Google, Ollama, OpenRouter, OpenCode Zen, Kimi Code, Kilo Code, NVIDIA, Groq, Together, DeepSeek.
Recent highlights
- PipelineHow the four agents hand offThe contract between each stage, and where a context boundary falls.
- ProvidersTwelve integrations, one configAnthropic, OpenAI, Google, Ollama, OpenRouter, OpenCode Zen, Kimi Code, Kilo Code, NVIDIA, Groq, Together, DeepSeek.
- SandboxPodman, Docker, or worktreeWhat each backend can and cannot reach, and how to pick one.
- ConfigurationThe full config fileEvery key, its default, and the value that changes behaviour.