How zj970/opencode works
OpenCode is an open-source AI coding agent, exposed through web/desktop, terminal, and CLI interfaces. The core workflow is choosing or opening a project session, composing a request, and having an agent work with project context and tools under permission constraints; users then inspect the session and its results. The README documents build and read-only plan agents plus a general subagent. The sampled server routes establish session-execution and service wiring, but the excerpts do not show the agent/tool dispatch path, so uncertain runtime links are omitted.
Main entry points: routes.ts Session Execution · home-sessions-controller.tsx Session Browser · server-sync.tsx Session Sync · app.tsx Web App
Components 19
User Interfaces
- Web App
packages/app/src/app.tsx - Terminal UI
packages/tui/src/app.tsx - CLI
packages/cli/src/index.ts - Desktop Updater
packages/desktop/src/main/updater-controller.ts
Session Workflow
- Session Browser
packages/app/src/pages/home/home-sessions-controller.tsx - Request Composer
packages/app/src/pages/session/composer/index.ts - Session Timeline
packages/app/src/pages/session/timeline/message-timeline.tsx
Agent Runtime
- Server API
packages/server/src/routes.ts - Session Execution
packages/server/src/routes.ts - Agent Modes
- Agent Tools
- Language Servers
packages/opencode/src/lsp/server.ts - Permissions
packages/app/src/context/permission.tsx
State And Integrations
- Project Files
packages/app/src/context/file.tsx - Model Providers
packages/app/src/components/settings-v2/providers.tsx - Session Sync
packages/app/src/context/server-sync.tsx - Local Storage
packages/opencode/src/storage/storage.ts - Object Storage
packages/enterprise/src/core/storage.ts
Other components
- Developer
Connections 21
- Developer → Web App: uses
- Developer → Terminal UI: uses
- Developer → CLI: uses
- Web App → Session Browser: opens sessions
- Session Browser → Session Sync: loads session index
- Session Browser → Request Composer: starts session
- Request Composer → Server API: submits request
- Terminal UI → Server API: connects through SDK
- CLI → Server API: serves API
- Server API → Session Execution: provides service
- Session Execution → Agent Modes: executes agent
- Agent Modes → Agent Tools: invokes tools
- Session Execution → Permissions: checks policy
- Session Execution → Model Providers: requests inference
- Session Execution → Project Files: uses project context
- Session Execution → Language Servers: uses language services
- Server API → Session Sync: provides session data
- Session Sync → Session Timeline: updates view
- Session Execution → Local Storage: persists state
- Developer → Desktop Updater: initiates update
- Object Storage → Developer