loadshift command reference

The CLI is plain bash, for macOS, Linux and Windows through WSL2. Besides what macOS or a typical Linux install ships (bash, curl, OpenSSH, git and Perl), it uses Mutagen for file sync, which the installer downloads (a pinned, checksum-verified release). Its files live in ~/.loadshift.

CommandWhat it does
loadshift login [--url URL]Sign in through your browser. Saves a token to ~/.loadshift/credentials (readable only by you), creates ~/.ssh/loadshift_ed25519 if needed and adds it to your account. --url points at a different LoadShift control plane (for development).
loadshift logoutForget the saved token. Your machines keep running.
loadshift whoamiShow the account and workspace you're signed in to.
loadshift machinesList your workspace's machines. Alias: loadshift ls. You don't create machines: yours is set up the first time you start an agent.
loadshift claude [arguments]In a project: set up your machine and connect to it (the very first time, or if it was deleted), sync the project to the same path on the machine (the first time), connect if needed, then start Claude Code with your arguments. Its shell commands run on the machine. The project is the git repository you're in; outside one, it asks before syncing the folder.
loadshift codex [arguments]The same, starting Codex. A hook in ~/.codex/hooks.json sends Codex's shell commands to the machine; Codex runs it only once you trust it in /hooks. Codex's sandbox is given network access, because each command reaches the machine over SSH.
loadshift opencode [arguments]The same, starting OpenCode, with its shell pointed at loadshift's wrapper so its commands run on the machine.
loadshift forget [path] [-y]Stop syncing a project and delete its copy on the machine. Your files on your computer aren't touched.
loadshift up / loadshift downConnect without starting Claude / disconnect: stop forwarding, pause syncing and close SSH. Your files stay on both sides.
loadshift flushWait until your computer and the machine have the same files.
loadshift statusShow what's connected and which ports are forwarded.
loadshift doctorCheck every part of the connection and explain anything that's wrong.
loadshift ssh [name] [command]Open a shell on the machine, or run one command.
loadshift start | stop <name>Start or stop a machine. Stopping kills running commands; files stay.
loadshift delete <name> [-y]Delete a machine and its disk. Asks you to type the name unless -y is given. The next agent you start gets a fresh machine. Alias: loadshift rm.
loadshift updateUpdate loadshift from the server you installed it from. Starting an agent (or loadshift up) also checks, at most every 10 minutes, and updates before it carries on. Set LOADSHIFT_AUTO_UPDATE=0 to turn that off.

Files it creates

  • ~/.loadshift/credentials: your API token and the control plane URL (mode 600).
  • ~/.loadshift/config: the machine you're connected to, ports never to forward, and settings for private packages. Private npm packages need none (npm, pnpm and Yarn 2+): a proxy on your computer adds your token, so it never reaches the machine (LOADSHIFT_NPM_SCOPES lists npm org scopes on the public registry; LOADSHIFT_NPM_PROXY=0 turns it off). Docker registries that need a login use your computer's too: LOADSHIFT_CREDENTIALS="europe-west2-docker.pkg.dev=gcloud" (or the name of a Docker credential helper on your computer) makes Docker on the machine ask your computer for a short-lived login on each pull; registries in your computer's Docker credHelpers are included. For other tools: LOADSHIFT_PASS_ENV (environment variables from your computer, such as NPM_TOKEN, given to each command on the machine; sent inside SSH and never written to its disk) and LOADSHIFT_FORWARD_AGENT="1" (commands can use your computer's SSH agent while they run, for git+ssh dependencies; no key is copied).
  • ~/.loadshift/known_hosts: pinned host keys for your machines.
  • ~/.loadshift/mutagen and mutagen-data: Mutagen and its sync sessions, kept apart from any Mutagen you use yourself.
  • A block in ~/.ssh/config between # BEGIN loadshift-NAME and # END loadshift-NAME, so ssh loadshift-NAME and VS Code Remote-SSH work.