Agent OrchestrationFleet phase 5 — Distributed & extensibility

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

  1. Remote binary/subcommand and control channel. No jackin-remote binary or jackin --remote command exists in crates/jackin/src/cli.rs today. 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.
  2. Remote-host config schema. crates/jackin-config/src/schema.rs has runtime backend selection but no [remote.<name>] block; V1 needs named remotes with SSH target, remote jackin path, sync interval, explicit sync rules, and an optional install/bootstrap command.
  3. Console attach and one-off launch against a remote host, reusing the launch path in crates/jackin-runtime/src/runtime/launch.rs once it can target a remote-resolved backend instead of only local backends.
  4. Local handler relay for web, ide, and diff actions so a remote agent's action dispatches through the local console's handler paths (see crates/jackin-console/src/tui/state/update.rs for the existing local-only browser opening) — depends on Operator handler system.
  5. Invocation-scoped credential grants instead of broad rsync of credential directories or long-lived tokens — owned jointly with Credential source pattern.
  6. 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.

On this page