🦀 Gajae Code

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

PC stays authoritative: the gateway and phone are observers plus one-line submitters. File edits, shell execution, workflow-gate answers, approval prompts, raw transcripts, tool arguments/results, diffs, secrets, environment, and system prompts stay on the PC.
  • 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 readyForSubmit or 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:view and remote:submit.
  • These are not aliases for message:read or prompt.
  • Phone bearers must not authorize bridge calls such as get_messages, get_last_assistant_text, get_state with systemPrompt/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”.