Model-group manager for OpenCode v2.
One window. Three runtimes — Native, Slim, and OMO. One click to switch model groups without touching hand-tuned configuration.
Important
opencode-mom requires OpenCode v2. It manages v2 configuration schemas, provider/model#variant selectors, and v2 permission rules. V1 configs are neither migrated nor managed.
opencode-mom ("MOM") is a cross-platform desktop application designed to keep multi-runtime OpenCode v2 configurations clean, organized, and instantly switchable. It manages named model groups, binding providers, models, agents, and categories across three runtimes:
- Native — OpenCode builtin agents, written to
~/.config/opencode/opencode.jsonc(oropencode.json). - Slim — Oh My OpenCode Slim, written to
~/.config/opencode/oh-my-opencode-slim.json. - OMO — Oh My OpenAgent, written to
~/.omo/omo.jsonc.
Projection is non-destructive: keys outside the active group definition are preserved untouched.
- 🧩 One-Click Model Group Switching: Switch between preset configurations instantly from the Dashboard, Groups view, or the System Tray.
- 🧠 Providers, Models & Agents: Register custom API endpoints (OpenAI-compatible, Anthropic, or custom), configure models and pricing, and manage agent permissions and system prompts (inline JSON or Markdown).
- 🔌 MCP & Skills Management: Manage MCP servers with masked credentials and automatic recovery snapshots. Includes a built-in MCP HTTP Proxy bridging local stdio MCP servers over HTTP/SSE for external clients.
- 🏝️ MOM Mini Island (macOS): Notch-integrated status capsule providing glanceable session health, live status waveforms, and fast interactions (approve permissions, answer prompts, or interrupt sessions).
- 💤 Lid Protection (macOS / Windows): Prevents your laptop from sleeping only while OpenCode sessions are actively working, automatically restoring your normal power policy when tasks finish.
- 📊 Dashboard & System Tray: Real-time service health, active session counts, token consumption analytics, activity heatmaps, and a lightweight tray menu for background operation.
- Dedicated Controls & Viewer: Independent logging switch in Settings → General (off by default); disabling recording preserves existing history. An independent
/logsviewer in the navigation menu (not embedded in Settings) supports manual refresh, opening the log directory, and confirmed clearing. - Correlated Tracing & State Recording: Records results of critical mutations; ordinary polling successes are omitted, while power and Mini Island record only published state transitions. Each entry requires
type,status(success|error), and links checkpoints viaoperationId(a successful step checkpoint does not imply the entire operation succeeded). - Viewer & Filtering: Supports filtering by type, status, and time range. Loads older pages via cursor pagination (50 records per page), and operation traces retain up to 100 events. Pagination cursors expire on file rotation or clear; manual refresh resets the query.
- Storage & Permissions: Stored locally in
~/.config/opencode-mom/logs(Windows:%USERPROFILE%\.config\opencode-mom\logs), rotating up to 5 JSONL files capped at 5 MiB each. Unix sets directory0700and file0600permissions; Windows uses inherited permissions (without verified private ACLs). - Safe Allowlist & Diagnostic Scope: Strictly allowlisted fields; never records credentials, passwords, tokens and their verification data, prompts, session messages, configuration contents, request/response bodies, or raw errors, with no automatic upload. Intended for local diagnostics rather than compliance auditing; process termination, disk errors, or queue overflow may cause record loss.
Download pre-built binaries from GitHub Releases:
| Platform | Artifact | Note |
|---|---|---|
| macOS (Apple Silicon) | opencode-mom_*_aarch64.dmg |
M1/M2/M3/M4 chips |
| macOS (Intel) | opencode-mom_*_x64.dmg |
Intel Macs |
| Windows (x64) | opencode-mom_*_x64-setup.exe |
NSIS installer |
Builds are ad-hoc signed. If macOS blocks opening the application:
- Open System Settings → Privacy & Security.
- Click Open Anyway next to the
opencode-momnotification. - Alternative (terminal):
xattr -dr com.apple.quarantine "/Applications/opencode-mom.app"
- OpenCode v2 installed for live service status, session monitoring, and Mini Island. (Editing configuration files works standalone).
MOM persists its own state in ~/.config/opencode-mom/config.json and patches target configuration files without overwriting unmanaged fields:
The logging switch is stored as state.loggingEnabled (default false), independent of theme, locale, model groups, and project selection. Log records are saved separately in JSONL files under logs/ and never written to config.json.
| Group Type | Target File | Patched Keys |
|---|---|---|
native |
~/.config/opencode/opencode.jsonc (fallback opencode.json) |
agents.<name>.model |
slim |
~/.config/opencode/oh-my-opencode-slim.json |
Agent model bindings |
omo |
~/.omo/omo.jsonc |
Categories & agent overrides |
Requirements: Node.js 22.x, npm, Rust ≥ 1.77.2, and Tauri 2 system prerequisites.
npm ci # Install dependencies
npm run tauri dev # Launch app in development mode
npm run tauri build # Package desktop app for current platformQuality checks:
npm run check # Biome format & lint check
npm run test:unit # Frontend unit tests
cargo check --manifest-path src-tauri/Cargo.toml # Rust backend check
cargo test --manifest-path src-tauri/Cargo.toml # Rust backend testsThe project uses the GitHub Actions Release workflow on the default branch:
- Automated: Commit to the default branch with
releaseorrelease: description(bumps the next patch version, e.g.2.0.1), orrelease: X.Y.Z(bumps to an explicit newer stable version). - Manual: Dispatch the
Releaseworkflow on the default branch with optionalversion(X.Y.Z, leave empty for next patch). - Dry Run: Pass
dry_run: trueon manual dispatch (defaults tofalse) to preview the resolved version and notes without committing, tagging, pushing, building, or publishing. - Notes & Safety Notice: GitHub Release notes use the exact tagged section from
CHANGELOG.md(falling back to commit history if absent) with platform security notices appended. Pushing a version-matchingvX.Y.Ztag directly verifies manifests and publishes without changelog writeback. - Pipeline & Permissions: The workflow uses the built-in
GITHUB_TOKENwithcontents: write; branch and tag rules must permit the release bot's generated commit and tag. Token write permission alone does not bypass branch protection. Release preparation prependsCHANGELOG.md, synchronizes 5 manifests (package.json,package-lock.json,src-tauri/tauri.conf.json,src-tauri/Cargo.toml,src-tauri/Cargo.lock) while leavingmacos-helperuntouched, and pushes the branch and tag atomically. Publication waits for all platform builds. If build or publish fails, rerun the original failed workflow without another version bump.
Released under the MIT License. © 2026 seho-dev.
