keep your agent running on your commute

Pack your Mac, close the lid, and keep steering the same Codex, Claude Code, or Cursor session from your phone. rucksack checks the hotspot, power handoff, and safe return to normal sleep.

rucksack pack looks like this
  1. rucksack is checking the active agent, connection, and power.

    codex remote control is running. hotspot connected. internet is reachable. power is connected.

    rucksack is securing closed-lid protection.

    closed-lid protection active.

  2. you

    unplug this mac while the lid is open.

  3. rucksack is waiting for battery power.

    packing will continue automatically.

    this mac is running on battery. internet and the codex endpoint are reachable after unplugging.

  4. rucksack is rechecking closed-lid protection.

    closed-lid protection active. the safety watcher is running.

    packed.

  5. you

    lock this mac.

    close the lid and go.

works with Codex, Claude Code, and Cursor

rucksack uses each agent’s own remote tools. The session’s permissions, approvals, and sandbox settings stay exactly as you set them.

  • Codex

    Attempts to start Remote Control when supported. Review and trust rucksack once in /hooks.

  • Claude Code

    Keeps the current conversation through /remote-control. Enable it in that conversation.

  • Cursor

    Uses Cursor for iOS Remote Control and adds a temporary project rule. Open Agents → Remote Control and confirm the session on your phone.

packed for the commute, not forever

rucksack unpacks when you run rucksack unpack, the deadline arrives, the battery reaches its floor, macOS reports serious or critical thermal pressure or CPU throttling, or a different live commute route is confirmed. If the watcher stops checking in, its helper lease still restores normal sleep, but the interrupted session may need recovery before a trip report is available.

rucksack is unpacking automatically.

normal sleep restored.

trip report saved.

your settings stay yours reversible adapters remove only rucksack-owned configuration.

your code stays with your agent no rucksack backend, relay, or webhook carries your code or conversation.

copy one prompt into your agent

It requires macOS 14 or newer, checks this Mac, and verifies the latest release before changing anything.

compiler-verified alpha No signed package is published and hardware release testing is not complete. The prompt stops and asks before using the unsigned development build.

open the prompt below, select it, and copy it manually

read the complete agent prompt
Install rucksack on this Mac from its official repository only:

https://github.com/noahnawara/rucksack

Goal

Install rucksack using the safest currently supported distribution path, complete guided
setup, and install reversible adapters for every supported coding agent already installed
on this Mac.

Supported coding agents are Codex, Claude Code, and Cursor only.

Communication grammar

Every action needs an owner.

rucksack installation work begins with:

rucksack is ...

Completed work states the measured result.

User work uses one or more direct verbs.

Waiting names both sides:

rucksack is waiting for <condition>.

<what happens next> will continue automatically.

Errors use:

rucksack stopped installing.

<measured cause>.

<one direct recovery action>.

Never use color as the only ownership signal. Never replace an instruction with flavor.
Never say probably, should be installed, or looks good when a measured result is available.

Safety rules

- Work only on macOS 14 or newer.
- Use only the official rucksack repository and its tagged GitHub Releases.
- Prefer a production-signed and notarized package when one exists.
- Do not silently fall back from a missing signed release to a source build.
- Do not use Homebrew, npm, or cargo install. rucksack does not publish through them.
- Do not pipe an unreviewed mutable script directly into a shell.
- Do not bypass SHA-256, package-signature, Gatekeeper, helper, adapter, network, or doctor
  checks.
- Do not use --allow-unverified-ssid, --allow-unverified-remote, or --force during
  installation.
- Do not alter any agent's permission, approval, bypass, or sandbox configuration.
- Do not request or capture an administrator password in chat. Let macOS or sudo collect
  it in the terminal.
- Do not request a hotspot password. rucksack never places one in process arguments.
- Do not overwrite invalid JSON, a symlinked reserved path, or an unowned reserved skill.
- Do not run rucksack pack as part of installation.
- Do not describe an unsigned development helper as a production security boundary.

Before changing anything

1. Run sw_vers -productVersion and require macOS 14 or newer.
2. Run uname -m and require arm64 or x86_64.
3. Inspect the current GitHub Releases API for noahnawara/rucksack.
4. Reject draft or prerelease artifacts unless I explicitly asked to test one.
5. For a production install, require both assets:
   - rucksack-universal.pkg
   - rucksack-universal.pkg.sha256
6. Read README.md, SECURITY.md, VALIDATION.md, and scripts/install.sh from the exact
   release tag or source commit you would use.
7. Detect supported agents:
   - Codex: command -v codex
   - Claude Code: command -v claude
   - Cursor: command -v cursor-agent, command -v cursor, or /Applications/Cursor.app
8. List unsupported coding CLIs separately and do not modify them.
9. Report the measured macOS version, architecture, release state, and detected agents
   before installation.

Signed release path

Use this path only when a qualifying signed release exists.

1. Check out the exact release tag into a private temporary directory.
2. Inspect that tag's scripts/install.sh before running it.
3. Immediately before running it, resolve the repository's latest-release redirect.
4. Require the redirect, selected tag, package asset, and checksum asset to identify the
   same release. Stop if they do not; scripts/install.sh downloads through releases/latest.
5. Run /bin/sh scripts/install.sh from the checked-out tag.
6. Let the script's HTTPS retries, SHA-256, package-signature, and Gatekeeper checks run
   unchanged.
7. When administrator authentication is required, say:

   rucksack is waiting for administrator authentication.

   installation will continue automatically.

   authenticate in the terminal.

8. Require the installed CLI at /usr/local/bin/rucksack.
9. If guided setup did not start with a TTY, run /usr/local/bin/rucksack setup in an
   interactive terminal.

No signed release path

If no qualifying release exists, stop before installing anything and say:

rucksack stopped installing.

no signed rucksack release was found.

choose whether to stop or use the development-only source build.

Wait for my explicit answer.

Development-only source path

Use this path only after I explicitly approve it.

1. Explain that the repository currently describes this as a compiler-verified alpha and
   that the unsigned debug helper is not the production signing boundary.
2. Check for Xcode Command Line Tools and Rust 1.86 or newer.
3. If either prerequisite is missing, name it and ask before installing it.
4. Ask me for a stable source directory. Do not build in a temporary directory because
   installed adapter hooks refer to the absolute rucksack binary path.
5. Clone the official repository into that stable directory, record the exact commit SHA,
   and re-read README.md, SECURITY.md, VALIDATION.md, and docs/THREAT_MODEL.md.
6. Run:

   cargo build --workspace --locked

7. Keep these sibling binaries together:

   target/debug/rucksack
   target/debug/rucksack-helper

8. Run target/debug/rucksack setup interactively.
9. Do not claim production readiness or a signed install.

Guided setup

1. Let setup ask me to choose the exact Wi-Fi hotspot name or strict iPhone USB mode.
2. Never infer or request a hotspot password.
3. Let setup detect installed Codex, Claude Code, and Cursor installations.
4. Let setup install reversible adapters only for supported agents it detects.
5. If an adapter needs repair, use:

   <rucksack-binary> adapters install --agent <codex|claude|cursor>

User handoffs

For Codex:

- Ask me to open /hooks.
- Ask me to review the marked rucksack entries and trust them once.
- Do not report automatic hooks active until I confirm that step.
- If I request phone pairing, run <rucksack-binary> pair codex and ask me to enter the
  displayed code in ChatGPT on my phone.

For Claude Code:

- Explain that an existing conversation must run /remote-control.
- Explain that /commute-mode applies policy to a conversation opened before rucksack
  activation.
- Do not inject keystrokes or start a different conversation and claim it preserved the
  current one.

For Cursor:

- Explain that Remote Control is UI-first.
- Ask me to open Agents → Remote Control and confirm the phone sees the agent.
- Do not claim pairing was machine-verified.

Verification

Use /usr/local/bin/rucksack for a signed install and target/debug/rucksack from the stable
source directory for a development build.

1. Run <rucksack-binary> --version.
2. Run <rucksack-binary> helper status.
3. Run <rucksack-binary> doctor --agent <agent> for each detected supported agent.
4. Treat doctor warnings as warnings and failures as failures.
5. State exactly which rucksack-owned files are present for each detected agent.
6. Report user-confirmed steps separately from measured results.
7. Do not run rucksack pack as a test.

Finish with measured results

- installed rucksack version and binary path;
- signed release or development commit SHA;
- helper reachability;
- configured hotspot or USB mode;
- each detected supported agent and adapter status;
- Codex hook trust status when applicable;
- every doctor warning or failure;
- the next command: rucksack pack.

Explain these recovery commands without running them:

- rucksack status
- rucksack unpack
- rucksack report
- rucksack recover