Skip to content

Desktop launcher: per-vendor model selection from the server catalog #900

Closed

Description

@realtonyyoung

Problem

When launching a hosted agent in the web UI, most harnesses offer a full selectable list of models. The desktop launcher only offers a curated model list for Claude and Codex; every other vendor shows just "Default" + free-text. Bring the desktop launcher to parity with the web UI's model list.

Findings

  • Desktop launcher already has a model picker (the Agent chip flyout, src/Capacitor.App/Views/LauncherPaneView.axaml.cs RebuildRows), fed by a hardcoded list in src/Capacitor.App/Services/HostedHarnessCatalog.cs (only claude + codex populated).
  • The web UI feeds its dropdown from the server-side models.dev catalog. That catalog is already exposed to remote clients over REST: GET /api/agents/model-options (auth-gated), returning { vendor: [{ value, label }] }.
  • The desktop app already has an authenticated HTTP read path: src/Capacitor.App/Services/AuthenticatedServerReads.cs (used by RemoteAgentsService). No kcap-server change is required.
  • Note: the web UI launcher has no context-window-size selector — context window is a display-only occupancy metric, not a launch input. So this is model selection only (effort already exists as its own chip).

Proposed change

Add an authenticated model-catalog client that GETs /api/agents/model-options, cache it in memory, and feed it into the launcher model flyout for all vendors (keeping Default / Custom… rows). Fall back to the existing curated list when offline / not yet loaded.

Acceptance

  • Opening the launcher model picker for any vendor with server-side models shows the same list as the web UI.
  • Offline or signed-out falls back gracefully to the curated/default list.

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