What Offsite puts on your machine
Everything Offsite installs on a host lives under one directory, plus a small number of named helpers you opt into. This page lists them so you can check rather than trust.
The state directory
Section titled “The state directory”Everything host-side is under ~/.offsite:
| Path | Contains |
|---|---|
bin/ | the host agent, the relay agent and helper binaries |
sessions/ | per-session records |
state.db | session and board state (SQLite) |
workspaces.json | your workspaces |
workspace-discovery.json | the cached folder-suggestion list |
devices.json | paired devices and their notification settings |
settings.json | host settings |
tmux/ | Offsite’s own tmux config — never your ~/.tmux.conf |
uploads/<session-id>/ | files you sent to a session |
session-archives/ | resume artefacts, so a CLI cleanup cannot orphan a session |
action-memory/<action-id>.md | Workspace Action memory |
deploys/, xcode-derived-data/ | deploy-to-phone jobs and a private build cache |
shell-wrappers/ | per-session shell shims |
agent-bridge/ | Computer Use helper and its token |
*.log | timing and delivery logs |
Nothing is written into your repositories. A workspace is a path Offsite remembers, not a folder it modifies.
Processes
Section titled “Processes”| Process | When |
|---|---|
| Host agent | whenever the host is running |
| One tmux server per session | while that session exists |
| Relay agent | always: it runs the SSH server your devices connect to (see Ports), and holds the connection to the relay while that is on |
| Simulator broker | macOS, only if you use Simulator cards |
| Agent Bridge | macOS, only if you enabled Computer Use |
Things that need root
Section titled “Things that need root”Two, both opt-in, both announced before they ask:
| Helper | For |
|---|---|
com.rapidrocket.offsite.power-helper (LaunchDaemon) | keeping the host awake |
| The always-reachable service (LaunchDaemon / systemd) | surviving a reboot |
The standard setup needs neither.
One. The relay agent runs an SSH server of its own on a single TCP port and
listens on all of the host’s network interfaces (0.0.0.0). Your devices
connect to it on your local network, over your tailnet and at the host’s own
address, and the Mac app reaches This Mac through it on 127.0.0.1. On macOS
the agent also announces the port on the local network with Bonjour
(_offsite-ssh._tcp).
It admits only devices you paired: each one signs in with its own Ed25519 key, and a new device gets in once, with the one-time code from the host’s QR. It is not macOS Remote Login; port 22 stays as you configured it.
The port is picked on first start and kept in
~/.offsite/relay-agent-sshd-port, so firewall rules and your devices can rely
on it. offsite-host setup --sshd-port <port> sets a fixed one, for example for
a router or firewall rule.
On a host with a public address, such as a VPS, that port answers from the internet unless a firewall in front of the host closes it. Close it, and with the relay on your devices still reach the host: the relay path needs no inbound port, because both ends dial out to it on 443. See How your devices reach your host.
Removing it
Section titled “Removing it”See Uninstalling.
Details
Section titled “Details”- The state directory can be relocated with
OFFSITE_STATE_DIR, which is mostly useful for testing against a throwaway state. - Directories and files are created with restrictive permissions.
- The
.offsitedirectory itself is refused as a workspace root. - On Linux the same layout applies under the connecting user’s home directory.
- Client-side, the macOS and iOS apps keep host profiles and credentials in the system keychain, not in the state directory.