@klein-kit/server
v0.1.3
Published
Host klein-kit coding-agent sessions on one machine and drive them from another over klein-remote/1 (WebSocket).
Maintainers
Readme
@klein-kit/server
Host @klein-kit/core sessions on one machine, drive them from another. A small WebSocket daemon speaking klein-remote/1: sessions survive client disconnects, events replay by sequence cursor on reconnect, and any number of clients can watch the same session.
import { startServer } from "@klein-kit/server";
const server = await startServer(); // 127.0.0.1:12199 (0x2FA7 — International Klein Blue)
console.log(server.url, server.token);Or as a standalone daemon:
npm i -g @klein-kit/server
klein serve # first run: generates a token + self-signed TLS cert in ~/.klein,
# binds wss://0.0.0.0:12199, prints the connect snippetClients verify the server by pinning the printed certificate fingerprint — encrypted transport with no CA, domain, or reverse proxy. --no-tls keeps plain ws on loopback for tunnels.
- Sessions outlive sockets — fire a turn from a phone, drop off, reattach from a laptop; the turn queue, pending permissions, and task state all live server-side.
- Cheap reconnects — per-session event ring buffer (default 5000); clients reattach with
afterSeqand get exactly the missed events, or a full snapshot when the gap is too large. - Idempotent prompts — turn ids are client-generated; a re-sent prompt after a flaky socket never double-queues.
- Single bearer token, loopback by default — reach it from other devices over SSH or Tailscale; failed auth closes the socket with code 4401.
- Permission flow across the wire — approval requests fan out to every attached client as events; first answer wins.
- Workflows too —
@klein-kit/orchestratedefinitions are plain JSON; dispatch one from a phone, let the machine grind, reattach later for the result.
Ended sessions stay attachable for 5 minutes (retainClosedMs). The counterpart client is @klein-kit/client; the wire contract lives in @klein-kit/protocol and docs/design/remote-protocol.md.
Full docs: github.com/yvescomputer/klein-kit · MIT © Yves Computer Company
