Remote control

Drive a running Ambient Desktop from Telegram, owner-authenticated and preview-then-approve, with anti-replay protection. Check status, change settings, and run work away from the window.

Ambient Desktop is a workstation you normally sit in front of. Remote control lets you reach a running instance from a messaging app instead: check status, change supported settings, run work, and handle approvals without sitting at the window, so work keeps moving while you are away from the machine. Telegram is the first supported provider; the gateway is built to add more.

Remote control does not turn Ambient into a server daemon. The desktop app must be running with its window open; what it removes is the need to be at the window. Every remote action is owner-authenticated, and anything that changes state is approval-gated, the same review posture Ambient applies to in-app work.

How a remote command flows#

A message does not run directly. It travels through the same preview-then-approve path the agent uses for any consequential action, with an owner check at the front.

  1. Owner authentication#

    Each remote binding is tied to a specific owner account on the provider. Messages from anyone else are not treated as commands, so a stray chat cannot drive your machine.

  2. Preview#

    The incoming command is parsed and previewed first: Ambient shows what it would do and flags any blockers before anything is applied.

  3. Approval#

    Commands that change state are approval-gated. You confirm from chat (for example, approve request 1) and only then does the action apply. Read-only status and navigation do not need approval.

  4. Apply and relay#

    The approved command runs against the live runtime, and the result (status, queued events, or the outcome) is relayed back to you in the same conversation.

Remote commands cannot skip approvals. They flow through the same preview-then-approve path as in-app actions.

Providers#

The gateway is a provider-agnostic surface, so new messaging apps can be added behind the same owner-auth and approval model. Only Telegram is wired end to end right now; every other provider carries a label that is ahead of its implementation rather than a claim that it works.

Provider Status Detail
Telegram Supported The one fully wired provider. A local bridge connects to Telegram with your own API credentials, an owner handoff binds your account, and Ambient polls for your commands. Status reads, settings changes, project/chat/workflow actions, and approvals all work through it.
Signal Planned Scaffolding and a contract exist, but the provider is intentionally disabled: it reports as unavailable and bindings are refused, until a reviewed local-bridge adapter lands. Ambient can plan the work, but cannot operate Signal yet.
WhatsApp, Matrix, and others Roadmap The goal is many providers through the same gateway. Each one needs a reviewed adapter for owner auth, inbound delivery, and replies before it is offered.

What you can do remotely#

Ambient keeps an internal ledger of which actions are ready for remote use, which are partial, and which are still planned, so the agent never promises a remote capability it cannot actually perform. Today the ready set covers the common operating loop:

  • Read status and navigate: runtime status, projects, chats, workflow agents, and pending approvals, all without the window.
  • Change supported settings: voice, speech input, generated-media playback, search routing, chat mode, thinking level, and planner finalization.
  • Run work: create and switch projects, create chats, and create, run, compile, approve, retry, resume, or cancel workflow agents.
  • Handle approvals: review and approve or deny pending permission prompts, and revoke active grants, from chat.

Setup at a glance#

Telegram setup is owner-driven and deliberately explicit. Ambient provides an activation plan and walks the steps rather than flipping a single switch.

  1. Bring your own Telegram credentials#

    The local bridge connects to Telegram using your own Telegram API credentials. They stay on your machine; Ambient runs the bridge as a local process.

  2. Bind your owner account#

    An owner handoff links the conversation to your account, so Ambient knows which sender to trust as the owner.

  3. Start polling with a freshness mark#

    Ambient polls the owner chat for commands. Activation passes a freshness timestamp, so old unread messages from before setup are treated as stale instead of being replayed as commands. That is the anti-replay guard.

Boundaries and current limits#

The Developer Preview scope, stated plainly:

  • The desktop app must be running with its window open. This is remote control of a live instance, not a headless server you can SSH into.
  • Telegram is the only working provider; Signal is planned and other providers are on the roadmap.
  • Only a subset of settings are remotely writable today; provider selection, appearance, API keys, and some others are read-only or not yet exposed.
  • Polling freshness depends on activation passing the timestamp correctly. The activation plan handles it, but account for it when debugging why a message was ignored.
  • Every state-changing command is approval-gated by design, so remote operation is interactive, not fully unattended.

FAQ#

Can Ambient run on a headless server with no display? Not in this preview. Remote control assumes the desktop app is running on your machine with its window open. It removes the need to interact with the window, not the need for the app to be running.

Can someone else message the bridge and control my machine? No. Commands are owner-authenticated against a specific provider account, and state-changing actions require your approval from chat. Messages from non-owners are not treated as commands.

Is Signal supported? Not yet. The provider is scaffolded but intentionally disabled and reports as unavailable. Ambient can plan reviewed Signal support, but cannot operate it today.

Do remote commands skip the usual approvals? No. Remote commands flow through the same preview-then-approve path as in-app actions. Read-only status is free; anything that changes state is gated.

Keep going#