Claude
claudeAnthropic's Claude Code CLI. Spawned through your default login shell with a fallback that drops to a live prompt when the CLI exits.
npm i -g @anthropic-ai/claude-codeWhich AI CLIs Kadro ADE knows about, how it decides they're installed, and where authentication actually happens. Six providers in the registry today: three you can spawn panes from, three Kadro recognises on PATH but does not yet launch.
The Settings → Providers panel reads from one source — a Rust probe_provider Tauri command that does a plain stat() on the binary name. No --version fork. No reading of auth files. No network. Each card answers a single question: is this binary on PATH right now?
Probes are deduplicated in flight, and the refresh button on each card re-runs the probe for that one provider. The card’s hairline top border is the provider’s accent color (driven by --color-model-* tokens for Claude, Codex, and Gemini, or static hex values for the detection-only entries).
When a CLI is missing the card collapses into an install pill: the canonical install command (copyable) and a docs link. When the CLI is present the card shows nothing else — sign-in, model selection, and any API keys live inside the spawned terminal, not in Kadro’s settings surface.
These three providers can be selected from the creation flow and from the provider picker that opens whenever you create a new pane ( ⌘T) or split with picker ( ⌘⌥D). The picker remembers the last provider you used per workspace and preselects it on next open.
claudeAnthropic's Claude Code CLI. Spawned through your default login shell with a fallback that drops to a live prompt when the CLI exits.
npm i -g @anthropic-ai/claude-codecodexOpenAI Codex CLI. Identical shell wrapping to Claude — when the agent exits, the pane lands on an interactive login shell instead of a dead PTY.
npm i -g @openai/codexgeminiGoogle's Gemini CLI. Same launch contract as the other agent providers; tui-replace rendering keeps full-screen TUI output usable.
npm i -g @google/gemini-cliThe registry distinguishes creatable providers from detection-only ones via a creatable flag. The entries below are visible in Settings → Providers (so you can confirm install + grab the install command) but they do not appear in the creation flow or provider picker yet.
opencodeDetected on PATH and shown in Settings, but not yet available as a spawnable provider in the creation flow.
curl -fsSL https://opencode.ai/install | bashcursorCursor's headless agent CLI (binary name: cursor-agent). Detection-only — the Rust probe remaps id → real binary.
curl -fsSL https://cursor.com/install | bashcopilotGitHub Copilot CLI. Detection-only at the moment; pane creation is not wired.
npm i -g @github/copilotWhen you create a Claude pane, Kadro spawns claude through your default login shell. The CLI’s own auth flow runs inside the PTY — same way it would in iTerm or Terminal.app. Same for Codex and Gemini. Whatever credentials those tools store on disk, they store on their own.
Kadro’s own auth (Settings → Account) is a separate concern: a custom PKCE session against kadrotools.ai that verifies Pro subscription access. It is not used by any of the providers above.
One Claude-specific knob exists for manual testing: setting localStorage.kadro.claudeCodeNoFlicker to "0" or "1" before spawning a Claude pane forwards CLAUDE_CODE_NO_FLICKER into the child env. Kadro does not set this by default.
The picker appears inline whenever a pane is being created or split with picker. It is a shadcn dialog wrapping the cmdk Command primitive — keyboard-first navigation, escape to cancel, click-outside to dismiss.
The picker lists listCreatableProviders() only. The internal shell provider exists for splits that inherit raw-terminal panes but is intentionally absent from the picker.
Last-used provider is recorded per workspace and used to preselect on next open, so a workspace you usually run Codex in stays Codex-first.
Install the agent CLIs you actually use.
Kadro detects them on PATH and gets out of the way. Sign-in stays inside each CLI.