Skip to content

About

於單一 Web UI 管理多個 Opencode Instance/Session, 並可接入 Tailscale 達到完全的遠端控制(包含 Opencode 生命週期控制、Opencode Session 介入)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OpenCode Manager Web (OMW)

OMW 補足 OpenCode 缺少的整機管理與 Remote 控制一環:它在 Windows 主機集中管理 Project、Instance 與 Session,並可透過自動註冊 Tailscale Serve,讓使用者從瀏覽器開啟 OMW Web 與 OpenCode Web。

  • 集中檢視多個專案、執行個體與對話狀態。
  • 從瀏覽器啟動背景 OpenCode,並進入官方 OpenCode Web 繼續工作。
  • 自行安裝並登入 Tailscale 後,透過手機或另一台電腦的瀏覽器遠端管理。

Screenshots

集中掌握工作狀態

Overview 集中呈現多個 Project、Instance 與主要 Session,方便快速掌握目前工作狀態。

OMW Overview:Project、Instance 與主要 Session

從瀏覽器啟動背景 OpenCode

從啟動面板選擇 Project 目錄,建立可在官方 OpenCode Web 繼續操作的背景 Instance。

從 OMW Web 選擇目錄並啟動背景 Instance

Note

畫面使用示範資料(正式 Web UI 搭配 mock backend),供介面預覽;不代表真實 Tailnet 或手機端驗收。

Prerequisites

  • Windows 11。
  • PowerShell 7,且 pwsh.exe 可由 PATH 找到。
  • Node.js 24 以上與 npm。
  • 已安裝的 OpenCode CLI。
  • 遠端使用另需在 OMW 主機與訪問裝置自行安裝 Tailscale、登入同一個 Tailnet,並確認裝置有存取權。

OMW 不會安裝 OpenCode 或 Tailscale,也不會修改 PATH。

Quick Start

  1. 在日常使用的 PowerShell 啟動 OMW:
npx @sevenflanks/omw@latest

第一次執行時,npm 可能詢問是否下載 @sevenflanks/omw;確認後繼續。

  1. 依提示建立 OMW 使用者名稱與至少 16 個字元的密碼。
  2. 開啟終端顯示的 URL,例如 http://127.0.0.1:4174;實際 port 可能不同。

終端顯示 OMW Manager ready: http://127.0.0.1:4174 (version <runtime version>, <started|reused|upgraded>) 且瀏覽器可開啟登入頁,即代表 Manager 已就緒。再次執行新版 CLI 時,OMW 會正常關閉並接替較舊或尚未回報版本的 Manager;相同或較新版則直接重用,不會降版。這個 plain Manager 命令不會啟動 OpenCode TUI。

OMW 的日常 credentials、SQLite 與其他持久資料位於 %LOCALAPPDATA%\OMW。Repository development 必須改用隔離的開發入口,不要讓開發環境讀寫日常資料。

Manager 啟停診斷寫入資料目錄的 logs/manager-lifecycle.jsonl(最多約 128 KiB)與前一份 manager-lifecycle.jsonl.1。每行 JSON 記錄啟動時間、PID/PPID、Node/Manager 版本與 port、ready、API 要求關閉、close 完成、exit code、啟動失敗階段,以及未捕捉例外或未處理 rejection 的安全錯誤類別/程式行號;不記錄錯誤訊息、請求內容或原始 stdout/stderr。查明無聲退出時先比對同一 PID 的最後幾筆:若只有 start 或 ready 而沒有 exit,可能是強制終止、native fatal crash 或斷電,無法只憑此檔案斷定原因。診斷寫入失敗也不會中斷 Manager;launcher 背景程序維持既有的 stdout/stderr 處理方式。

Remote Access

  1. 在 OMW 主機與要訪問的電腦或手機自行安裝 Tailscale,登入同一個 Tailnet,並確認 Tailnet policy 允許裝置存取這台主機。
  2. 先從本機 URL 登入 OMW,在頁面上方的 TAILNET / SERVE 區塊按下 啟用遠端存取,閱讀存取範圍說明後以目前 OMW 帳密確認。
  3. OMW 會使用已登入主機的 Tailnet DNSName,自動註冊 OMW Web 與 Instance port 的 Tailscale Serve mappings;它不會安裝 Tailscale、代替你 login/up、啟動 OS service,或開啟 public Funnel。
  4. 確認畫面顯示可用的遠端 URL,再從有存取權的 Tailnet 裝置開啟。若註冊失敗,依畫面診斷修正 Tailscale 狀態或 mapping 衝突後按 自動註冊 重試。

Manager 與 OpenCode process 仍只 bind 127.0.0.1。OpenCode ports 沒有額外 OMW 帳密保護,因此必須維持 Tailnet-only、限制裝置存取,且不得啟用 Funnel。詳細安全邊界與排障見 Tailnet access runbook。

Start OpenCode Through OMW

在要工作的 Project 目錄啟動 Local TUI Instance:

npx @sevenflanks/omw@latest opencode

指定 Project 與既有 Session:

npx @sevenflanks/omw@latest opencode 'C:\develop\projects\example' -s '<session-id>'

OMW 不會攔截原生 opencode。只有 npx @sevenflanks/omw@latest opencode ... 會進入 OMW wrapper;若 wrapper bootstrap 失敗,預設可能明示診斷後繼續啟動未受管理的 native OpenCode。完整使用方式、fail-open 與三種不同停止語意見使用手冊。

Other Installation Options

若希望提供全域 omw 命令,可選擇安裝目前最新版:

npm install --global @sevenflanks/omw@latest
omw

之後可使用 omw opencode ...。Global install 與 npx 使用同一份 %LOCALAPPDATA%\OMW 日常資料。

只有需要從目前 repository 建置或驗證 package 時,才在 repository root 建立本機 artifact:

npm ci
$packageDir = Join-Path $env:TEMP 'omw-local-package'
New-Item -ItemType Directory -Force -Path $packageDir | Out-Null
$packageName = npm pack --pack-destination $packageDir -w @sevenflanks/omw | Select-Object -Last 1
$omwPackage = Join-Path $packageDir $packageName
npm exec --yes --package="$omwPackage" -- omw

這條本機 artifact 路徑仍連到日常 %LOCALAPPDATA%\OMW,不可拿來取代 repository 的隔離開發入口。

Troubleshooting

若 pwsh.exe 不在 PATH,可在啟動 OMW 的環境指定 PowerShell 7:

$env:OMW_POWERSHELL_EXECUTABLE = 'C:\Program Files\PowerShell\7\pwsh.exe'
npx @sevenflanks/omw@latest

更多 executable、port、連線與停止語意見使用手冊的 Troubleshooting。

Documentation

Validation Status

目前驗收證據與適用範圍請見使用手冊的 Validation Status。

License

OMW-authored software 使用 Sustainable Use License 1.0,是 source-available software,不是 OSI 定義的 open source software。第三方元件仍使用各自權利人提供的原始授權。

About

於單一 Web UI 管理多個 Opencode Instance/Session, 並可接入 Tailscale 達到完全的遠端控制(包含 Opencode 生命週期控制、Opencode Session 介入)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages