Skip to content

Reference: Slack commands

Everything below works identically as a bare mention, a DM, or a thread follow-up. The same grammar also works, unmodified, on the CLI and as chat text over HTTP/MCP ingress — see reference: CLI.

Talking to it

Do thisTo
@switchboard <anything>start or continue a conversation (first message in a channel needs the mention; DMs and thread follow-ups never do)
@switchboard helplist every command
<group> helpusage for one command group, e.g. config help

Directives (inline, per-request only)

Placed right after the mention, before the request text:

DirectiveExampleEffect
agent:<name>agent:reviewrun this agent for this message only
model:<provider>/<model>model:openai/gpt-5use this model for this message only
effort:<low|medium|high|xhigh|max>effort:lowhow hard the model thinks this turn

Combine freely: agent:ship model:anthropic/claude-opus-5 effort:high in acme/api: fix #42.

Every command you can run in chat

One table per group. "Who can run it" is what the authorization policy decides for a Slack user holding each grant set (the narrowest admitted is named: anyone, agent:run:coding, repo:write, config:write, admins) — see reference: authorization. A registered command that is deliberately not exposed to chat (deploy all, deploy restart, env bootstrap, friction analyze, and the paged runs get|events|friction reads) is absent from this table and reachable on the CLI, over HTTP, or as an MCP tool instead.

help

CommandWhat it doesWho can run it
help showWhat Switchboard can do: agents, per-request directives, and every chat command.anyone

status

CommandWhat it doesWho can run it
status showWhich build this process runs: version, commit, when it was built and started, runs in flight, draining.anyone

config

CommandWhat it doesWho can run it
config show [--channel <string>]The effective agent/model/effort for you in this channel, the defaults, both scopes, and what is restricted.anyone
config set <channel|me> [--agent <string>] [--model <string>] [--models <object>] [--effort <low|medium|high|xhigh|max>] [--efforts <object>] [--channel <string>]Set the agent, model, or effort for a channel (gated) or for yourself; per-agent forms take --models.<agent> / --efforts.<agent>.anyone
config clear <channel|me> [--channel <string>]Drop every runtime override of a channel (gated) or of yourself; static config.yaml values show through again.anyone
config instructions <channel|me> [text…] [--channel <string>]Custom instructions for a channel (gated) or for yourself — advisory prompt content that never changes agent, model, or permissions.anyone

runs

CommandWhat it doesWho can run it
runs list [--status <active|finished|all>] [--agent <string>] [--channel <string>] [--since-ms <integer>] [--limit <integer>] [--before <integer>] [--before-id <string>]List runs (live and persisted, newest first) — metadata only, never message text.admins
runs stop <id> --mode <soft|hard>Request a live run to stop (--mode soft = finish the current step; hard = abort now). Records the caller as the actor.admins

review

CommandWhat it doesWho can run it
review abridge <id> [--model <string>] [--force] [--wait]Abridge a finished PR review's reading diff with meat.dev on the bot host (one Opus-class call) and store it on the run; idempotent — a stored one is answered, not recomputed.admins

friction

CommandWhat it doesWho can run it
friction report [--since-ms <integer>] [--limit <integer>] [--min-runs <integer>]Ranked recurring friction patterns across recent runs — read-only, GitHub never consulted.anyone
friction propose [--dry-run] [--top <integer>] [--min-runs <integer>] [--repo <string>]Run the self-improvement step: cluster recent friction, dedupe against open issues, file the top proposals as labeled issues.repo managers (repo:write)

repo

CommandWhat it doesWho can run it
repo listEvery onboarded resident repo with its live state, ref, sha, last refresh, and disk gauge.anyone
repo onboard <slug> [--ref <string>] [--test <string>] [--build <string>] [--install <string>] [--evict-coldest]Onboard a repo as an always-warm resident environment (provisions billable compute; admin-gated).repo managers (repo:write)
repo offboard <slug> [--dry-run]Tear down a resident repo: registry record, schedules, container, R2 snapshots (admin-gated; --dry-run plans only).repo managers (repo:write)
repo reconfigure <slug> [--ref <string>] [--test <string>] [--build <string>] [--install <string>]Change a resident's default branch and/or command table (admin-gated; takes effect on the next refresh/attach).repo managers (repo:write)
repo rebuild <slug> [--dry-run]Discard a resident's snapshot and reprovision it from scratch (admin-gated; --dry-run plans only).repo managers (repo:write)
repo test <slug> [ref]Run the repo's onboarded test command with zero model turns (needs coding-agent access; the ref must be a plausible branch).anyone granted agent:run:coding
repo build <slug> [ref]Run the repo's onboarded build command with zero model turns (needs coding-agent access; the ref must be a plausible branch).anyone granted agent:run:coding

memory

CommandWhat it doesWho can run it
memory list [query…] [--scope <me|org|repo|channel|all>] [--limit <integer>] [--repo <string>]Your own memory records and the shared org / repo / channel records, with ids — what influences your runs.anyone
memory forget <id>Soft-delete one memory record so it no longer influences any run (yours freely; shared org/repo/channel records need repo-management rights).anyone

mcp

CommandWhat it doesWho can run it
mcp list [--channel <string>]External MCP servers your runs in this channel can use — org-wide, this channel's, and your own — with state and agents; never a credential.anyone
mcp add <name> --url <string> [--scope <me|channel|org>] [--agents <string>] [--auth <oauth|bearer|none>] [--channel <string>]Register an external MCP server for yourself, this channel, or the org — auth is detected from the server; sign-in or a token happens on a one-time link, never in chat.anyone
mcp connect <name> [--scope <me|channel|org>] [--channel <string>]A fresh one-time link to sign in to an OAuth server or enter (or replace) a bearer server's token — only you can complete it; it expires in 10 minutes.anyone
mcp show <name> [--scope <me|channel|org>] [--channel <string>]One MCP server's entry plus a live probe of the tools it offers (names, read-only flags); never a credential.anyone
mcp remove <name> [--scope <me|channel|org>] [--channel <string>]Remove an MCP server you added and its stored credential (yours freely; channel ones need channel-config rights, org-wide ones admin rights).anyone

schedule

CommandWhat it doesWho can run it
schedule listEvery scheduled job (cron, UTC), which Worker fires it, its next firing, and what its last firing did.anyone

deploy

CommandWhat it doesWho can run it
deploy plan [--only <string>] [--skip <string>] [--affected] [--base <string>] [--force] [--allow-branch] [--wait-max <integer>] [--poll <integer>]The production deploy plan: checks, Worker order, preflight handling — computed, nothing executed. With --affected, also which Workers this tree actually needs deployed and why.admins

Where each group is explained

GroupThe narrative version
confighow-to: configure your defaults, explanation: config layers
mcphow-to: connect an MCP server
repohow-to: onboard a repo
runshow-to: watch a run
frictionexplanation: how OpenSwitchboard improves itself

Repo commands run no model turns

repo test and repo build run the repo's onboarded command and report pass/fail with zero model calls — an operation, not an agent run. Natural-language equivalents ("run the tests on main in acme/api") are recognized too and route to the same zero-turn operation.