# aluro7in/opencode architecture

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

- Interactive diagram: https://gitdiagram.com/aluro7in/opencode
- Repository: https://github.com/aluro7in/opencode

## Overview

OpenCode is an open-source AI coding agent, available through a terminal UI, desktop app, and client/server interfaces. A typical workflow starts with a user prompt, passes through an agent that coordinates model requests and coding actions, and uses project files and persisted sessions as context and state. The README also highlights provider choice and built-in LSP support. The graph combines those documented capabilities with sampled server, storage, and client code; unsampled subsystem wiring is intentionally left unspecified.

Main entry points: [`packages/opencode/src/server/server.ts`](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/server/server.ts) (HTTP server), [`packages/opencode/src/agent/agent.ts`](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/agent/agent.ts) (Agent), [`packages/opencode/src/cli/cmd/tui/app.tsx`](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/cmd/tui/app.tsx) (Terminal UI), [`packages/opencode/src/cli/bootstrap.ts`](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/bootstrap.ts) (CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["User clients"]
  node_cli["CLI<br/>[bootstrap.ts]"]
  node_tui["Terminal UI<br/>[app.tsx]"]
  node_desktop["Desktop client<br/>[entry.tsx]"]
  node_webapp["Web client<br/>[app.tsx]"]
end

subgraph group_runtime["Agent runtime"]
  node_server["HTTP server<br/>[server.ts]"]
  node_agent["Agent<br/>[agent.ts]"]
  node_provider["Model providers"]
  node_auth["Provider auth<br/>[index.ts]"]
  node_tools["Agent tools"]
  node_workspaceevents["Workspace events<br/>[routes.ts]"]
end

subgraph group_project["Project services"]
  node_lsp["Language servers<br/>[server.ts]"]
  node_projectfiles["Project files"]
end

subgraph group_state["Session state"]
  node_session[("Session storage<br/>[storage.ts]")]
  node_eventbus["Event bus<br/>[global.ts]"]
end

subgraph group_hosted["Hosted services"]
  node_zen["OpenCode Zen"]
  node_console["Account and billing"]
  node_database[("Console database<br/>[workspace.sql.ts]")]
  node_enterprise["Enterprise sharing<br/>[share.tsx]"]
end

node_user(("Developer"))

node_user -->|"prompts"| node_tui
node_user -->|"prompts"| node_webapp
node_user -->|"prompts"| node_desktop
node_user -->|"invokes"| node_cli
node_cli -->|"starts"| node_tui
node_tui -->|"requests"| node_server
node_webapp -->|"requests"| node_server
node_desktop -->|"connects"| node_server
node_server -->|"dispatches"| node_agent
node_agent -->|"requests"| node_provider
node_auth -->|"authenticates"| node_provider
node_agent -->|"invokes"| node_tools
node_tools -->|"reads/writes"| node_projectfiles
node_agent -->|"persists"| node_session
node_server -->|"reads/writes"| node_session
node_server -->|"publishes"| node_eventbus
node_workspaceevents -->|"subscribes"| node_eventbus
node_agent -.->|"uses"| node_lsp
node_user -->|"manages workspace"| node_console
node_console -->|"reads/writes"| node_database
node_user -.->|"requests models"| node_zen
node_user -.->|"opens shared session"| node_enterprise

click node_cli "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/bootstrap.ts"
click node_tui "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/cmd/tui/app.tsx"
click node_desktop "https://github.com/aluro7in/opencode/blob/dev/packages/desktop/src/entry.tsx"
click node_webapp "https://github.com/aluro7in/opencode/blob/dev/packages/app/src/app.tsx"
click node_server "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/server/server.ts"
click node_agent "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/agent/agent.ts"
click node_provider "https://github.com/aluro7in/opencode/tree/dev/packages/opencode/src/provider"
click node_auth "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/auth/index.ts"
click node_tools "https://github.com/aluro7in/opencode/tree/dev/packages/opencode/src/tool"
click node_lsp "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/lsp/server.ts"
click node_session "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/storage/storage.ts"
click node_eventbus "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/bus/global.ts"
click node_workspaceevents "https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/control-plane/workspace-server/routes.ts"
click node_zen "https://github.com/aluro7in/opencode/tree/dev/packages/console/app/src/routes/zen"
click node_console "https://github.com/aluro7in/opencode/tree/dev/packages/console/app/src/routes/workspace"
click node_database "https://github.com/aluro7in/opencode/blob/dev/packages/console/core/src/schema/workspace.sql.ts"
click node_enterprise "https://github.com/aluro7in/opencode/blob/dev/packages/enterprise/src/routes/share.tsx"

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_cli,node_tui,node_desktop,node_webapp toneBlue
class node_server,node_agent,node_provider,node_auth,node_tools,node_workspaceevents toneAmber
class node_lsp,node_projectfiles toneMint
class node_session,node_eventbus toneRose
class node_zen,node_console,node_database,node_enterprise,node_user toneIndigo
```

## Components

### User clients

- [CLI](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/bootstrap.ts): `packages/opencode/src/cli/bootstrap.ts`
- [Terminal UI](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/cli/cmd/tui/app.tsx): `packages/opencode/src/cli/cmd/tui/app.tsx`
- [Desktop client](https://github.com/aluro7in/opencode/blob/dev/packages/desktop/src/entry.tsx): `packages/desktop/src/entry.tsx`
- [Web client](https://github.com/aluro7in/opencode/blob/dev/packages/app/src/app.tsx): `packages/app/src/app.tsx`

### Agent runtime

- [HTTP server](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/server/server.ts): `packages/opencode/src/server/server.ts`
- [Agent](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/agent/agent.ts): `packages/opencode/src/agent/agent.ts`
- [Model providers](https://github.com/aluro7in/opencode/tree/dev/packages/opencode/src/provider): `packages/opencode/src/provider`
- [Provider auth](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/auth/index.ts): `packages/opencode/src/auth/index.ts`
- [Agent tools](https://github.com/aluro7in/opencode/tree/dev/packages/opencode/src/tool): `packages/opencode/src/tool`
- [Workspace events](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/control-plane/workspace-server/routes.ts): `packages/opencode/src/control-plane/workspace-server/routes.ts`

### Project services

- [Language servers](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/lsp/server.ts): `packages/opencode/src/lsp/server.ts`
- **Project files**

### Session state

- [Session storage](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/storage/storage.ts): `packages/opencode/src/storage/storage.ts`
- [Event bus](https://github.com/aluro7in/opencode/blob/dev/packages/opencode/src/bus/global.ts): `packages/opencode/src/bus/global.ts`

### Hosted services

- [OpenCode Zen](https://github.com/aluro7in/opencode/tree/dev/packages/console/app/src/routes/zen): `packages/console/app/src/routes/zen`
- [Account and billing](https://github.com/aluro7in/opencode/tree/dev/packages/console/app/src/routes/workspace): `packages/console/app/src/routes/workspace`
- [Console database](https://github.com/aluro7in/opencode/blob/dev/packages/console/core/src/schema/workspace.sql.ts): `packages/console/core/src/schema/workspace.sql.ts`
- [Enterprise sharing](https://github.com/aluro7in/opencode/blob/dev/packages/enterprise/src/routes/share.tsx): `packages/enterprise/src/routes/share.tsx`

### Other components

- **Developer**

## Connections

- Developer → Terminal UI: prompts
- Developer → Web client: prompts
- Developer → Desktop client: prompts
- Developer → CLI: invokes
- CLI → Terminal UI: starts
- Terminal UI → HTTP server: requests
- Web client → HTTP server: requests
- Desktop client → HTTP server: connects
- HTTP server → Agent: dispatches
- Agent → Model providers: requests
- Provider auth → Model providers: authenticates
- Agent → Agent tools: invokes
- Agent tools → Project files: reads/writes
- Agent → Session storage: persists
- HTTP server → Session storage: reads/writes
- HTTP server → Event bus: publishes
- Workspace events → Event bus: subscribes
- Agent → Language servers: uses
- Developer → Account and billing: manages workspace
- Account and billing → Console database: reads/writes
- Developer → OpenCode Zen: requests models
- Developer → Enterprise sharing: opens shared session
