Channels
Run your whole Motion account from a chat app — WhatsApp, Telegram, Discord, Slack, Matrix. Commands, automations, notifications, screenshots, and voice.
Connect Motion to a messaging app and run your entire account from a chat — check status, start workspaces, tail deploy logs, grab a screenshot, or set up a recurring report. No dashboard needed. Motion also messages you first when things happen (a deploy finishes, a box goes offline).
Set channels up in Dashboard → Channels. WhatsApp is the primary channel; Telegram · Discord · Slack · Matrix work too (bot token).
Link WhatsApp
WhatsApp uses the WhatsApp Web multi-device protocol — no Business API or extra number. The "bot" is your own WhatsApp account: you talk to Motion from your note-to-self chat, and it only ever listens there — never your other conversations.
Open the link screen
Dashboard → Channels → WhatsApp → Link.
Scan the QR (recommended)
Click Scan QR code, then in your phone open WhatsApp → Linked Devices → Link
a device and scan it — exactly like web.whatsapp.com. This is the most reliable
way.
Can't scan (e.g. you're on the same phone)? Enter your number and use Get pairing code instead, then type the 8-character code in WhatsApp → Linked Devices → "Link with phone number instead."
Message yourself
Open your note-to-self chat (New chat → tap yourself, "(You)") and send
/help. Your own linked chat is trusted automatically — no pairing code needed.
Pairing code format: use the phone's exact WhatsApp number in full international
form — country code, digits only, no +, no leading 0 (e.g. US
15551234567, UK 447911123456, Pakistan 923001234567). If it still won't link,
use the QR — it's more reliable. Don't spam "Get a new code"; repeated
attempts get the number temporarily rate-limited by WhatsApp.
To disconnect, open the WhatsApp panel and Unlink — this removes the linked device on WhatsApp's side and wipes the session, so a re-link starts clean.
Other channels (token bots)
For Telegram · Discord · Slack · Matrix, create a bot and paste its token in Dashboard → Channels. Unlike your WhatsApp self-chat, other channels require a one-time pairing code the first time (the bot has full account power, so it verifies you first).
How it feels
- Instant acknowledgement. On WhatsApp, your message gets a ⏳ reaction the moment it's received, "typing…" while Motion works, then ✅ when done (or ⚠️ on error). No silent waiting.
- Two ways to drive it. Type a slash command for a fast, exact action, or just talk — free text goes to the account brain, which can do anything the commands do and more.
- Everything is phone-friendly. Long logs and files arrive as documents, screenshots as images, and replies are formatted for chat (no walls of markdown).
Talking to Motion: brain vs workspace
Each conversation is pointed at a target, which you set with a command:
- Account brain (
/global, the default) — the same assistant as the dashboard header. It sees and acts across every workspace, deployment, domain, and setting. Best for "what's running?", "spin up a box", "deploy the api". - A workspace (
/use <name>) — messages run inside that box's own agent. Best for hands-on work in one project.
Routing is per conversation, so /use dev in one chat and /global in another
work side by side.
Commands
Once linked, drive Motion with these. Most work with no AI model configured — they're deterministic. Anything without a leading slash is sent to the current target.
Context
| Command | What it does |
|---|---|
/help | The command menu. |
/status | Workspaces running · current target · active model. |
/whoami | Your account, and where this chat is pointed. |
/use <name> | Point this chat at a workspace. |
/global · /account | Point this chat at the account brain. |
/model [<provider> <id>] | Show or set the model (/model anthropic claude-opus-4-8). |
/agent [<name>] | Show or pick the agent that answers here; /agent default clears it. |
/autonomy <ask|safe|auto> | How much Motion confirms before changes — see Safety. |
/reset | Clear this conversation's history. |
/mute · /unmute | Stop / resume replies (messages are still saved — handy for notes). |
Workspaces
| Command | What it does |
|---|---|
/workspaces · /ws | List workspaces + state. |
/start <name> · /stop <name> | Boot / stop a cloud workspace. |
/open <name> | Get the IDE link. |
/rm <name> | Delete a workspace (asks first). |
/run <name> <cmd> | Run a shell command inside a workspace (long output arrives as a file). |
/read <name> <path> | Read a file (inline if short, else as a document). |
/shot <name> [url] | Screenshot the workspace's browser (optionally navigate to a URL first) → sent as an image. |
/ports <name> | Listening ports. |
/connect <name> | The one-line command to attach a self-hosted machine. |
Deployments
| Command | What it does |
|---|---|
/deploys | List deployments + status. |
/logs <name> [lines] | Recent logs (long logs arrive as a .txt document). |
/env <name> | Show env var names (values are masked, never printed). |
/env <name> KEY=value | Set an env var (asks first). |
Domains & vault
| Command | What it does |
|---|---|
/domains | List managed domains. |
/dns <domain> | DNS overview for a domain. |
/vault | List vault item names + types. Values are end-to-end encrypted and never shown in chat. |
Automations
| Command | What it does |
|---|---|
/tasks | Numbered list of your standing requests. |
/task cancel <name or #> | Remove one. |
/task pause <name or #> · /task resume <name or #> | Pause / resume. |
/task run <name or #> | Run one now. |
/notify [<topic> on|off] | Manage proactive notifications. |
Account
| Command | What it does |
|---|---|
/sessions | Numbered list of active logins. |
/revoke <# or all> | Sign out a session (asks first). |
/events | Recent account activity. |
Lists that you act on are numbered — /tasks then /task cancel 2, or
/sessions then /revoke 3. You can always use the name instead of the number.
Automations (standing requests)
Tell Motion something once and it runs forever. In plain English:
"Every morning at 9, message me my workspace status." "Give me the Bitcoin price every 30 minutes on WhatsApp." "Daily, pull my repo, run the tests, and only ping me if something's red."
Motion creates a scheduled task, runs it on time with its full toolset (web,
browser, workspaces), and pushes the result to your chat automatically — you
don't need any messaging integration. Manage them with /tasks and
/task pause|resume|run|cancel <name or #>.
Schedules can be every 30m / 6h / 1d, daily at HH:MM, weekly Mon 09:00, or
one-off in 20m. Times respect your account timezone (set it in your profile).
Proactive notifications
Motion messages you first when things happen. Manage with /notify:
| Topic | Default | Example |
|---|---|---|
deploys | on | ✅ Deploy api succeeded · 🔴 Deploy web failed — /logs web |
workspaces | on | 🟢 Workspace dev is online · 🔴 dev went offline |
security | off | 🔑 New login · 🔁 Connect token rotated |
Toggle a topic with /notify deploys off / /notify security on. /notify alone
lists the current settings.
Safety: confirmations & autonomy
The bot has full account power, so destructive actions ask before they run —
whether you use a command (/rm, /revoke, /env … KEY=…) or just tell the brain
"delete the dev workspace." You'll get a prompt; reply yes to proceed or
no to cancel.
Set how much a conversation confirms with /autonomy:
- ask (default) — confirm every change.
- safe — run routine changes automatically, confirm only destructive ones.
- auto — no confirmations (it still tells you what it did).
Secrets are never printed to chat: the vault shows names only, and deploy env shows masked values.
Media
- Screenshots —
/shot <workspace> [url]opens the workspace's browser (optionally navigating to a URL first) and sends back an image. - Files & logs — long command output,
/logs, and/readarrive as documents instead of walls of text, so they're easy to read and save.
Voice notes
Send a voice note to your note-to-self chat and Motion transcribes it and acts on it like a typed message.
Voice transcription needs a speech-to-text provider. Set MOTION_STT_URL,
MOTION_STT_KEY, and MOTION_STT_MODEL (e.g. Groq Whisper —
https://api.groq.com/openai/v1/audio/transcriptions, model whisper-large-v3),
or use an AI provider whose key supports /audio/transcriptions. Until then, a
voice note gets a friendly "please send text" reply.
Pairing other chats
Your own WhatsApp note-to-self is trusted automatically. Other senders and channels (Telegram, a teammate's chat, etc.) must pair once — the bot has full account power, so it verifies first.
Get a code
Dashboard → Channels → Pair a device → a 6-digit code that expires in a couple of minutes.
Send it to the bot
Message the code to the bot from the chat you want to link.
Paired
You'll get ✅ Paired and can use every command. Manage paired devices from the same panel.
Agents
The persona that answers — its instructions, model, tools, skills, and memory — is
set by the active agent. Pick a per-chat agent with /agent <name>, or manage
agents (and the account default) in Dashboard → Agents.