New in v3.1. Requires a Coding Plan on the dashboard side — without
one,
/dashboard/code shows a short upsell in place of this instead of hiding the page.ai.tomdacat.com/dashboard/code — connection status and a live transcript of what the agent is doing, visible from anywhere you’re logged in, not just at the machine running Studio. It’s not read-only: you can send a message into the session from the dashboard too, and optionally let the dashboard approve tool calls right alongside Studio itself.
Turning it on
A Remote Control section in Settings, off by default — a plain Off/On toggle, same segmented-control pattern as Budget Mode. The/remote-control slash command jumps straight to it.
A live connection-status dot sits next to the toggle, and a second copy of it lives in the chat header itself (beside the credits readout) so you don’t have to leave the conversation to check it:
- Green — connected, heartbeating normally.
- Yellow — connecting (the brief window between turning it on and the session actually registering).
- Red — disconnected.
What shows up on the dashboard
ai.tomdacat.com/dashboard/code lists every session currently reporting in, each with a connection dot and a last-seen time. Opening one shows a live (polled, roughly every few seconds) transcript: your messages, the agent’s replies, and a collapsible trace of tool calls grouped together rather than one card per call.
A session only counts as connected based on how recently it last heartbeated, not a status flag
that could go stale — closing Studio (or turning Remote Control off) always reflects
accurately within a few seconds, it never has to wait for a cleanup job to notice.
Sending a message
The composer on a session’s dashboard page queues a plain text message, delivered the next time the plugin heartbeats (a few seconds, not instant — this is polling, not a live socket). It behaves exactly like typing it into the chat box in Studio: it becomes a real turn, the agent responds, tool calls run through the normal local permission gate. Only one message can be in flight at a time — the composer disables itself with “Waiting for Studio to pick up the last message…” until it’s delivered, so you can’t queue up several and lose track of ordering.Remote tool approval
Normally, the permission gate only ever asks inside Studio. With remote approval on, a mutating tool call waiting on Ask also shows up on the dashboard as a Deny / Always Allow / Allow card — including a real before/after diff foredit_script, the same one the local diff widget would show. Whichever side decides first wins; the other becomes a safe no-op instead of double-firing.
While this is on, dashboard access is functionally equivalent to Studio access for approving code execution — anyone who can reach your dashboard can approve execute_luau. Weigh that the same way you’d weigh sharing your Studio session itself.
What’s deliberately not here
- Remote Control only ever sends the settled version of things — a full reply once it’s done, a tool call once it’s started and once it’s finished — not the live token-by-token stream. The dashboard isn’t meant to be a second copy of the chat UI, just a faithful, slightly-behind view of it.
- Turning off Remote Control (or closing Studio) stops the session from accepting new messages or approvals immediately; anything already queued when that happens is simply never delivered rather than applied later.