Off the grid, still one text from Claude.

Uplink turns an iMessage, even one sent over satellite with no data, into a Claude Code run on your Mac.

The California coast at night from the International Space Station, city lights glowing orange under a thin band of atmosphere

Two real texts, answered.

Replies from September 27, 2026, exactly as Uplink sends them: plain text, marked with a satellite.

When will the padres play on Thursday? And what's the nfl scores today?

🛰 Padres: no regular-season game this Thursday - they clinched a playoff spot and are in the NL Wild Card Series vs the Cubs; Game 3 (if needed) is set for Thursday Oct 1, time TBA. NFL today (Sun 9/27) early games: Steelers 30, Bengals 27; Lions 31, Jets 24; Jaguars 35, Patriots 6; Bills 24, Chargers 16; Browns 21, Panthers 18. More games still to kick off later today.

Two web searches, 14 seconds.

What changed in ~/Code/stacks today? Three short lines.

🛰 Today: fixed CMS article images (Medium-style publish + stx script left alone), tightened typecheck so @stacksjs subpaths resolve to source not stale dist, fixed noUncheckedIndexedAccess in image reader, and cut releases v0.75.7 and v0.75.8.

Ran git log inside the repo, 14 seconds.

How it works

From a text to a Claude Code session, and back.

No server in between. Your Mac reads the message, does the work and answers through Messages.

  1. Text

    Message yourself from your iPhone. iMessage over satellite needs no cell or Wi-Fi signal.

  2. Read

    Uplink watches the Messages database on your Mac and picks up texts from handles you allow.

  3. Run

    Claude Code runs headless on your Claude plan, inside the repository your text names.

  4. Reply

    The answer comes back as plain text, split into at most three messages.

Built for a thin link and a real machine.

The Milky Way above a band of orange airglow, photographed from the International Space Station

Short answers, few texts.

Plain text, no markdown. A long reply is split into three texts, and the rest waits until you send more.

Works inside your repos

Name a path and the run starts there, with that repository's CLAUDE.md, hooks and settings. Follow-ups continue the session.

Five words it always answers

status
what it is working on
stop
cancel the task and the queue
new
start a fresh conversation
more
the rest of a long reply
ping
check it is alive

Nobody else can use it

Only one-to-one chats with handles you allow. Group chats are ignored, and only Uplink.app gets Full Disk Access, not your terminal.

Set it up in four steps.

You need a Mac signed in to Messages, the Claude Code CLI and a Claude plan. Run these from the Uplink app directory.

Install

Builds Uplink.app and starts it at login.

./buddy uplink:install

Grant access

In System Settings, Privacy & Security, Full Disk Access, switch on Uplink. Nothing else gets it.

Sign in

Mint a long-lived token for your Claude plan, then store it from the clipboard.

claude setup-token
./buddy env:set CLAUDE_CODE_OAUTH_TOKEN "$(pbpaste | tr -d '[:space:]')"

Text it

Send yourself ping. The first reply asks once to control Messages.

Questions

Does texting yourself work over satellite?

It depends on how your iPhone routes a message to your own number, so try it once before you rely on it. If it does not arrive, sign the Mac into a second Apple ID and text that instead.

Do I need an API key?

No. Uplink runs the Claude Code CLI on the plan you are already logged into, such as Claude Max, through a token from claude setup-token.

What can it do on my Mac?

Anything Claude Code can: search the web, read and edit files, run your tests. That is why only one-to-one chats with handles you allow can reach it.

What does it cost?

Nothing on top of your Claude plan. The dashboard shows what each run would have cost at API rates, in cents, so you can see what you use.

What happens while my Mac sleeps?

Nothing, so Uplink keeps it from idle-sleeping while it runs. A laptop with its lid closed still sleeps unless it is on power with a display attached.