Remote Access
Cross-device memory lets two machines running sivtr read each other’s workspace sessions like local sources. Sharing is explicit, read-only, and redacted by default.
A share returns only sessions whose recorded directory or repository identity matches the shared workspace. Sessions with unknown workspace membership are excluded, including when requested by an exact reference; they remain in the owner’s unfiltered local session listings. Redaction applies after workspace filtering and does not grant access to unrelated sessions.
If you want the teammate scenario first, see Remote collaboration memory. This page is the feature guide.
| Piece | Meaning |
|---|---|
| Device daemon | One per machine. Started by sivtr serve, auto-started by share/remote commands when needed. |
| Share | An explicitly exposed local workspace (a remote “repo”). |
| Invite | Single-use invitation key with a short TTL. Printed as a bare key on stdout (share invite). |
| Grant | Peer permission after redeeming an invite. |
| Remote | Workspace-local name for a peer+share pair — the left side of name:path refs (like git remote). |
Refs use one form:
codex/4 # local current workspacedocs:codex/4 # another local workspace by namedesk:terminal/... # remote name from `remote add`List local workspace labels with sivtr ws list. Unregistered scopes error.
Owner setup
Section titled “Owner setup”On the machine that owns the workspace:
sivtr share # pick workspace (Enter = current); creates share onlysivtr share invite <name> # issue a single-use invite (stdout = bare key)Non-interactive:
sivtr share add --name alice-desksivtr share invite alice-desk --expires 10mUseful owner commands:
sivtr share listsivtr share grants alice-desksivtr share revoke alice-desk <peer>sivtr share disable alice-desksivtr share remove alice-desksivtr serve statusPeer setup
Section titled “Peer setup”In the git workspace where you want the remote:
sivtr remote add desk <invite>sivtr remote test desksivtr remote listUseful peer commands:
sivtr remote rename desk bob-desksivtr remote remove desk # local name only; grant remains until owner revokessivtr peer listsivtr peer forget <peer>Groups
Section titled “Groups”When more than two devices want long-lived shared memory, instead of each pair doing share + remote add, form a group: a named set of devices that share memory with each other. Every member contributes workspaces, and membership syncs automatically.
# Owner on device A:sivtr group create <name> # create the group and contribute the current workspacesivtr group invite <name> --expires 1d --max-uses 10 # multi-device join link (stdout = bare key)
# Member on device B:sivtr group join <invite> # join and contribute your own workspacesivtr group listsivtr group members <name>sivtr group sync <name> # force a roster pull from the ownerThe owner manages the group: rename renames it, remove <group> <peer> kicks a member, and an owner leave disbands the group. Membership changes broadcast to every member automatically, so teammates’ memory appears under their peer name without any further setup:
sivtr s <peer>:terminal --status failure --latest 5 --refssivtr s <peer>:agent -m "decision" --latest 20 --refsGroup access is read-only and redacts secrets just like shares. Groups and one-off shares are independent: you can use both, or only one.
Use remote memory
Section titled “Use remote memory”Remotes work with the same WorkSet surface as local sources:
sivtr s desk:terminal --status failure --latest 5 --refssivtr s desk:agent -m "panic|failed|decision" --latest 20 --save remote_hits --refssivtr show desk:terminal/session_42/3/p1 --fullsivtr zoom desk:agent/<session>/3 -C 2 --save remote_ctx --refssivtr filter @remote_hits -m "cargo test" --save remote_tests --refssivtr nav @remote_tests[1] '<[-1..+1]' --refssivtr copy desk:terminal/session_42/3 --printSafety defaults
Section titled “Safety defaults”- Nothing is shared until
sivtr shareorshare addruns. - Access is read-only. Peers cannot write sessions or run commands on the owner machine.
- Secret redaction is on by default (
--no-redactdisables it for a share). - Invites are single-use and short-lived (default
10m). - Transport between daemons is encrypted iroh.
- Local-first remains default: unknown scopes fail instead of probing the network.
Daemon and data
Section titled “Daemon and data”sivtr serve startsivtr serve statussivtr serve logssivtr serve stopState lives under the single home (SIVTR_HOME override, else ~/.sivtr):
| File | Purpose |
|---|---|
identity.key |
Stable device identity |
remote-state.db |
Peers, shares, grants, invites, remotes |
daemon.json / daemon.lock / daemon.log |
Runtime control and logs |
See Data Locations and Local-first and Privacy.
Command map
Section titled “Command map”| Command | Purpose |
|---|---|
sivtr share |
Interactive share (no invite) |
sivtr share add|list|invite|grants|revoke... |
Manage shares |
sivtr remote add|list|remove|rename|test |
Manage remotes in the current workspace |
sivtr group create|invite|join|list|members|remove|rename|leave|sync |
Manage shared-memory groups |
sivtr origin rename |
Rename a local workspace alias or remote mount |
sivtr peer list|forget |
Manage known peer identities |
sivtr serve ... |
Manage the device daemon |
sivtr ws list |
List local workspace origin labels |
Exact syntax: CLI Reference.