Skip to content
Niki

A personal coding-agent harness in Go. One static binary. Instant to open.

Go 1.24+MIT LicenseStartup 5.9msBinary 19MBCGO Disabled

Paused

Bring your own key

12providers

  • AnthropicAnthropic
  • OpenAIOpenAI
  • GoogleGoogle
  • OllamaOllama
  • OpenRouterOpenRouter
  • OpenCode Zen
  • Kimi CodeKimi Code
  • Kilo CodeKilo Code
  • NVIDIANVIDIA
  • GroqGroq
  • TogetherTogether
  • DeepSeekDeepSeek

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 works
niki run

Task 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 model
niki status

niki 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 | bash

Read the CLI reference
niki run
plan.mdPlan mode

Explicit 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
niki.tomlreading config

[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.

ToolVersionLanguage--versionTTFPIdle MemoryBinary
Codex CLI0.152.1Rust20.0 ms23.4 ms21.7 MB244 MB
Google agy1.3.1Go19.3 ms778.5 ms225.5 MB202 MB
Kimi Code2.1.1TS/Node188.4 ms1253.7 ms391.6 MB75 MB
NIKI0.11.0Go6.8 ms5.9 ms13.1 MB19 MB

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.

read_fileRead file contents with line rangesBounded size limits, path sanitization
write_fileAtomic write file replacementTemporary file swap, prevents corruption
edit_fileTargeted string replacementRequires exact match, rejects ambiguous edits
apply_patchUnified diff patch applicatorFuzzed parser (>400k iterations with 0 panics)
globFind files matching wildcard patternsBounded directory walking, ignore awareness
grepFast regex content searchRead-only concurrency, skip binary files
shellExecute shell commands in workspaceBubblewrap isolation, network denial, dropped caps

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.patch

    The 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.md

    What 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/*.json

    Per-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

  1. v0.11.0TUI redesign, Go rewrite, and platform hardening
  2. v0.8.0Agent-harness + runtime release
  3. v0.7.0Mega-plan execution
  4. v0.6.0Claude Code parity, interaction, trust, and ecosystem surface
See what's new in Niki

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
    1. PlannerTaskSpec
    2. Coderunified diff
    3. Testertest results
    4. Reviewerverdict
  • 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 security
    • spend_cap_usdaborts the run
    • max_stepsaborts the run
    • max_wallclock_secsaborts the run
    • command 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 source

Runs 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.

Rule of ProofWorks means a real test or measurement ran and its output was verified.
Zero Proprietary CodeNo leaked, decompiled, or reconstructed proprietary source was ever accessed or copied.
Small and BoringDependencies pass strict admission checks. Zero framework sprawl.

Recent highlights

Read the documentation

One sentence in. A reviewable branch out.

Download Niki