Bring your own everything.
Twelve LLM providers, any OpenAI/Anthropic-compatible gateway, MCP servers, IDE clients via ACP, and OTLP observability — wired into the same pipeline without lock-in.
providers · byok
a strong reasoner for Planner and Reviewer, a cheap model for the Tester — or everything local on Ollama[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" # cheap model for test generation
[agents.reviewer]
provider = "anthropic"
model = "claude-sonnet-4-20250514"Keys & overrides
- Keys from
niki.tomlor env —<PROVIDER>_API_KEY, env wins _BASE_URL/_MODELenv overrides for gateway routing- Any OpenAI- or Anthropic-compatible gateway via
base_url niki providerschecks every configured providerniki recommendsuggests per-agent models from your own past spend
Model Context Protocol servers.
Wire MCP servers into agent context through [mcp] — both stdio and Streamable-HTTP remote transports (JSON and SSE, with session affinity). Tools from your MCP servers join the same permission-gated runtime as Niki's baseline tools.
[mcp.servers.search]
type = "streamable-http"
url = "https://mcp.example.com/mcp"
enabled = true
[mcp.servers.repo-tools]
type = "stdio"
command = "npx"
args = ["-y", "@example/repo-tools"]editors & ci
one pipeline, three surfaces — interactive, in-editor, and headless automationTerminal
niki chat — rich TUI with live agent state, sessions, checkpoints and undo. niki run --tui for full-run streaming.
IDE via ACP
niki acp runs an Agent Client Protocol server — drive the pipeline from Zed and other ACP-compatible editors.
CI / headless
niki run --bare --output-format json — a stable envelope with pipe-pure stdout, fail-closed permissions and OTLP trace export (--otel-endpoint).
Traces without a vendor.
Every run writes trace.jsonl — an honestly derived span timeline, no instrumentation theater. Export spans over OTLP to any compatible backend, or keep everything local.