OpenCode Profile Manager

Switch profiles.
One command.

Manage multiple isolated OpenCode environments — MCPs, agents, models, plugins — and switch between them with a single command. Reload OpenCode and your new profile is live.

opm — zsh
# migrate your existing config once
$ opm init
✓ Initialized opm
Created default profile at ~/.config/opm/profiles/default/
# create a new isolated profile
$ opm create work
✓ Created profile work
~/.config/opm/profiles/work/
# switch profiles, then reload OpenCode
$ opm use work
✓ default → work
~/.config/opencode → profiles/work
Quick Start

Up and running
in minutes.

Install
brew install tbcrawford/tap/opm
Then three commands and you're set
01
Initialize
Migrate your existing OpenCode config non-destructively into a named profile.
opm init
02
Create a profile
Create a new isolated environment with its own MCPs, agents, and model config.
opm create work
03
Switch
Run opm use work, then reload OpenCode. Your new environment — MCPs, agents, everything — is ready.
opm use work
Why opm

Fully isolated.
Zero configuration.

One command to switch
Run opm use <name> and reload OpenCode. The symlink swaps atomically — there is no window where your config is missing or in a broken state.
🔒
Complete isolation
Each profile is an independent directory — separate MCPs, agents, plugins, AGENTS.md, and model configs.
🔀
Non-destructive init
opm init migrates your current config safely into a named profile — default by default, or whatever you choose with --as. Nothing is deleted or overwritten.
🐳
docker context UX
Familiar command surface if you've used docker context. Create, use, ls, inspect, rm — it all maps naturally.
🔄
Your workflow, completely unchanged
opm works transparently beneath OpenCode. Your active profile lives at ~/.config/opencode — the exact same path OpenCode has always used. Edit configs, install MCPs, add agents — everything works exactly as it always has. Tools that write to ~/.config/opencode are writing directly into your active profile. No special paths, no wrapper commands, no migration steps for every change.
Reference

Commands

Command
Description
opm init [--as <name>]
Migrate existing config into opm. Safe to run on an existing setup. Names the initial profile default unless overridden with --as.
opm use <name>
Switch the active profile via atomic symlink swap. Reload OpenCode to pick up the new profile.
opm create <name>
Create a new empty profile. Use --from to clone an existing profile as the starting point.
opm list
List all profiles. Active is marked . Dangling profiles are marked and shown as missing.
opm show
Print the name of the currently active profile.
opm inspect <name>
Show profile details and directory contents.
opm rename <old> <new>
Rename a profile. Updates the symlink atomically if active.
opm copy <src> <dst>
Copy a profile to a new name.
opm remove <name> [name...]
Remove one or more profiles. Refuses the active profile without --force.
opm path <name>
Print the absolute path to a profile directory.
opm reset
Restore ~/.config/opencode to a plain directory.
opm doctor
Run installation health checks. Exits with code 1 on failure.