How to switch OpenCode models from Slack
Choose the OpenCode model Pipa uses for new Slack threads. Learn the model command, first-time setup, and what happens to existing conversations.
Posted by
Related reading
How to create agents in OpenCode
Create primary agents and subagents in OpenCode. Add a Markdown file to your project, choose its mode, and run it with a working example.
How to connect an MCP server to OpenCode
Connect an MCP server to OpenCode, check its tools, and run a prompt that uses them. Includes configuration, authentication, and troubleshooting.
OpenCode skills: install, create, and troubleshoot them
Learn where OpenCode skills live, create and load a SKILL.md file, install Pipa's business skills, and fix missing skills or permission problems in your setup.
Type your agent's model command in Slack, such as /chopper model, choose a model, and click Save. New threads use that model. Existing threads keep theirs.
This two-minute video shows how to add the command to an existing Slack app and pick a model.
Already using the model picker? Skip to Step 3.
Watch the walkthrough on YouTube
Before you start:
- Pipa 0.5.5 or later. Check with
pipa --version. To upgrade, runnpm install --global @usepipa/pipa@latest. - A working Slack setup. If Pipa is not connected to Slack yet, follow the OpenCode Slack setup guide first.
- A connected model provider. Connect the provider you plan to use. Seeing a model in the list does not mean you're signed in to its provider.
Step 1. Add the model command to your Slack app
If your app already has the model command, skip to Step 2. Updating Pipa alone does not add the command to Slack.
In the terminal on the computer running Pipa, save the app setup template:
pipa manifest > "$HOME/pipa-slack-manifest.json"
This template uses your Pipa settings and contains no tokens.
- Open your existing app in Slack App Management. Open App Manifest and save a copy before editing.
- Copy the command entries from the template's
features.slash_commandsinto your app's manifest. Addcommandsunderoauth_config.scopes.bot. Keep the rest of your app's settings. Don't replace the whole manifest. - Save, then reinstall the same app to approve the changes. Keep your current tokens unless Slack gives you new ones. If it does, update them in your existing Pipa config.
The command uses your agent's name: Chopper gets /chopper model. Use that named command to avoid conflicts with other apps using the /pipa model command.
Do not rerun pipa init to add this feature. It rewrites your config.
Step 2. Restart Pipa
In the same terminal, restart Pipa and check that it finishes:
pipa restart pipa restart --status
Wait for the status to say completed before continuing.
Step 3. Pick a model
In a Slack channel where you use Pipa, type your agent's model command, such as /chopper model.
A window opens with models grouped by provider. Browse or type to search, choose a model, and click Save.
Slack sends you a private message naming the model you saved. You don't need to restart Pipa again. Clicking Cancel keeps your current model.
Step 4. Confirm in a new thread
Check that the confirmation message names the model you chose. Then mention your agent in a new Slack thread and send a small request to check that it responds.
To use the model you just picked, start a new thread.
Frequently asked questions
Does this change the model in existing threads?
No. Existing threads keep their model, even after a restart. If OpenCode can no longer load a thread's saved conversation, Pipa starts a new one using your current default model.
Why doesn't Slack recognize the model command?
Check Step 1 and use the command named after your agent. If multiple apps register /pipa, Slack routes it to the most recently installed app.
What if Save fails or the model won't answer?
Follow the error message. Check that you're signed in to the provider in OpenCode and have enough usage available. Saving a model does not test whether it can answer. If Save fails, your default stays the same.
Why is my routine still using the old model?
The picker changes the default for new threads, not existing routines. Ask your agent to update the model in the routine you want to change. You don't need to create a new routine. A routine with no saved model uses OpenCode's default.
What if my agent isn't replying at all?
Follow the Slack agent troubleshooting guide.
Does the picker change OpenCode's config or store API keys?
No. It saves Pipa's default model in its own config. Connecting providers and credentials is a separate step in the OpenCode install guide.
Can I switch from my phone?
Yes. The picker is a Slack command. The computer running Pipa still needs to stay awake and online for any remote request.
If you don't want to worry about keeping a computer online, get in touch about Pipa Managed.