# uvwt/agentdock architecture

> Architecture diagram of the GitHub repository uvwt/agentdock, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/uvwt/agentdock
- Repository: https://github.com/uvwt/agentdock
- Video tour (about a minute): https://gitdiagram.com/uvwt/agentdock/video

## Overview

AgentDock is a cross-platform tool runtime, not a chat or inference product. An AI client connects through MCP, whose server delegates tool calls to the runtime and its capability services; results return through MCP. The major branches cover controlled machine operations, browser and ACP automation, extensibility and resumable tasks, and coordination across devices. Desktop applications and the CLI configure and manage the runtime. The workflow follows README documentation and sampled MCP/server code; unsampled subsystem links are included only where documented, so their internal call wiring is not asserted.

Main entry points: [`internal/runtimeapi/dispatch.go`](https://github.com/uvwt/agentdock/blob/main/internal/runtimeapi/dispatch.go) (Tool Dispatch), [`internal/app/runtime.go`](https://github.com/uvwt/agentdock/blob/main/internal/app/runtime.go) (Tool Runtime), [`internal/tool/browser/service.go`](https://github.com/uvwt/agentdock/blob/main/internal/tool/browser/service.go) (Browser Tools), [`internal/mcp/server.go`](https://github.com/uvwt/agentdock/blob/main/internal/mcp/server.go) (MCP Server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_connection["Connection and Runtime"]
  node_mcp["MCP Server<br/>[server.go]"]
  node_http["HTTP API<br/>[server.go]"]
  node_runtime["Tool Runtime<br/>[runtime.go]"]
  node_dispatch["Tool Dispatch<br/>[dispatch.go]"]
end

subgraph group_machine["Machine Operations"]
  node_file["File Tools<br/>[service.go]"]
  node_command["Command Tools<br/>[service.go]"]
  node_workspace["Workspace Context<br/>[workspace.go]"]
  node_filesystem["Host Filesystem"]
  node_host["Host Processes"]
end

subgraph group_automation["Automation"]
  node_browser["Browser Tools<br/>[service.go]"]
  node_browserstate[("Browser Sessions")]
  node_acp["ACP Sessions<br/>[manager.go]"]
  node_acpstore[("ACP Session Store<br/>[store.go]")]
end

subgraph group_extension["Extensions and Tasks"]
  node_skill["Skill Tools<br/>[service.go]"]
  node_skillstate["Skill Management<br/>[install.go]"]
  node_mcpclient["Dynamic MCP<br/>[manager.go]"]
  node_oauthclient["MCP OAuth<br/>[manager.go]"]
  node_task["Task Tools<br/>[service.go]"]
  node_taskstate[("Task State<br/>[store.go]")]
  node_nexus["Nexus Bridge<br/>[client.go]"]
end

subgraph group_management["Runtime Management"]
  node_desktop["Desktop Controls"]
  node_cli["CLI<br/>[main.go]"]
  node_installer["Installer<br/>[engine.go]"]
end

node_client(("AI Client"))
node_remote(("Remote AgentDock"))

node_client -->|"calls tools"| node_mcp
node_mcp -->|"dispatches calls"| node_runtime
node_http -->|"serves MCP"| node_mcp
node_runtime -->|"dispatches tools"| node_dispatch
node_dispatch -->|"invokes"| node_file
node_dispatch -->|"invokes"| node_command
node_dispatch -->|"invokes"| node_browser
node_dispatch -->|"invokes"| node_acp
node_dispatch -->|"invokes"| node_skill
node_dispatch -->|"invokes"| node_task
node_file -->|"reads and writes"| node_filesystem
node_command -->|"runs commands"| node_host
node_runtime -->|"builds context"| node_workspace
node_browser -->|"manages sessions"| node_browserstate
node_browser -->|"automates browser"| node_host
node_acp -->|"persists sessions"| node_acpstore
node_skill -->|"manages skills"| node_skillstate
node_runtime -.->|"uses dynamic servers"| node_mcpclient
node_mcpclient -.->|"starts authorization"| node_oauthclient
node_task -->|"persists tasks"| node_taskstate
node_nexus -.->|"coordinates devices"| node_remote
node_desktop -->|"controls service"| node_runtime
node_cli -->|"starts service"| node_runtime
node_cli -->|"runs install"| node_installer

click node_mcp "https://github.com/uvwt/agentdock/blob/main/internal/mcp/server.go"
click node_http "https://github.com/uvwt/agentdock/blob/main/internal/httpx/server.go"
click node_runtime "https://github.com/uvwt/agentdock/blob/main/internal/app/runtime.go"
click node_dispatch "https://github.com/uvwt/agentdock/blob/main/internal/runtimeapi/dispatch.go"
click node_file "https://github.com/uvwt/agentdock/blob/main/internal/tool/file/service.go"
click node_command "https://github.com/uvwt/agentdock/blob/main/internal/tool/command/service.go"
click node_workspace "https://github.com/uvwt/agentdock/blob/main/internal/workspace/workspace.go"
click node_browser "https://github.com/uvwt/agentdock/blob/main/internal/tool/browser/service.go"
click node_browserstate "https://github.com/uvwt/agentdock/blob/main/internal/tool/browser/service_sessions.go"
click node_acp "https://github.com/uvwt/agentdock/blob/main/internal/acp/manager.go"
click node_acpstore "https://github.com/uvwt/agentdock/blob/main/internal/acp/store.go"
click node_skill "https://github.com/uvwt/agentdock/blob/main/internal/tool/skill/service.go"
click node_skillstate "https://github.com/uvwt/agentdock/blob/main/internal/skill/install.go"
click node_mcpclient "https://github.com/uvwt/agentdock/blob/main/internal/mcp/client/manager.go"
click node_oauthclient "https://github.com/uvwt/agentdock/blob/main/internal/mcp/oauthclient/manager.go"
click node_task "https://github.com/uvwt/agentdock/blob/main/internal/tool/task/service.go"
click node_taskstate "https://github.com/uvwt/agentdock/blob/main/internal/taskstate/store.go"
click node_nexus "https://github.com/uvwt/agentdock/blob/main/internal/nexusbridge/client.go"
click node_desktop "https://github.com/uvwt/agentdock/blob/main/desktop/macos/AgentDockApp/Sources/ServiceController.swift"
click node_cli "https://github.com/uvwt/agentdock/blob/main/cmd/agentdock/main.go"
click node_installer "https://github.com/uvwt/agentdock/blob/main/internal/installer/engine.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mcp,node_http,node_runtime,node_dispatch,node_client toneBlue
class node_file,node_command,node_workspace,node_filesystem,node_host toneAmber
class node_browser,node_browserstate,node_acp,node_acpstore toneMint
class node_skill,node_skillstate,node_mcpclient,node_oauthclient,node_task,node_taskstate,node_nexus toneRose
class node_desktop,node_cli,node_installer,node_remote toneIndigo
```

## Components

### Connection and Runtime

- [MCP Server](https://github.com/uvwt/agentdock/blob/main/internal/mcp/server.go): `internal/mcp/server.go`
- [HTTP API](https://github.com/uvwt/agentdock/blob/main/internal/httpx/server.go): `internal/httpx/server.go`
- [Tool Runtime](https://github.com/uvwt/agentdock/blob/main/internal/app/runtime.go): `internal/app/runtime.go`
- [Tool Dispatch](https://github.com/uvwt/agentdock/blob/main/internal/runtimeapi/dispatch.go): `internal/runtimeapi/dispatch.go`

### Machine Operations

- [File Tools](https://github.com/uvwt/agentdock/blob/main/internal/tool/file/service.go): `internal/tool/file/service.go`
- [Command Tools](https://github.com/uvwt/agentdock/blob/main/internal/tool/command/service.go): `internal/tool/command/service.go`
- [Workspace Context](https://github.com/uvwt/agentdock/blob/main/internal/workspace/workspace.go): `internal/workspace/workspace.go`
- **Host Filesystem**
- **Host Processes**

### Automation

- [Browser Tools](https://github.com/uvwt/agentdock/blob/main/internal/tool/browser/service.go): `internal/tool/browser/service.go`
- [Browser Sessions](https://github.com/uvwt/agentdock/blob/main/internal/tool/browser/service_sessions.go): `internal/tool/browser/service_sessions.go`
- [ACP Sessions](https://github.com/uvwt/agentdock/blob/main/internal/acp/manager.go): `internal/acp/manager.go`
- [ACP Session Store](https://github.com/uvwt/agentdock/blob/main/internal/acp/store.go): `internal/acp/store.go`

### Extensions and Tasks

- [Skill Tools](https://github.com/uvwt/agentdock/blob/main/internal/tool/skill/service.go): `internal/tool/skill/service.go`
- [Skill Management](https://github.com/uvwt/agentdock/blob/main/internal/skill/install.go): `internal/skill/install.go`
- [Dynamic MCP](https://github.com/uvwt/agentdock/blob/main/internal/mcp/client/manager.go): `internal/mcp/client/manager.go`
- [MCP OAuth](https://github.com/uvwt/agentdock/blob/main/internal/mcp/oauthclient/manager.go): `internal/mcp/oauthclient/manager.go`
- [Task Tools](https://github.com/uvwt/agentdock/blob/main/internal/tool/task/service.go): `internal/tool/task/service.go`
- [Task State](https://github.com/uvwt/agentdock/blob/main/internal/taskstate/store.go): `internal/taskstate/store.go`
- [Nexus Bridge](https://github.com/uvwt/agentdock/blob/main/internal/nexusbridge/client.go): `internal/nexusbridge/client.go`

### Runtime Management

- [Desktop Controls](https://github.com/uvwt/agentdock/blob/main/desktop/macos/AgentDockApp/Sources/ServiceController.swift): `desktop/macos/AgentDockApp/Sources/ServiceController.swift`
- [CLI](https://github.com/uvwt/agentdock/blob/main/cmd/agentdock/main.go): `cmd/agentdock/main.go`
- [Installer](https://github.com/uvwt/agentdock/blob/main/internal/installer/engine.go): `internal/installer/engine.go`

### Other components

- **AI Client**
- **Remote AgentDock**

## Connections

- AI Client → MCP Server: calls tools
- MCP Server → Tool Runtime: dispatches calls
- HTTP API → MCP Server: serves MCP
- Tool Runtime → Tool Dispatch: dispatches tools
- Tool Dispatch → File Tools: invokes
- Tool Dispatch → Command Tools: invokes
- Tool Dispatch → Browser Tools: invokes
- Tool Dispatch → ACP Sessions: invokes
- Tool Dispatch → Skill Tools: invokes
- Tool Dispatch → Task Tools: invokes
- File Tools → Host Filesystem: reads and writes
- Command Tools → Host Processes: runs commands
- Tool Runtime → Workspace Context: builds context
- Browser Tools → Browser Sessions: manages sessions
- Browser Tools → Host Processes: automates browser
- ACP Sessions → ACP Session Store: persists sessions
- Skill Tools → Skill Management: manages skills
- Tool Runtime → Dynamic MCP: uses dynamic servers
- Dynamic MCP → MCP OAuth: starts authorization
- Task Tools → Task State: persists tasks
- Nexus Bridge → Remote AgentDock: coordinates devices
- Desktop Controls → Tool Runtime: controls service
- CLI → Tool Runtime: starts service
- CLI → Installer: runs install
