Skip to content

Desktop onboarding hides the bundled Buzz Agent harness — no visible local/no-cloud path at first run #3173

Description

@bitcoinaudio

Summary

Desktop onboarding's agent setup step shows exactly two harness cards — Claude Code and Codex (both cloud). Buzz Agent, which ships inside the desktop app and can run fully local (e.g. Ollama via the OpenAI-compatible provider), is hidden. Users who don't want cloud harnesses have no visible path: the setup step implies installing a cloud CLI is required, and there is no way to dismiss or toggle off the Claude/Codex cards.

Where

desktop/src/features/onboarding/ui/onboardingRuntimeSelection.ts:

export const ONBOARDING_RUNTIME_ORDER = ["claude", "codex"];

Both the setup step (SetupStep) and the onboarding defaults page (DefaultConfigStep) filter through this list, so Buzz Agent is invisible for the entire onboarding flow even though it is always available (authStatus: not_applicable, no install step).

History

#2233 ("Hide bundled harnesses from onboarding") made this a deliberate, centralized seam: "centralize onboarding harness visibility so hidden harnesses can be restored later in one place." This is the case to restore Buzz Agent through that seam — not to relitigate the cloud-first layout.

Proposal

  • Add "buzz-agent" to ONBOARDING_RUNTIME_ORDER (third position, preserving the existing cloud-first order). Its card renders the existing READY state — no install or sign-in action applies.
  • Keep Goose hidden (it requires an external CLI install, same as Claude/Codex).
  • This also fixes the "can't proceed without cloud" impression: Buzz Agent is always ready, so readyRuntimeIds is non-empty and the defaults page offers a fully local harness from the start.
  • Update the two unit tests that pin the exclusion and the e2e assertion (onboarding-agent-defaults.spec.ts) that expects the Buzz Agent card to have count 0.

Pairs naturally with #3145 / #3152 (local models via Ollama): together they make "install Buzz → use agents with zero cloud accounts" a coherent first-run story.

I have a PR ready implementing this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions