aster remote bridges a messaging channel to the agent, so the agent in your
repository is reachable from your phone. The remote session uses the same
aster.yaml, API keys, and permission rules as the terminal on that machine.
Pick one channel:
- Telegram: works anywhere, free, only needs a bot token. Long-polling, so no public URL, port, or tunnel.
- iMessage: free and local, macOS only. Aster reads and sends through Messages.app on your Mac.
- Photon: bridges iMessage through a Photon agent server with signed webhooks, for when you already run Photon.
--mode, which sets how much the agent may do without asking:
manual (default) asks before every edit and command, auto applies your
permission rules without prompting. plan, edit, and yolo are also
accepted. See Permissions.
Telegram
-
Create a bot. Message @BotFather, send
/newbot, and follow the prompts. It gives you a token that looks like123456789:AAH…. -
Start the bridge. From the repository you want the agent to work in:
Or pass the token directly with
--token. -
Allow your account. Until you allow at least one user, the bridge
ignores every message. Send your bot any message, then restart with your
Telegram user id:
--useris repeatable, or setASTER_REMOTE_USERS=123,456for several. - Message the bot. Replies stream into the chat as they run. Approval prompts arrive as inline buttons you tap. Long output is sent as a document instead of flooding the chat.
- Transport is long-polling against Telegram. The machine running the bridge only makes outbound requests, so nothing to expose.
- One bot token serves one poller. Two processes polling the same token split updates randomly, so the bot answers from whichever wins the race.
iMessage
-
Grant Full Disk Access. Aster reads Messages.app’s
chat.dbto see inbound messages. Give your terminal app Full Disk Access in System Settings, Privacy & Security, or the database is unreadable. -
Start the bridge. macOS only. From the repository you want the agent to
work in:
--senderis an iMessage handle, email or phone, and is repeatable. Or setASTER_REMOTE_USERS=+15551234567,you@me.com. - Allow your handle. With no senders allowed, the bridge ignores every message. Message the chat once, then restart with your handle as above.
- Message the agent. Aster polls the chat every few seconds and replies through Messages.app as plain texts: no markdown tables or long code blocks. Approval prompts arrive as plain questions; you answer yes/no/always in text.
Photon
Photon’s macOS agent server watches iMessage and POSTs signed webhooks to Aster; replies go back through Photon’s send API.- Run Photon and get the webhook signing secret from its dashboard.
-
Point Photon’s webhook at Aster. The listener binds
127.0.0.1on port8799by default, so the webhook URL ishttp://127.0.0.1:8799unless you change--port. -
Start the bridge:
Or set
ASTER_PHOTON_SECRETandASTER_REMOTE_USERSinstead of the flags. - Message the agent. Same plain-text replies and yes/no/always approvals as the native iMessage bridge.
Environment variables
Whoever can message the bot or chat can run the agent with your keys, so
always set
--user / --sender and keep the default manual mode until you
trust the setup.