Local MCP endpoint

http://127.0.0.1:47812/mcp

Start Hronaut once. OpenCode can disconnect, restart, or switch projects without owning the browser process. The endpoint listens on loopback rather than exposing a hosted browser.

The ownership difference

The browser belongs to the workspace, not one OpenCode run.

Persistent sessions are not unique to Hronaut. Choose it when you want a separate desktop browser with durable state, visible human control, and named profiles that remain available as coding-agent clients change.

Durable browser

Restart the agent, keep the session

The desktop application owns Chromium and its profile. Closing one OpenCode session does not intentionally close the browser or discard its local state.

Human control

See, pause, and take over

Watch browser actions, pause MCP before a sensitive step, sign in yourself, then resume the agent inside the same browser session.

Workspace isolation

Keep tasks out of Default

Ask OpenCode to create a named Hronaut workspace. Agent workspaces use separate persistent browser profiles and do not expose the human Default workspace through MCP.

Local boundary

Browser data stays on this device

Hronaut is a local Electron/Chromium application with a loopback MCP endpoint. It is not a hosted browser, proxy, CAPTCHA service, or multi-browser CI runner.

Copy the matching schema

Connect OpenCode to Hronaut.

OpenCode currently documents separate stable and V2 configuration shapes. Use the example that matches your installed OpenCode version. If Hronaut authentication is enabled, copy the generated token-aware configuration from Hronaut Home instead.

OpenCode stable

mcp.hronaut

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "hronaut": {
      "type": "remote",
      "url": "http://127.0.0.1:47812/mcp",
      "enabled": true,
      "oauth": false
    }
  }
}

OpenCode stable MCP documentation ↗

OpenCode V2

mcp.servers.hronaut

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "hronaut": {
        "type": "remote",
        "url": "http://127.0.0.1:47812/mcp",
        "oauth": false
      }
    }
  }
}

V2 connects configured servers unless disabled is true. OpenCode V2 MCP documentation ↗

Save globally in ~/.config/opencode/opencode.json, or place the same configuration in opencode.json at one project root. Hronaut uses a remote MCP entry because OpenCode connects to the already-running local Streamable HTTP server; “remote” here describes the transport shape, not an internet-hosted service.

Verify before using a login

Prove the connection in an isolated workspace.

  1. 1

    Check MCP status

    Start Hronaut, restart or refresh OpenCode, then run opencode mcp list. Hronaut should appear connected.

  2. 2

    Diagnose a failed connection

    Run opencode mcp debug hronaut, confirm Hronaut Home reports MCP online, and make sure the configured port matches the current endpoint.

  3. 3

    Create a clean first workspace

    Ask: “Create a Hronaut workspace named first-check, open https://example.com inside it, and tell me the page title and workspace ID. Do not use my Default workspace.”

  4. 4

    Confirm the observable result

    A visible first-check workspace opens Example Domain, and OpenCode reports its stable workspace ID.

OpenCode documents opencode mcp list as the command for listing configured MCP servers and their connection status. OpenCode MCP CLI reference ↗

Security boundary

Do not test first with your most sensitive profile.

A new Hronaut profile starts without MCP authentication for simple local setup. In that mode, another process running as your operating-system user could connect to the browser. Before using valuable signed-in sessions, enable Require MCP authentication in Hronaut, copy the regenerated OpenCode setup from Hronaut Home, and keep its owner-only token file out of chat, screenshots, issues, and source control.

Pause MCP before entering passwords, security keys, payment details, or other human-only information. A persistent authenticated browser carries the authority of every site signed in inside that profile.

Choose deliberately

Use the browser ownership model your task actually needs.

Choose Hronaut for a separate visible browser that should outlive one OpenCode task. If you want trusted code to drive selected tabs in an existing everyday Chromium browser, OpenCode's Browser Control uses an extension and local relay. If you need ephemeral multi-browser CI, use a Playwright-managed workflow instead.