Motion

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).

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.

Dashboard → Channels → WhatsApp → Link.

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

CommandWhat it does
/helpThe command menu.
/statusWorkspaces running · current target · active model.
/whoamiYour account, and where this chat is pointed.
/use <name>Point this chat at a workspace.
/global · /accountPoint 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.
/resetClear this conversation's history.
/mute · /unmuteStop / resume replies (messages are still saved — handy for notes).

Workspaces

CommandWhat it does
/workspaces · /wsList 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

CommandWhat it does
/deploysList 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=valueSet an env var (asks first).

Domains & vault

CommandWhat it does
/domainsList managed domains.
/dns <domain>DNS overview for a domain.
/vaultList vault item names + types. Values are end-to-end encrypted and never shown in chat.

Automations

CommandWhat it does
/tasksNumbered 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

CommandWhat it does
/sessionsNumbered list of active logins.
/revoke <# or all>Sign out a session (asks first).
/eventsRecent 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:

TopicDefaultExample
deployson✅ Deploy api succeeded · 🔴 Deploy web failed — /logs web
workspaceson🟢 Workspace dev is online · 🔴 dev went offline
securityoff🔑 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 /read arrive 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.