Control your agents from your phone.

Pair your phone over Tailscale with a one-use link. Then follow your agents, answer what they ask, and revive or start them, while they keep running on your computer. The companion runs in your phone’s browser, and a native iPhone app is coming.

Settings

Remote access
Allow access from other devicesYour devices on your tailnet can connect.
Connect a phoneUse Hansard from your phone through a private connection.
Guided setup

Projects this phone can access

atlasrelayharbor
Connected: My phoneAccess is limited to the selected projects. Change them under Allowed devices.RevokeDone
Claude Code approvals on your phoneOffer terminal approvals to your connected phone for up to 15 seconds, then use the terminal prompt.
AgentsStudio MacConnected
Active 5Paused 3

Needs you2

Choose the small screen layoutNeeds youatlas Now
Run the migration dry runNeeds yourelay 1m ago

Running2

Version the cache keysWorkingatlas Now
Trace a flaky login testWorkingrelay 2m ago

Done today1

Add delivery diagnosticsIdlerelay 9:12 AM
Your agents, with you

Connect to the computer that shared this link. Your work stays on that computer.

Answer what they ask.

Questions and approvals from your agents wait in Inbox. Your answer settles them on the computer, and the agent goes back to work.

Use the phone app
InboxStudio MacConnected

A place for what needs you.

Choose the small screen layoutatlas Codex

Codex has a question

LayoutWhich layout should the small screen use?

AnsweredCompactCodex has your answer

Run the migration dry runrelay Claude Code

Claude Code wants to run a command

node scripts/migrate.js --dry-run

Claude Code approvals, on your phone.

Turn them on, and a Claude Code permission request waits up to 15 seconds for your phone. With no answer, Claude Code asks in its terminal as usual.

Turn on phone approvals

claude ~/projects/relay

> Dry-run the new migration before we ship it.

I'll run the migration in dry-run mode first.

Bash(node scripts/migrate.js --dry-run)

⎿ Dry run: 3 tables checked, 0 rows changed

The migration is safe to run. No rows would change.

InboxStudio MacConnected

A place for what needs you.

Run the migration dry runrelay Claude Code

Claude Code wants to run a command

node scripts/migrate.js --dry-run

ApprovedAllow onceSent to Claude Code

Read every conversation.

A conversation reads as it does on the Mac: your prompts, the agent’s replies, and its work folded into one line that opens to every step.

Read on the phone
Version the cache keysatlasWorking

Search still returns sessions we deleted last week. Find out why.

  1. SearchedcacheKey src/
  2. Readsrc/cache.ts
  3. Readsrc/index/read.ts
  4. Ranpnpm test cache

A cache key is only the session id and a hash of its inputs, so rows from before the schema change still match.

Copy codereturn `${SCHEMA_VERSION}:${id}:${hash}`;
Message the agent…

Revive or start an agent.

Revive a paused agent with its own settings, or start a conversation in a project you shared. Pause and Stop are in each agent’s actions.

Agent actions
AgentsStudio MacConnected
Active 5Paused 3

relay3

Bound retry backoffPaused 20m ago
Review the worker shutdown pathPaused 1h ago
Stream parser cleanupPaused yesterday
New conversationStudio MacConnected

Start something on your computer.

Start conversation

The agent runs on your computer, with its configured permissions.

Use per link
1
Each connection link connects one phone. Remove a phone any time under Allowed devices.
Until a link expires
10 min
Then make another one in Settings, Remote access.
Ports open to the internet
0
Tailscale Serve reaches only the devices on your tailnet.
For a phone approval
15 s
Then Claude Code asks in its terminal.

More of Hansard

Put it on the record.

Download Hansard