iPhone · macOS & Windows

VS Code and Claude Code, in your pocket.

It attaches to a session you already have open. Nothing is forked or copied — type on your phone and it lands in the same conversation you are looking at in VS Code, on the computer you left it running on.

you answer every approval · no VPN · no certificate · nothing in an app store

34% left payments-api · 21:47
resumed · 3 files in context

The retry test passes locally — the backoff was resetting on every attempt.

21:41
working…

Bash

~/Projects/payments-api
ssh staging-01 \
  'systemctl restart api'

Permission mode

What Claude may do without asking you first.
Manual
Edit automatically
Plan
Auto

Whatever you start from your phone is open in VS Code when you sit down.

Open a project from the train and its Claude Code tabs come back with it. Start something new and it is a tab in VS Code, waiting for you when you sit down. Nothing to turn on before you leave, and nothing to go and find afterwards.

from your phone, atdesk can…
reopen a project — and its Claude Code tabs come back with it
reach any session already open on the machine, set up in advance or not
open a project, or a whole new window
read a session off the machine, including ones it has never connected to
leave the work as a tab in VS Code, waiting for you

every line above is something atdesk does — we make no claim about what other tools do or do not

One evening, without going back to your desk.

it needs a decision

Your phone buzzes.

Not a summary — the thing it is actually stuck on, with how much context is left so you know whether it can even finish. You read the reasoning, the command, and the diff it wants to write, then you allow it. The turn carries on where it stopped.

atdesknow payments-api needs a decision

Bash · ssh staging-01 · 34% context left

a push, not a spinner

34% leftpayments-api

I need to restart the staging worker to confirm this.

21:47

Bash

~/Projects/payments-api
ssh staging-01 \
  'systemctl restart api'

exactly what it wants to run

the boring part starts

You stop approving every line.

The next forty minutes are migrations and tests — nothing you want to approve one line at a time. Loosen it to Edit automatically so it stops asking about every file, and put it back to Manual the moment it matters again. You are still the one reading it.

32% leftpayments-api
resumed · 3 files in context

Running the staging migration now — this is the long part.

21:52

Permission mode

What Claude may do without asking you first.
Manual
Edit automatically
Plan
Auto
on the platform

You start a second one, and watch it go.

You are not limited to answering the one that called you. Open a new conversation in a project that is already open, or a whole new VS Code window, on the computer at your desk — then watch it start, and steer it from the platform.

88% leftnew session
resumed · 3 files in context

Running the staging migration now — this is the long part.

21:52

Start something new

These run on the computer — they open windows and conversations there, and then follow them.
New conversation in an open project
payments-apilive
checkout-web12
Open a project in a new window
infraalready open
billing-worker
next morning, at the office

It follows whichever computer you are at.

Your laptop, the machine in the office, a Windows desktop — one icon on your phone, and every conversation on each of them. Or set it to Auto and stop thinking about which one you are sitting at.

71% leftMac mini
resumed · 3 files in context

Running the staging migration now — this is the long part.

21:52

Switch conversation

Switching moves this computer too — it is one shared view, not a filter.
Computers
MacBook Protap to switch
Mac miniconnected
Windows desktoptap to switch
Auto — follow whatever I'm using
payments-api · 4 tabs
retry backoff fixworking
webhook replayidle

Back at your desk, it is one number in the status bar.

One figure in the VS Code status bar — how much context the session has left. Everything else is behind it.

Sign In((•)) 57%
payments-api Context: 57% left — 393,318 / 920,000 This window: payments-api Phone: reachable through atdesk — 1 phone connected Service: running (loopback only) Phone typing: enabled (CDP 42211) Click for actions
payments-api — reachable through atdesk — 1 phone connected
Stop serviceAlso removes the login item
Restart service
Turn off the debugging portCurrently 42211 — disables phone typing
Show log
((•))Pair a phone (atdesk)No VPN, no certificate — works from anywhere
Back up the identity keyEncrypted. Every paired device pins this key

When a session runs out of room, the next one interviews it.

First you can see it coming — the number in the corner is how much room the session has left, counted rather than estimated. Then you can do something about it: a new session reads the old one's record and carries the reasoning across. Reading costs that session nothing — no message, no context spent, no interrupted turn — and it still works after that session has stopped.

6% leftretry backoff fix
resumed · 3 files in context

The backoff was resetting on every attempt — the timer lived inside the catch.

23:22
Editretry.mjs
Changed 1 line
const started = Date.now();

Fixed, and the staging run is clean — 12 passing, 0 failing.

23:41

Start something new

These run on the computer — they open windows and conversations there, and then follow them.
New conversation in an open project
payments-apilive
checkout-web12

/atdesk-handover parks it · /atdesk-consult picks it up

vsr peer

Read any other session on the machine — including one that has finished. It costs that session nothing.

vsr ask-session

Put a question into another live session and submit it. With the atdesk skills installed, this one asks you to approve before it writes.

vsr new-session

Open a brand new session as a tab, in a project already open on the computer.

These are for Claude to run inside a skill, not for you to type. The commands are the small part. What atdesk actually installs is the practice: which session is which, how to tell two tabs of one project apart, and when to read the record rather than interrupt someone. /atdesk-consult and /atdesk-handover are plain markdown — read them, fork them, write your own.

If we get breached, you lose nothing.

There is no account to create and no password to choose, so there is no password database to leak. Your phone and your computer hold the keys between them, and your code never leaves your machine.

our relay is breachedSealed frames. The keys were never there to steal.
this website is breachedMarketing pages. It holds no keys and cannot reach your machine.
we turn hostile, or are compelledThe same sealed frames. We cannot decrypt what we have no key for.
a password database leaksThere isn't one. No accounts, no passwords, nothing to leak.
someone is on your wi-fiNothing. Loopback only — no LAN port, no tunnel, no forwarded port.
your phone is stolenRevoke it from your computer. Immediate, and nobody can undo it.
a bad update is servedIt refuses to install. Signed, and checked against a key your machine already holds.
your email is breachedYour billing page — and nothing else. It cannot read a session, type into one, or add a computer.
we are compelled for recordsYour billing record, held by Stripe — an email and which computers are on your plan. Never a session.

green: they get nothing useful · amber: they get something, and this is exactly what

// the relay, forwarding a frame between phone and computer // `f` is opaque. It is not decoded here and must never be. send(peer, { t: 'f', f: body.f })

One plan. Everything in.

No tiers, no per-seat maths, no add-ons. New features land on the plan you are already on.

Cancel in one click. From Stripe, any time. Nothing to email us about.
A broken month is free. If a Claude Code release breaks us before we catch up, you are not paying for it.
Nothing to create. No account, no password. Checkout hands you a code and that is the whole signup.
Leaving. vsr uninstall removes the login item. Taking off the transport daemon, the local files and your slot on the relay is more than one command today — we would rather say that than promise otherwise.
£8a month, inc. VAT · cancel any time
  • Up to 5 of your own computers, macOS or Windows
  • As many phones as you carry — up to eight connected at once
  • Unlimited sessions, windows and tabs
  • The skill commands, push notifications, every update
Start free for 14 days

card required · cancel in one click · tax at checkout

Setting it up takes about five minutes.

You need VS Code with Claude Code, opened at least once. There is one command, and it tells you what it is doing before it does any of it.

1

Pay, and get a code

It appears on the next screen, and in your inbox.

2

Run the line that came with your code

We do not print it here on purpose. The command carries a digest, and a digest is only a real check if it reached you by a different route from the download — so it travels with your code, not on a public page. It checks your machine first and unpacks nothing until the digest matches.

node v22.14.0 VS Code is installed Claude Code has run here digest matches

Nothing is unpacked until it does. Then it stops and asks you — about the relay, and about the debugging port.

3

Scan the code on your screen

Your phone reads it, you check the same fingerprint appears on both, and you add atdesk to your home screen. That is the pairing done for good.

on this computer58fc 02c5 112a
on your phone58fc 02c5 112a

If those two do not match, something is between you — so you stop. That check is the whole of the trust decision, and you make it once, in front of both screens.

no account · no VPN · no certificate to install

Questions people ask first.

Is this VS Code on my iPhone?

Not an editor on your phone — nobody has made that work well. It is the Claude Code panel inside the VS Code you already run, mirrored to your phone so you can read it and type into it. The editing still happens on your computer, where your files are.

Is there a Claude Code app?

Yes — Anthropic's own app has Remote Control, which continues a session you connected from your machine. atdesk is the other half: it reaches whatever is already open, opens projects and windows for you, and rejoins a conversation you had closed. Add it to your home screen and it behaves like an app, with no app store involved.

Does it start a new session or use the one I have open?

The one you have open. atdesk attaches to the session already running in VS Code, so it keeps the context that session has built up — and because it drives the editor rather than a connected process, it reaches the conversations you never set up for it, and the ones you had closed.

Can I control Claude Code remotely, over mobile data?

Yes, from anywhere. No VPN, no tunnel, no port forwarding, and nothing listening on your home network — your computer makes an outbound connection and everything between it and your phone is sealed end to end.

Does it work on Windows?

Yes — macOS and Windows, same install command, same phone app. One subscription covers up to five of your own computers.

Can I leave it running unattended overnight?

No, and we will not help you to. atdesk is built so a person answers every approval — that is what keeps it inside Anthropic’s terms for your Claude subscription, and it is why there is no scheduler in here. What it removes is the need to be at your desk, not the need to be in the loop.

Do I need my own Claude subscription?

Yes. atdesk is an independent tool that drives Claude Code; it does not include or resell Claude.

What it installs, and what could go wrong.

Everything atdesk puts on your computer, and the one risk we cannot engineer away.

a background serviceStarts at login, listens on loopback only. Something has to read the session and type into it. Nothing on your network can reach it.
a local debugging portOptional — but without it you can only read: no typing, no approvals, no switching. Say no and everything else still works — you can read the session and get notifications. Setup asks in plain words rather than switching it on quietly.
a VS Code extensionThe status bar gauge, and the menu behind it. It stays off until you trust the folder.
the risk we can't removeClaude Code changes, and a release can break us before we catch up. We publish the version we are tested against, and we do not charge you for a month that was broken. tested against 2.1.231

Go and have dinner. Stay in the loop.