Capture. Encrypt. Reinstate.

Start on one device.
Continue on another. Same session.

Move encrypted Claude Code or Codex sessions between macOS and Windows. Reinstate encrypts the session locally, then stores it in your own S3 or R2 bucket.

curl -fsSL https://reinstate.dev/install.sh | sh
Available now: Claude Code · CodexmacOS ↔ Windows
  1. 1CaptureSelect a local session
  2. 2EncryptSeal it before upload
  3. 3ReinstatePull and resume natively

rein is the CLI for ReinstateApache‑2.0one Go binaryyour bucket, your keysLast reviewed

One room, two machines, 23:41 to 23:47A desk at night. Four layers of portable session state — paths, metadata, messages, and the session record — lift out of the desktop, seal into one encrypted Reinstate checkpoint, and drop back into a laptop on the table across the room with every path remapped.ses_7f3a⏸ 23:41pathsmetadatamessagessessionses_7f3ases_7f3a▶ 23:47pathsmetadatamessagessession$ rein push$ rein pull
02:13 · the plan isn't working

Git has the code and its history.
It does not have the conversation.

Git still handles your code. Reinstate carries the encrypted Claude Code and Codex session state Git leaves behind, remapping project paths for the machine you are on.

Deeper into the office: the planning cornerThe floor from the hero scene continues into a corner of the office: an easel whiteboard covered in crossed-out workarounds — scp, Dropbox, rsync — a bookcase holding old backup drives, a couch with a coffee table and a warm mug, moving boxes, and a cable that snakes in from the desks above and ends unplugged in the middle of the floor.get session → other machinescp -r ~/.claude/ dropbox the folder rsync + cron BACKUPSFRAGILE no route off this machine

before · without Reinstate

Context dies at the desk

  • Sessions trapped on one machine
  • Paths and agent state drift apart
  • Context must be rebuilt manually

after · with Reinstate

Portable state you control

  • Pull sessions onto another device
  • Remap paths across macOS and Windows
  • Store encrypted state in your own bucket

One session. Two machines.
Four commands. Zero lost context.

List and push on the first machine. Pull on the second. Reinstate remaps the project path, restores the native session, and lets you continue where you left off.

Device A

Windows desktop

PowerShell
PS C:\reinstate> rein list --agent claude
claude  ses_7f3a  reinstate  2.1 MB  4h ago
PS C:\reinstate> rein push --agent claude --session ses_7f3a
Encryption passphrase: ••••••••
pushed 1 snapshot, skipped 0 unchanged
E2E encrypted
age encryptedyour S3 or R2 bucketproject map applied
Device B

MacBook

zsh
$ rein pull --agent claude --session ses_7f3a
Encryption passphrase: ••••••••
pulled 1 snapshot
project map: C:\reinstate → /Users/harjot/Code/reinstate
$ claude --resume ses_7f3a
A session moves between two machinesThe office floor continues beneath a Windows workstation and a MacBook. Four session layers leave the source, seal inside an encrypted checkpoint, and arrive restacked on the destination machine.ses_7f3aPATHSMETADATAMESSAGESSESSIONageses_7f3a▶ 23:47PATHSMETADATAMESSAGESSESSION

Representative CLI outputCodexSame encrypted flow: codex resume ses_7f3a

Trust · ownership · open source

Sessions leave encrypted.Your bucket never sees plaintext.

Your sessions can contain source code and private work. Reinstate encrypts them locally before storage.
Your bucket holds ciphertext. Decryption happens locally with the passphrase you enter.

Capture, encrypt, store in your bucket, restore anywhereFour stages, one package: open layered snapshot, same package sealed with age, same sealed package in your bucket drawer over HTTPS, open layers restored on a second laptop.ON DEVICEHTTPS · SEALEDHTTPSPATHSMESSAGESSESSION01Capture locallyPassphrase stays localage02Encrypt locallySnapshot sealed with ageS3 / R2age03Store in your bucketS3-compatible object storageRESTOREDPATHSMESSAGESSESSION04Restore anywhereSame session, new device
One session package is captured on-device, sealed locally with age, stored as ciphertext in your bucket, and restored on the second device. The one object stored beside them in the clear is keyring.v1.json, which holds no usable key.

Your bucket, your controls

Ciphertext lands in your own S3 or R2 bucket, under your region and access controls.

No Reinstate account required

Authenticate directly with your storage provider. Agent auth files and storage credentials are never included in snapshots.

Backed up before restore

Existing session files are backed up before replacement. Validated restores use atomic writes, while conflicts create explicit forks.

The same API repository on Windows and macOSA detailed Windows workstation enters from the left and a macOS laptop enters from the right. Each holds the same API session stack, but their absolute-path labels differ and their file-sync routes stop before meeting.APIAPI
Why not Dropbox, iCloud, or rsync?

Files can sync.
Resume can still fail.

Same repo, different path, different project key. The files copy successfully, but --resume may find nothing. Reinstate maps the destination path and rebuilds the project reference the agent expects.

CLAUDE CODE EXAMPLE

Same repository. Two project keys.

RAW FILE SYNC
Windowssource machine
same repo · api
project rootC:\Users\harjot\projects\api
agent project keyC--Users-harjot-projects-api
Claude index~/.claude/projects/C--Users-harjot-projects-api/
macOSdestination machine
same repo · api
project root/Users/harjot/dev/api
agent project key-Users-harjot-dev-api
Claude index~/.claude/projects/-Users-harjot-dev-api/
Files copied--resume: no matching project
REINSTATE
canonical projectapi
destination root/Users/harjot/dev/api
project identityrebuilt

Files only copy bytes

Cloud drives preserve session files, not the agent’s machine-specific project identity.

Reinstate rebuilds identity

It remaps the destination path, then reconstructs the project reference the agent expects.

Resume stays in your agent

Claude Code sessions resume in Claude Code; Codex rollouts resume in Codex—never in a generic transcript viewer.

Where Reinstate fits

Different tools keep work moving.
Reinstate makes the handoff yours.

Use cloud handoff for cloud sessions and remote control for a live machine. Use Reinstate when encrypted local session state needs to move between configured computers.

Three ways to continue coding-agent workA cloud service hands work to a local terminal, a phone remotely controls an attached desktop monitor, and two laptops use encrypted storage for a durable handoff.010203
01CLOUD → LOCAL

Cloud handoff

Continue work that began inside a vendor cloud in that vendor’s local surface.

02LIVE ACCESS

Remote control

Steer a live session from another screen while the source machine keeps it running.

Sessions resume in the same agent: Claude Code stays in Claude Code, and Codex stays in Codex. Cross-agent work uses explicit handoffs.

Reinstate ready on a desktop and laptopA detailed desktop workstation enters from the left and a laptop enters from the right, leaving the installation interface clear in the center.
Open source · available now

Reinstate your next session.

Install the CLI, connect your bucket, and continue supported Claude Code and Codex sessions across configured macOS and Windows machines.

REINSTATE INSTALLERv0.6.0-rc.5
curl -fsSL https://reinstate.dev/install.sh | sh
checksum verifiedinstalls rein + reinstate

Apache-2.0One Go binaryYour bucketYour keysNo Reinstate account