mirror of
https://github.com/katanemo/plano.git
synced 2026-06-08 14:55:14 +02:00
Spawn the local `claude` binary as a subprocess and expose it as an
Anthropic Messages-compatible provider. Hosted in brightstaff
(`CLAUDE_CLI_LISTEN_ADDR`), with session reuse, idle TTL, and watchdog.
User-facing surface is `model_providers: [{ model: claude-cli/* }]` —
the Python CLI auto-fills name/provider_interface/base_url/access_key
and the launcher (native + supervisord) enables the bridge listener
only when at least one claude-cli provider is present.
2 KiB
2 KiB
Claude Code CLI as a Plano provider
This demo wires the locally installed claude binary as a Plano
model_provider. The single line under model_providers:
model_providers:
- model: claude-cli/*
default: true
is enough to:
- Auto-fill
provider_interface: claude-cli,base_url: http://127.0.0.1:14001and a placeholderaccess_key(the CLI uses its own login keychain). - Start a localhost bridge inside
brightstaffthat spawnsclaude -p --output-format stream-json --input-format stream-jsonfor each conversation. - Expose every Claude Code model —
claude-cli/sonnet,claude-cli/opus,claude-cli/haiku, plus dated full ids — atGET /v1/models.
Running
# Make sure the CLI is logged in. You can use API krey billing or a paid Claude subscription.
claude auth login
# Start Plano in native mode.
planoai up demos/integrations/claude_cli/config.yaml
Then point any OpenAI- or Anthropic-style client at http://localhost:12000
and pick any claude-cli/... model. Plano routes the request through Envoy
to the brightstaff bridge, which asks the local claude binary to handle
it.
Optional overrides
Set these env vars before planoai up if you need to tweak the bridge:
| Env var | Default | Meaning |
|---|---|---|
CLAUDE_CLI_BIN |
claude |
Path to the CLI binary. |
CLAUDE_CLI_PERMISSION_MODE |
bypassPermissions |
--permission-mode flag value. |
CLAUDE_CLI_LISTEN_ADDR |
127.0.0.1:14001 |
Bridge listen address. |
CLAUDE_CLI_SESSION_TTL_SECS |
600 |
Idle TTL before a child is killed. |
CLAUDE_CLI_WATCHDOG_SECS |
120 |
Per-line watchdog inside one CLI turn. |
CLAUDE_CLI_MAX_SESSIONS |
64 |
Hard cap on concurrent CLI children. |