Control Plane for LLM Agents

Run agents like production, not like a demo.

Give your AI coding agents a safe place to work. Kiwi runs them in isolated sandboxes, keeps your secrets on your machine, streams every move live, and never loses a run.

Bring your own LLM — Anthropic, Codex, or Gemini · self-hosted · no credit card

$git clone https://github.com/runkiwi/kiwi

Built on a stack you already trust

  • Anthropic Claude
  • Go
  • Docker
  • GitHub
  • SQLite
  • Anthropic Claude
  • Go
  • Docker
  • GitHub
  • SQLite
  • Anthropic Claude
  • Go
  • Docker
  • GitHub
  • SQLite
Why Kiwi

Everything you need to actually trust an agent

Reviewed changes, secrets that stay home, contained runs, and nothing lost.

01

A second pair of eyes on every changeBring your own LLM

One agent writes the fix, another approves it. No blind auto-edits.

02

Your secrets stay yours

Credentials pulled from your machine only when needed — never written to the sandbox. Close your laptop; the run keeps going.

03

Runs that can’t run away

Isolated, network-locked sandboxes with hard cost caps. No runaway host — or bill.

04

Watch your agent think

Every plan, edit, and test — live, with token and cost counts. No black-box runs.

05

Never lose a run

Restarts resume from the last checkpoint, not from scratch. Retries never double-charge.

How it works

Submit, run, resume

From your terminal to a fixed codebase — in three moves.

1

Submit

Point the CLI at your repo, give it a goal. Kiwi takes it from there.

2

Run

A sandbox spins up. One agent fixes, another reviews — secrets pulled only when needed.

3

Watch & resume

Stream every step, review the diff, and never lose a run.

Preview of the live Actor–Critic timeline. The web console is a monitoring board today — task submission runs through the CLI.

Control Plane:ONLINE
Sandboxes:3 Active
Active Tunnels:2 / 3 Connected
task-3831RUNNING
demo-api (Actor–Critic)

Fix division by zero inside Divide()

Go • Docker sandbox • Claude
task-3832PAUSED
web-app (resumable)

Patch nil check in report exporter

Go • Docker sandbox • Claude
task-3833RUNNING
api-service (headless)

Add pagination to list endpoint

Go • Docker sandbox • Claude
SANDBOX: task-3831 (demo-api)RUNNING
Local CLIConnected
REVERSE TUNNEL
Docker SandboxActive Loop
Daemon Memory Cache:
GITHUB_TOKEN: cachedDATABASE_URL: emptyAWS_SECRET: empty
Safety Budget Cap:
$1.50 spent$10.00 Limit
Circuit Breaker:
STABLE (No loops)

Trigger Controls

Trigger system actions on the active sandbox.

Reverse Tunnel
Actor–Critic Loop
Safety & Security Systems
Quickstart

Start a run in a few commands

Run the self-hosted daemon, then submit a task from the CLI with your own Anthropic key. No credit card, no cloud account required.

Daemon host (self-hosted server)
# Spin up the distributed Control Plane locally
# (PostgreSQL, NATS JetStream, MinIO, API server, and LLMO)
docker-compose up -d

# Or deploy the enterprise BYOC Runner in your VPC
./kiwi-runner --saas-url wss://api.runkiwi.dev \
              --runner-token "your-org-token"
Local machine (developer CLI)
# Bring your own Anthropic key (encrypted at rest)
export ANTHROPIC_API_KEY="sk-ant-..."

# Submit a task to the Control Plane
./kiwi -server "http://localhost:8080" \
     -task "Fix division by zero in Divide()" \
     -file demo_project/math_utils.go \
     -test-cmd "go test ./demo_project/..."
Built-in security

Safe by default, from the very first run

  • Your secrets stay on your machine — pulled just-in-time over the reverse tunnel, cached only in the daemon’s memory for the run, and never written to the sandbox.
  • Every run is network-locked (--network=none), so a rogue agent can’t phone home or reach your host.
  • Your Anthropic key is encrypted at rest and only decrypted to make a call (AES-256-GCM).
  • Each org gets its own walled-off space, with per-org limits and an audit trail of every task.
  • Budget caps stop runaway spend before a job even starts.
Dashboard

Watch every run on one board

Follow each run's phase, spend, and secret cache across your isolated sandboxes in real time. The web console is a monitoring board today — task submission runs through the CLI.

https://dashboard.runkiwi.dev
Illustrative preview

Agent Runs

3 isolated sandboxes
PAUSED (awaiting tunnel)1
task-3829

Patch nil check in report exporter

Reverse tunnel offline — will resume from checkpoint
RUNNING (Actor–Critic)2
task-3831

Fix division by zero in Divide()

[test] go test ./demo_project/... (13/14 passing)
task-3830

Add pagination to list endpoint

[critic] Reviewing diff — $6.20 of $10.00 cap
RESOLVED1
task-3825

Fix divide by zero in AverageCalculation

Critic approved. Tests green, fix synced back.