需要 Docker 与 Compose v2 环境;默认监听 5003 端口,首次启动需创建管理员账号;安装脚本会询问是否共享本机内容
opencode-manager
chriswritescode-devMIT活跃维护自托管的 OpenCode 网页控制台,把会话、Git、终端和定时任务集中到一个界面,手机或桌面浏览器都能远程管理编码 Agent。
A self-hosted command center for OpenCode. Sessions, git, terminal, and schedules in one web app, from your phone or desktop.
curl -fsSL https://opencodemanager.app/install | shREADME 未说明具体硬件要求,只要求安装 Docker 与 Compose v2
自托管的 OpenCode 网页控制台,把会话、Git、终端和定时任务集中到一个界面
自托管的 OpenCode 网页控制台,把会话、Git、终端和定时任务集中到一个界面,手机或桌面浏览器都能远程管理编码 Agent。
核心能力
- 在同一个 Web 应用里管理 OpenCode 会话
- 集成 Git 操作与终端
- 支持定时任务调度
- 桌面与手机浏览器均可访问
- 提供 ocm 命令行工具
容易踩的坑
- v1.1.0OpenCode Manager v1.1.0最新正式版2026-10-26 · 2026-10-26 01:16 UTC
Highlights
- Linked OpenCode servers: pair any machine running
opencode servewithocm linkand a QR code, then run sessions, terminals, schedules, multi-runs, goals and permission modes on it from Manager. Linked servers' projects appear on the home page. - Repository secrets and variables: GitHub Actions–style global, repository and environment secrets and variables, mapped through
.ocm/project.jsoninto agent shells, terminals, project actions and sandboxed shells, with secret values masked in tool output. - QR device pairing: Settings → Account → Connect a device signs in a phone or browser with a QR code, each with its own session.
- Sandboxed schedules: a schedule can run each run in its own microVM, with optional CPU and memory limits.
- Voice conversation mode: hands-free talk with the agent from the composer, with replies read aloud (now also on iOS).
- Offline start: the app restores the signed-in session and cached lists before the network answers.
- Sessions tool panel: on desktop the session picker lives in the right tool panel, replacing the Activity tool.
What's Changed
Features
- feat(servers): link remote OpenCode servers with QR pairing (#442, #445): terminals, notifications, permission modes, goals, multi-runs and schedules on linked servers; shared model favorites, recents and variants; a compact server switcher. The separate server page is replaced by linked-server projects on the home page.
- feat(secrets): repository secrets and variables for agent shells and terminals (#432): a Secrets tool on repository pages, a global section in Settings → OpenCode Config, and the env mapping shown in trust review.
- feat(device-pairing): pair phones and browsers with a QR code (#461)
- feat(schedules): run scheduled jobs in a per-job sandbox microVM (#469)
- feat(frontend): hands-free voice conversation mode in the composer (#459)
- feat(frontend): persist the query cache and restore the signed-in session offline (#463)
- feat(sessions): move the session picker into the desktop right tool panel (#471)
- feat(frontend): mobile sessions sheet and session details header (#462), with context usage on the composer model pill.
- feat(frontend): restyle the session transcript as a plain log with collapsible tool details (#457)
- feat(frontend): composer layout refresh and activity scanner under the composer (#454)
- feat(frontend): in-row mobile voice recorder (#456) and mobile add-repo action in the search row (#458)
- feat(sessions): full-screen mobile question sheet with persisted draft answers (#447)
- feat(navigation): drag-resizable desktop sidebar (#443)
- feat(header): move mobile reports into the More menu and compact the header (#444)
- feat(chat): dedicated card for Code Mode
executecalls and images returned by tools (#440) - feat(ocm-cli):
ocm link,ocm login --name, and warp replaces theocmprocess withopencode.
Fixes
- fix(auth): update the auth stack, make session revocation immediate and stop logging tokens (#455); auth rate limiting keys on the socket address only.
- fix: issues found in a full desktop and mobile evaluation (#460): TTS on iOS, STT endpoints with a trailing
/v1, terminal output capture, git identity validation. - fix(events): clear stale pending questions from remote servers (#451, #452)
- fix(ocm-cli): detect the OpenCode service in
ocm link(#449) - fix(sessions): keep the question card within the space above the prompt (#448)
- fix(git): refresh branch labels after branch changes (#439)
- fix(notifications): phrase permission labels without losing acronyms (#466)
- fix(schedules): fill available panel height with the jobs table (#467)
- refactor(activity): remove the compact activity list from the mobile More drawer (#468)
- fix(frontend): collapse the linked-server project header when a tool panel is docked
- Linked OpenCode servers: pair any machine running
- v1.0.1OpenCode Manager v1.0.12026-10-16 · 2026-10-16 21:33 UTC
查看更新说明
Highlights
- Active work: one place to see which sessions need input, are running, or finished recently, across every repository. It appears as an Activity tool on the desktop tool rail, as an Active tab in the session picker, and at the top of the mobile More drawer.
- Per-session sandboxing: each sandboxed session runs its agent shell in its own microVM, which mounts only that session's repository or worktree. You can toggle it per session from the composer and set CPU and memory per session.
- Agent-built change walkthroughs: a separate walkthrough agent session reads the diff and builds an interactive HTML walkthrough. You can stop it, refine it, or open its session.
- HTML artifacts: an agent can write a self-contained HTML page and show it inline in the chat with the
ocmtool'sshow_artifactaction. - Session picker tabs: switch between Active, Sessions and Projects with
Ctrl+S. - Read what's on screen: leader then
Sreads aloud the assistant messages currently visible.
What's Changed
Features
- feat(activity): surface active work across the session picker, tool rail and mobile (#436, #438): grouped as Needs input, Running and Recent. Subagent work rolls up to its root session, worktree sessions show under the repository that owns them, and the sidebar and repo cards show an activity spinner. The recent window is set in Settings → General → Activity (15 minutes to 24 hours, default 30 minutes).
- feat(sandbox): per-session sandbox VMs with resource settings and provider arbitration (#430):
- One microVM per sandboxed root session; child sessions inherit the setting.
- New sessions are sandboxed by default while sandbox support is on.
- VMs are removed when a session's sandbox is turned off, the session is deleted, or the VM sits idle. A cap limits how many VMs run at once.
- When another sandbox provider such as opencode-forge also wants to wrap a command, one provider is chosen per call, and the tool call badge shows which one ran it.
- feat(walkthrough): build the change walkthrough in a spawned agent session (#435, #437): replaces the stop-by-stop walkthrough. A version appears in the panel as soon as one is published, and the build stops after 15 minutes. The
open_walkthroughtool now waits until the walkthrough is ready. - feat(walkthrough): stop an in-flight change walkthrough generation (#417)
- feat(artifacts): render agent HTML files inline in the session chat (#420): the page renders in a sandboxed frame with Reload and Open in new tab. It must be an
.htmlor.htmfile of at most 5 MB inside the session directory. - feat(sessions): switch between sessions and projects in the session picker (#425)
- feat(tts): play TTS for visible messages with a keyboard shortcut (#426): the floating speaker button also reads the replies on screen when you have scrolled up.
- feat(chat): tailor replies for mobile and text-to-speech (#429): prompts sent from a phone ask the agent for replies that read well on a small screen and aloud.
- feat(markdown): render inline images in messages and markdown files (#424)
- feat(sessions): show background activity for shells and child sessions (#419)
- feat(composer): keep the mobile send button and move dictation into the tools menu (#423)
- feat(workspaces): group multi-run worktrees in the worktrees tab (#415)
- feat(session): show the workspace branch in the session detail header
Fixes
- fix(permissions): prioritize the viewed session and add request context to the permission dialog (#428)
- fix(session): stop the background activity indicator going stale (#431), and follow a moved session's new directory without a reload.
- fix(sse): close the event stream on pagehide and reconnect on bfcache restore (#434)
- fix(sessions): match OpenCode TUI context usage (#421)
- fix(tts): prevent overlapping playback and corrupted audio cache (#416)
- **fix(chat):
- v1.0.0OpenCode Manager v1.0.02026-10-09 · 2026-10-09 15:58 UTC
查看更新说明
Highlights
- Desktop tool panel: Files, Source Control, Terminal, Walkthrough, Preview, MCP, Skills, Actions and Schedules dock in a right-side panel on desktop. Mobile keeps its drawers.
- Change walkthroughs: an agent explains a session's changes stop by stop. You can walk through the session, uncommitted, staged, unstaged, branch or pull request changes, and an agent can open the walkthrough itself.
- Multi-run fusion: combine two to five completed multi-run results into one fused session, from a new runs sheet.
- App-wide keyboard shortcuts, with import of your OpenCode TUI keybinds.
- Model selection that matches the TUI: chat, schedules, agents, the goal auditor and the walkthrough all share the TUI's model preferences, favorites and recents.
/ocm-moveinto worktrees: moving a local session no longer fails when the Manager checkout is dirty, behind or on another branch. The session moves into an OpenCode worktree instead.
What's Changed
Features
- feat(ui): dock repo and session tools in a desktop side panel (#400): the open tool lives in the URL (
?panel=), so it survives reloads and can be linked. - feat(walkthrough): session change walkthroughs (#386, #402, #407, #412): a walkthrough opens on an overview page, then pages through stops. Large diffs are planned once and explained in parallel, four stops at a time, with stops appearing as they finish. Explanations are reused when the code they cover hasn't changed. Choose the source (session, uncommitted, staged, unstaged, branch or pull request), and set a walkthrough model in Settings. The
ocmtool'sopen_walkthroughaction lets an agent open it. - feat(multi-run): fusion and a runs sheet (#386, #391): fuse two to five completed runs with a chosen model and optional instructions, optionally in an isolated workspace. One right-side runs sheet replaces the multi-run and fusion dialogs. A fusion no longer asks permission once for each source workspace.
- feat(schedules): workspace modes and worktree management (#385): each schedule runs in a fresh worktree per run, kept worktrees, one shared worktree, or the repository checkout itself. Its leftover worktrees can be inspected and cleaned up.
- feat(ui): app-wide keyboard shortcuts with TUI keybind import (#401): new actions include clear prompt, toggle terminal, toggle source control and cycle favorite models (Ctrl+R). Focus returns to where it was when an overlay closes.
- feat(sessions): TUI-style session picker (#403): Pinned, Today and Older sections, type-to-filter search, a This project / All scope, and inline pin and delete. Sessions from the project's worktrees and schedule runs are included (#409, #410).
- feat(composer): unified prompt suggestions (#394): one fuzzy-ranked list for commands, agents, skills and files, with
@skillmentions and a mobile insert keybar. - feat(chat): group exploration tool calls (#392): consecutive reads, searches and fetches collapse into one summary line, as in the TUI. Toggle it in Settings.
- feat(ocm): move sessions into OpenCode worktrees (#408):
/ocm-movereplaces the Manager checkout only when it is on the branch, clean and not ahead. Otherwise it reuses a clean worktree on that branch or creates one. A server branch with commits the local branch lacks is never rewound. - feat(tui): session goals, multi-runs and server switching in the ocm TUI (#395, #396):
/ocm-goal,/ocm-multirunand switching servers from inside the TUI. - feat(sidebar): match repo names and debounce session search
Fixes
- fix(models): model pickers no longer stay empty (#413): the model list reloads when the event stream reconnects. Model and provider changes now reach every open tab, including the model pickers in Settings.
- fix(commands): the slash menu no longer gets stuck on built-in commands (#406): command, agent and skill lists reload on reconnect. Changes to them reach every open tab.
- v0.21.0OpenCode Manager v0.21.02026-10-05 · 2026-10-05 19:16 UTC
查看更新说明
Highlights
- One-line install —
curl -fsSL https://opencodemanager.app/install | shsets up and starts OpenCode Manager with Docker. No clone and no.envrequired. - Integrated terminal and project actions — run shells, dev servers and watchers from the WebUI, including on mobile.
- Session automation — per-session auto-accept, session goals that keep working until an objective is met, and multi-run across up to five models.
- Expanded source control — worktrees from existing branches, merge or cherry-pick integration, stashes, conflict continue/abort, AI commit messages and git identities.
- Docs moved to opencodemanager.app/docs.
What's Changed
Features
- feat(docker): one-line installer and release Compose file (#384) —
scripts/install.shchecks for Docker and Compose v2, installs into~/opencode-manager(override withOCM_DIR), and asks before sharing anything from the host: importing your OpenCode config and state, mounting a repos folder, and phone/LAN sign-in. Re-running it updates to the latest release. The newdocker-compose.release.ymlruns the published image under the Compose project nameocm; a checkout'sdocker-compose.ymlkeeps building from source. The installer refuses to install over a source checkout or next to a running install, so it never takes over existing data. - feat(docker): generate
AUTH_SECRETautomatically — WhenAUTH_SECRETis unset, the container generates one on first start and stores it in the data volume at/app/data/.auth-secret(mode 0600), so it survives restarts and updates. AnAUTH_SECRETyou already set keeps taking priority. - feat(terminal): integrated terminal (#381) — Open terminals for a repository or session directory from the sidebar or the More drawer, with tabs, confirmation before closing a running shell, and exit codes. Terminals are OpenCode PTYs, so they reattach and replay output after a browser reload. A mobile key bar adds Esc, Tab, Ctrl, arrows and
| ~ /. Terminals receive the repository's GitHub token, soghworks without extra setup. - feat(project-actions): run and stop project commands (#381) — Define dev servers, build watchers and test runners per repository, either as personal actions or in a committed
.ocm/project.json, and run them from the header menu. URL templates support{worktree}and{branch}, and local dev URLs open in the Preview panel. - feat(ui): preview port menu and terminal auto-start — The Preview panel gains a port menu, and opening the terminal starts a shell when nothing is running in that directory.
- feat(sessions): permission modes (#379) — Choose ask or auto per session, with a default for new sessions. Auto answers each permission request from the backend. Child sessions inherit their root's mode, forks copy it, and scheduled runs and agent-created sessions always ask.
- feat(sessions): session goals (#379) — Arm a goal in the composer and the session keeps going until an auditor model reports it done or blocked, within continuation and token limits. Goals can be paused, resumed or cancelled, recover after a restart, and send outcome notifications.
- feat(sessions): multi-run (#379) — Run one prompt on up to five models in parallel from the repo page, optionally each in its own OpenCode workspace, and track each run's status, then open or discard it.
- feat(ocm): session management for the assistant (#379) — The
ocmtool can list, create, follow up on, read replies from and fork sessions, with a matching assistant skill. - feat(ocm): let the assistant clone repositories (#382) — The assistant can add a repository from an HTTPS or SSH URL, with an optional branch and directory name. This reuses the Add Repository flow, so deduplication, SSH setup and rollback behave the same.
- feat(git): worktrees, integrate and branch management (#380) — Create worktrees from a new branch or an existing
- One-line install —
- v0.20.0OpenCode Manager v0.20.02026-10-03 · 2026-10-03 03:09 UTC
查看更新说明
What's Changed
Features
- feat(themes): apply OpenCode color themes app-wide with a settings picker (#364) — Vendors the 36 OpenCode theme palettes into the shared package (synced via
pnpm themes:sync), adds acolorThemepreference, and applies the theme across messages, repos, sessions, settings, agent colors, git status, and diff viewers through a ThemeProvider. Adds a theme picker to General settings; model quick-select follows the active theme (fixes #355). - feat(themes): drive code block syntax highlighting from active theme — Code blocks now use the active theme's syntax colors.
- feat(files): fullscreen preview, relative markdown links, and preinstalled Chromium (#369) — Desktop file preview gains a fullscreen toggle with a minimal close control. Relative and absolute markdown links resolve against the previewed file and open in the file browser, while external links open in a new tab. Playwright and Chromium are preinstalled in the Manager image so agents can run browser automation without a project-local install.
- feat(opencode-config): redact secrets and add MCP listing to the internal config API (#366)
- feat(schedules): attach MCP servers to scheduled runs
- feat(schedules): add unread run report notifications and run search
- feat(schedules): open repo session with run context for finished worktree runs
- feat(opencode): surface server startup and recovery failures in-app
- feat(commands): align built-in slash commands with OpenCode v2 — Replaces the built-in command list with one typed registry. Removes the broken themes/share/unshare/editor entries, and server and custom commands now win on a name clash. Adds
/copy,/btw,/rename,/fork(message picker),/timeline,/model,/agent,/variants,/mcp,/skills,/settings, and/connect./modelworks while a response is running, and attachments are kept when a built-in command is submitted. - feat(frontend): default sidebar sections open and theme toasts — Sidebar sections are tracked independently and open by default; toasts use app color tokens and the selected theme mode.
Fixes
- fix: stabilize scheduled runs and background task tracking (#365) — Routes directory-less session events to backend listeners so scheduled runs finish and failure push notifications fire. Background shell status is resolved from the transcript when OpenCode no longer lists the shell, and a kill is no longer reported as completed. Child-session reconciliation is tightened, finished background tasks are hidden, and long dialog titles are clipped.
- fix(files): resolve workspace paths and add sandboxed HTML preview (#367) — Accepts workspace-absolute paths, serves raw content under a CSP sandbox, previews HTML in a sandboxed iframe with a raw toggle, and fixes file-click path resolution and initial directory navigation.
- fix(files): skip broken symlinks during directory scans
- fix(navigation): show Assistant sessions in the sidebar and repo switcher (#368)
- fix(opencode-config): reject redacted placeholder in raw-text config writes
- fix(opencode): harden supervised server startup failure diagnostics
- fix(commands): run multi-line and Enter commands, restore focus, refresh forks — Multi-line commands run instead of being sent as text, a complete command name runs on Enter, prompt focus is restored when a session opens or a dialog closes, and forked sessions appear in the sidebar immediately.
- fix(schedules): run reports and history — Report links open in place, schedule notifications route to the run report, older run links resolve, session lookups are indexed, local report links are intercepted while repo data loads, and cached reports stay visible after polling errors.
- fix(schedules): use real row buttons and correct run timestamps — Rows are accessible buttons, the active run stays resolvable when filtered out, and
startedAtis shown consistently. - **fix(sched
- feat(themes): apply OpenCode color themes app-wide with a settings picker (#364) — Vendors the 36 OpenCode theme palettes into the shared package (synced via
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Quick Start
Requires Docker with Compose v2.
curl -fsSL https://opencodemanager.app/install | sh
The installer starts OpenCode Manager on http://localhost:5003 and asks before sharing anything from your machine. Re-run it to update. On first launch you create an admin account.
Requirements, Compose and source installs, and every feature are covered at opencodemanager.app:
Development
This repository is a pnpm workspace: backend/ (Bun + Hono), frontend/ (React + Vite), shared/ (schemas and types) and ocm-cli/ (the ocm CLI).
pnpm install
pnpm dev
pnpm lint
pnpm typecheck
pnpm test
See the Development Guide for setup, scripts, database notes and testing.
License
MIT