Skip to content

From the terminal: it's just mise

An AI setup is one mise config file. Apply, check, share, and remove it with the mise commands you already have.

There is no powermise command. An AI setup compiles to one ordinary mise config file, so everything you’d do with it from a terminal — or a script, CI, or your dotfiles — is plain mise. AI Setups need mise 2026.10 or newer.

Applying a setup in the app writes one file into your mise config directory:

~/.config/mise/conf.d/powermise-<name>.toml

(If you set MISE_CONFIG_DIR or XDG_CONFIG_HOME, it goes there instead, the same place mise looks.) It looks like this:

# Generated by powermise for the AI setup "engineering-agents". Do not edit:
# powermise rewrites this file when the setup changes. Remove the setup in
# powermise (or delete this file) to remove it from mise.
[tools]
claude-code = "2.1.251"
node = "26.8.1"
"npm:@openai/codex" = "0.151.0"
ripgrep = "15.2.0"
[bootstrap.packages]
"brew-cask:claude" = "latest"

(That’s on a Mac with Include desktop apps on: the Claude app comes from Homebrew Cask. On Linux, packages like git come from apt instead.)

mise always reads files in conf.d, so there’s no environment to switch on: the setup’s tools work in every terminal where mise is activated. Homebrew can’t install a specific version, so Homebrew packages are always latest. mise installs Homebrew packages and casks itself — Homebrew doesn’t need to be installed.

mise doesn’t put the commands from Homebrew formulas on your PATH, so a setup that declares brew: formulas also adds each formula’s own folder:

[bootstrap.packages]
"brew:hermes-agent" = "latest"
[env]
_.path = ["/opt/homebrew/opt/hermes-agent/bin"]

That’s /opt/homebrew on an Apple Silicon Mac and /home/linuxbrew/.linuxbrew on Linux and WSL. (mise doesn’t install Homebrew formulas on Intel Macs or Windows.) It isn’t all of /opt/homebrew/bin, which would also put Homebrew’s copies of the formulas’ dependencies — its python3 or node — ahead of your mise tools. Casks are apps, so they need nothing on PATH.

The setup itself — which harnesses you picked — is saved separately, in ~/.config/powermise/selections/<name>.toml.

Terminal window
mise bootstrap --yes --only packages,tools

This is exactly what Apply runs. --only packages,tools keeps the run to installing things, so any dotfiles, services, or other [bootstrap] settings in your own config aren’t touched. To see what it would do first:

Terminal window
mise bootstrap plan

mise bootstrap installs everything your mise config asks for, not only the setup’s — the app’s review sheet lists anything else it would pick up.

Terminal window
mise bootstrap status # packages and tools: installed or missing
mise ls # tools, and which config file set each one

The setup never edits your config.toml. If your config already pins a tool the setup also declares — say jq = "1.7" — mise uses yours, and the app says so on the setup’s page. To change a version the setup picked, set it in your own config rather than editing the generated file.

Delete the file — that’s all Remove Setup does to mise:

Terminal window
rm ~/.config/mise/conf.d/powermise-engineering-agents.toml

Anything it installed stays on the computer. To delete tool versions no config uses anymore:

Terminal window
mise prune --tools

Homebrew, apt, winget, and Scoop packages stay installed; remove them with their own package manager if you no longer want them.

The generated file is plain mise config, so it travels like any other:

  • Another computer: copy the file into that machine’s conf.d and run the apply command. Or copy the setup from ~/.config/powermise/selections/ and apply it in the app there — it recompiles for that machine’s platform.
  • Dotfile managers like chezmoi or yadm: manage ~/.config/mise/conf.d/powermise-*.toml like your other mise files.
  • CI: commit the file next to your project’s mise config, or write it into $MISE_CONFIG_DIR/conf.d/ in a setup step, then run the apply command.

A setup compiled on macOS declares Homebrew packages; one for Windows declares winget or Scoop packages. Compile for the platform you’ll apply on — the setup editor’s Preview for menu shows each one.

  • conf.d/powermise-<name>.toml, only when you click Apply. It’s written atomically and never follows a symlink.
  • conf.d/powermise-<name>.files/, beside it, when the setup has MCP servers: one source file per agent, which the fragment’s [dotfiles] merge entries point at.
  • Its own folder, ~/.config/powermise/: saved setups and app state.

It never edits your own mise config files, and it never runs mise with MISE_YES, which would make mise trust configs on its own.

Plugins install with the agent’s own command, run through mise x so a mise-installed agent is found:

Terminal window
mise x -- claude plugin install github@anthropic-plugin-directory --scope user
mise x -- codex plugin add github@openai-curated-remote
mise x -- gemini extensions install https://github.com/gemini-cli-extensions/code-review --consent

Applying a setup runs these after mise bootstrap for plugins that aren’t installed yet. Most Codex plugins sign in to a service while installing, so powermise opens those in your terminal instead. Removing a setup leaves its plugins installed, like its tools; remove them in Agents › Plugins.

An agent keeps its MCP servers in its own settings file, which it also writes to — ~/.claude.json, ~/.codex/config.toml, ~/.gemini/settings.json, and so on. A setup adds its servers with a mise merge entry, which owns only the keys in its source and leaves the rest of the file alone:

[dotfiles."~/.claude.json/powermise-work"]
source = "powermise-work.files/claude-code.json"
merge = true

Most of these files are in the same place on every platform. The ones in an app’s own folder move:

AgentmacOSWindowsLinux and WSL
Claude desktop app~/Library/Application Support/Claude/claude_desktop_config.json~/AppData/Roaming/Claude/claude_desktop_config.json— (no Linux app)
VS Code~/Library/Application Support/Code/User/mcp.json~/AppData/Roaming/Code/User/mcp.json~/.config/Code/User/mcp.json
Clinecline_mcp_settings.json under VS Code’s folder abovesamesame

Zed’s settings file can hold comments, which mise won’t merge into, so add servers there in Zed’s Agent Panel settings.

Applying the setup runs mise dotfiles apply for just those files after mise bootstrap. Servers mise installs run as <path to mise> x npm:@upstash/context7-mcp@4.4.2 -- context7-mcp, so desktop apps that don’t see your shell’s PATH still find them; remote servers are a URL.

mise never removes merged keys on its own, so when a setup drops a server, or you remove the setup, powermise takes exactly the servers it added back out of each file — by name, keeping the rest of the file as it was. A file it can’t parse (JSON with comments, say) is left alone. This needs mise 2026.10 or newer.