Skip to content

Manage a Machine from the CLI over Tailcat #876

Closed

Description

@nick-potts

Parent

#868

What to build

An operator selects a Tailcat context and runs existing Machine RPC commands without SSH or an inbound management listener. Keep the existing Connector and SSH/local behavior; use one pinned native library helper with protected input and client stdin/stdout.

Acceptance criteria

  • Add the opaque tailcat capability to the existing ordered connection configuration; exactly one transport selector is valid. Preserve optional expected Machine identity, SSH-only options and explicit context selection; reject invalid combinations.
  • Reuse shared negotiation and expected-Machine confirmation, and existing child-process stream ownership. No secret in argv, logs, Debug/Display, selection or errors; enforce private atomic config/state storage on supported Unix platforms.
  • Use fresh client keys and a fixed daemon Unix destination. No client listening proxy, arbitrary forwarding, remote shell, new wire framing, WASM or FFI. SSH/local auxiliary proxy and Direct Image Transfer remain supported; Tailcat reports unsupported auxiliary transport clearly.
  • Resolve retained peer/admission growth with supported upstream cleanup or a minimal pinned upstream fix before accepting a persistent server. Repeated successful and invalid handshakes leave bounded idle state without periodic restarts, cloned keys or a Ployz peer registry.
  • Rung 1 — Tailcat connection contract: actual Machine RPC via private local DERP, invalid capability and Machine identity mismatch, EOF/half-close/cancellation/reaping, and bounded successful/invalid-client churn. Rung 3 — context/config shape and secret redaction. Public relay failure is a bounded transport error.

Blocked by

None — can start immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions