Documentation
Gajae Remote v0
A thin phone steering wheel for already-running PC-side gjc sessions. It observes bounded state and submits one-line instructions without becoming a shell, file editor, or remote desktop.
Authority boundary
- Phone clients may list active sessions, open one bounded session view, submit one line through the owner submit path, and see idle/working/blocked/offline status.
- The phone cannot bypass
readyForSubmitor submit while the owner runtime is busy. - Held-back content is shown as a neutral “withheld on PC” marker, not as a redacted blob.
Gateway-only scopes
v0 reuses the bridge transport posture — TLS, bearer tokens, fail-closed defaults — but it does not give phone bearers bridge/RPC command authority.
- Allowed gateway scopes:
remote:viewandremote:submit. - These are not aliases for
message:readorprompt. - Phone bearers must not authorize bridge calls such as
get_messages,get_last_assistant_text,get_statewithsystemPrompt/tools,new_session,switch_session,branch,set_model, shell, host, control, or admin surfaces.
Transmitted-data allowlist
Only a typed projection leaves the PC. Session summaries expose sessionId, a sanitized derived name, harness, status, last activity, and branch. Open-session views expose bounded lifecycle, owner liveness, blockers, observed signals, git delta enum, risk enum, submit readiness, and submit-unavailable reason.
Everything else is withheld by default: raw pane output, full transcript/message bodies, tool args/results, file contents, diffs, system prompt, env, tokens, secrets, and absolute paths beyond safe metadata.
v0 architecture
The new piece is a PC-side Gajae Remote gateway. It enumerates harness-control-plane session state, observes each owner through bounded control-plane data, and proxies one-line submits through the same owner submit path used locally.
- Network/auth posture: bridge mode’s TLS + bearer + fail-closed model.
- Session/liveness source: harness control-plane state, leases, heartbeat, and bounded observation.
- Client first target: mobile web, following the local server + SPA pattern already used by
packages/stats. - Hosted relay is deferred to v1 and needs separate ADR-level trust-model review.
Failure states
- Offline: owner lease dead or gateway unreachable; submit disabled.
- Expired pairing: token expired/revoked; re-pair on PC.
- Busy:
readyForSubmit == false; show reason and disable submit. - Rejected submit: typed error such as
scope_denied. - Withheld output: show “withheld on PC”.