jackin-remote (run on another machine, attend from laptop)
Status: Open — Phase 5 design proposal; no jackin-remote binary, --remote global flag, remote host config, SSH bridge, rsync orchestration, or remote handler relay exists yet (Phase 5, Agent Orchestration Program)
Shipped baseline
jackin❯ is no longer purely single-backend in the schema: host config has [runtime].default_backend, workspace config has [runtime].backend, launch resolution accepts docker and apple-container, and instance manifests now carry optional backend resources for non-Docker launches. The default Docker backend still owns the normal role-container plus private DinD lifecycle, and apple-container is a local backend path rather than a remote host story.
Credential forwarding is also more capable than the original proposal assumed: each built-in agent has sync, api_key, and ignore modes, Claude Code also has oauth_token, and auth mode plus sync_source_dir resolve across global, workspace, and workspace-role scopes. This is still launch-time credential provisioning into the selected local backend, not a remote per-invocation credential grant protocol.
The console has local host affordances such as browser URL opening and hyperlinked log output, but there is no typed remote action protocol that lets a remote agent ask the local laptop to open a browser, IDE, or diff viewer.
Remaining work
- Remote binary/subcommand and control channel. No
jackin-remotebinary orjackin --remotecommand exists incrates/jackin/src/cli.rstoday. V1 should use an SSH-based control channel plus rsync-based state sync rather than a custom protocol; see the design research for the recommended shape. - Remote-host config schema.
crates/jackin-config/src/schema.rshas runtime backend selection but no[remote.<name>]block; V1 needs named remotes with SSH target, remotejackinpath, sync interval, explicit sync rules, and an optional install/bootstrap command. - Console attach and one-off launch against a remote host, reusing the launch path in
crates/jackin-runtime/src/runtime/launch.rsonce it can target a remote-resolved backend instead of only local backends. - Local handler relay for
web,ide, anddiffactions so a remote agent's action dispatches through the local console's handler paths (seecrates/jackin-console/src/tui/state/update.rsfor the existing local-only browser opening) — depends on Operator handler system. - Invocation-scoped credential grants instead of broad rsync of credential directories or long-lived tokens — owned jointly with Credential source pattern.
- Remote status events surfaced in the local console using the same vocabulary as Session contract and explain mode.
Out of scope
- Multi-remote orchestration, queue sharding, or dispatching one queue across multiple hosts.
- Audio/visual desktop redirection such as
ssh -Y. - Container migration between hosts.
- A direct gRPC/custom protocol alternative to SSH+rsync for V1.
- Mobile or web client.
- Kubernetes-specific scheduling; this item should prepare vocabulary for it, not implement it.
Related work
- Research: jackin-remote design research — multicode inspiration, config/CLI sketches, handler relay design, and open design questions.
- Agent Orchestration Program
- Operator handler system — local handler invocation
- Credential source pattern — local resolution → remote grant model
- Session contract and explain mode — status and boundary vocabulary remote should reuse