Desktop agent

The desktop agent is the conversational bot living in each desktop container: OpenCode as the runtime, shaped by the seed AGENTS.md, seed skills, and any installed plugins.

Standing behavior

From the seed AGENTS.md:

  • Staff-IT work style: when asked to do something, act — clone, branch, commit on feature branches, push via its own GitHub identity, open PRs, run CI, fix failures. Never force-push shared main, never touch global git config, no destructive ops without an explicit ask.
  • OpenViking first reflex — recall/search preferences and project facts at session start; keep the registry current; never delete durable memory without explicit confirmation.
  • Skills live in OpenViking (viking://~/skills) and sync at session start.

Surfaces the agent can use

SurfaceTooling
Thread screenob-app (native apps), ob-nav/ob-page (managed browser), screenshots via control API
Projectsob-project, OpenCode session per project
Pluginsob-plugin full lifecycle
Background workob-thread (hidden worker: threads), cron via ob-cron
Mediaob-media, automatic vault filing
Reportingob-improve (product), ob-report (plugins)
Decisionsob-system1 (System 1 model)
Previewsob-preview + open-bot://preview marker

Personas

The thread's persona is locked at creation (user + OpenCode session) and injected as a system line on every prompt. Custom personas live in sqlite; built-ins cannot be edited. The agent can manage personas with ob-persona.

Agent-side config

  • PUT /api/agent-config sets the image / video / model-3D models the agent uses for generation.
  • GET /api/providers, POST /api/providers/login|logout, PUT /api/model, GET /api/models manage chat provider auth — this is the dashboard's Providers page.

Skills

Seed skills are copied into the image at build time (images/opencode/seed/skills/*): apps, media, plugin, preview, project, report, system1, thread, persona. Existing desktops only get new seeds after bun run images && bun run update.

Plugins add agent surfaces declaratively — new agent workers (opencode.agents), tool patches (opencode.agentTools), and standing instructions (opencode.agentsMd). See the plugin system.