Skip to content
niki

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 docs

providers · byok

a strong reasoner for Planner and Reviewer, a cheap model for the Tester — or everything local on Ollama
niki.toml — mix freely
[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.toml or env — <PROVIDER>_API_KEY, env wins
  • _BASE_URL / _MODEL env overrides for gateway routing
  • Any OpenAI- or Anthropic-compatible gateway via base_url
  • niki providers checks every configured provider
  • niki recommend suggests per-agent models from your own past spend
AnthropicOpenAIGoogleOllamaOpenRouterOpenCode ZenKimi CodeKiloCodeNVIDIAGroqTogetherDeepSeek

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 configuration

niki.toml — [mcp]
[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 automation
surface

Terminal

niki chat — rich TUI with live agent state, sessions, checkpoints and undo. niki run --tui for full-run streaming.

surface

IDE via ACP

niki acp runs an Agent Client Protocol server — drive the pipeline from Zed and other ACP-compatible editors.

surface

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.

Audit artifactsCLI reference

niki