Skip to content
Kadro
03Docs · Settings

Kadro Settings — every tab

Last updated · 2026-05-16

Settings opens from the gear icon in the sidebar footer and replaces the main content area while leaving the sidebar visible. Six tabs live in a left rail. The order is fixed in code: General, Account, Appearance, Providers, Keybindings, Privacy. Esc closes the view unless the focus is inside an editable field.

For the multi-agent cockpit, see /docs/teams. For the docs landing, install steps, and roadmap, see /docs.

General

App-wide defaults. Today this tab hosts one control:

Default shell

A select populated by the get_available_shells Tauri command, which parses /etc/shellsand filters it against a Kadro allowlist on the Rust side. The empty option means “use the system default” — the row below resolves that fallback by calling detect_user_shell, so the hint never lies about what new workspaces will actually spawn under.

A Custom path…option reveals a free-text input for shells the system doesn’t advertise (for example, /opt/homebrew/bin/fish). The override is stored in the preferences store and persisted through the Tauri settings file.

This setting only affects new workspaces. Existing workspaces keep the shell they were created with.

Account

Two cards, both backed by useAuthStore.

Status card

  • Status icon and label resolve against the live auth state: Checking account, Signed in, Signed out, Syncing account, or Account error.
  • Account email and last-sync timestamp surface beneath the label.
  • Two actions: Sync refreshes entitlements from the website (via the desktop bridge), and Sign out clears the local session.

Plan card

  • Shows the current Pro subscription state from the most recent entitlement sync.
  • A Trial pill appears when the entitlement status is trialing; an Activepill appears for fully active subscriptions. Trials show a “Trial ends” subline; active subs show a “Renews” subline.
  • With no usable entitlement, the card falls back to Free plan. A past-due subscription adds a warning pointing at the billing portal on kadrotools.ai.

Appearance

Seven app themes in a 4-column grid, each rendered as a portrait mini-preview painted in its own candidate colors (chrome strip, active-pane stripe, mini terminal). Selecting a card writes the choice to the preferences store. A larger live preview at the bottom mirrors the active theme at full fidelity.

The lineup is differentiated by ink undertone, not accent. Six themes share deep-dark surfaces; one (Pewter) is the lifted outlier.

  • Slate — cool gray ink, muted steel accent. The default; restrained and easy on the eyes.
  • Graphite — true neutral ink, a pure achromatic axis with a paper-white accent. Vercel/Linear-adjacent.
  • Onyx — paper on void: the deepest black surface, the crispest white ink, a muted steel-ice accent. The high-contrast theme.
  • Pewter — lifted warm gray; the only theme off the deep-dark floor. Warm cream ink, muted clay accent. Claude/Codex-adjacent.
  • Tungsten — warm-neutral ink: warmth without color. Subtle chroma in surfaces and text, no bronze, no parchment.
  • Mist — sky-tinted ink with a softer sky-blue accent. The cool theme that commits — distinctly blue, not gray.
  • Harbor — navy ink, desaturated cyan accent. The deepest base; high contrast in a low-light register.

Each theme owns more than 40 semantic tokens (surfaces, text, border and accent ramps, state pastels, semantic fills) and a full xtermITheme. Legacy sand and sage identifiers migrate automatically to Tungsten and Onyx on load.

Providers

A read-only “is this CLI on my PATH?” surface. Each provider in the detectable registry renders as one card answering a single question: is the binary installed? The Rust probe does a stat() only — no --version shellouts, no auth-file reads — and dedupes in-flight probes.

When a CLI is missing, the card expands with the canonical install command (copyable, with a docs link). Sign-in, model selection, and API keys all happen inside the spawned terminal pane via the CLI’s own OAuth flow — never in this tab.

For the full provider list (Claude Code, Codex CLI, Gemini CLI, raw shell), see /docs.

Keybindings

A table of every registered command, grouped by scope (Workspace, Pane, Global) and sorted by label inside each group. Each row shows the command label, an editable binding input, and a reset button. The default keybinding appears as the placeholder when no override is set, so you can see what you’d be overriding before typing.

Overrides land in the keybindings store (persisted through Tauri settings). Resolution happens at dispatch time — user overrides merge with the registered defaults. Conflict detection runs across the resolved table: any two commands mapped to the same canonical key both get an amber rail.

On macOS, mod in a default binding resolves to ; on other platforms, to Ctrl.

Privacy

One toggle: Send crash and error diagnostics. It is off by default, and the default is consent-gated — a separate Tauri store file (.telemetry.json) holds both the boolean and a consented_at timestamp. The SDK treats telemetry as disabled until that timestamp exists, regardless of what the boolean says. Errors before you opt in never leave the machine.

When the toggle is on, Kadro sends:

  • Crash stack traces.
  • The app version.
  • Your OS version and locale.
  • A generated install ID.

Kadro never sends the contents of your code, files, prompts, terminal output, API keys, or agent outputs. Network-flakiness events and events tagged intentional are dropped before send; Authorization headers are scrubbed.

The renderer-side change is live — toggling off immediately closes the Sentry client; toggling on re-initializes it with the current consent. The Rust-side reads consent once at startup, so panics in the native layer keep going until the next launch (acceptable for v1).

Sentry org kadrotools, project kadro-ade, EU data residency (Frankfurt), 30-day retention, free tier. See the Privacy Policy for the full disclosure.

See also

  • /docs/teams — the multi-agent cockpit.
  • /docs — install, workspaces, providers, roadmap.