⌨️
⚙️
🔒
Sovereign Coding Client · smilinTux ecosystem

skcode

P0 session plane SHIPPED · interactive dispatch on the roadmap

Where you code by hand.
The interactive front door to the same engine that builds autonomously.

skcode is the human-facing coding client of the SKWorld stack - a thin client of the skharness engine, never a second one. Today it ships a read-only remote session plane: from any paired device, watch the live agent sessions running on your own hosts. Interactive Code + Dispatch is next.

shipped read-only remote session plane - skcode-hostd (P0) binds Tailscale IP only · port 9394 · capauth-gated (audience skcode) delivered as a distributed feature: skharness + skchat-app + skcapstone roadmap interactive Code + Dispatch (spawn & steer sessions)

No standalone install yet - the code is distributed, not packaged. Read the architecture & design ↗

Tailscale-only · never public, never 0.0.0.0 capauth-gated · sovereign, no OAuth relay Read-only P0 · zero write authority yet GPL-3.0 · free forever

Where it fits

One engine.
Two front doors.

Three names, one clean boundary (ADR-0001). Personal context flows down as a narrow task brief; it never flows up into a build sandbox. skcode is the front door you drive by hand.

skos knows you. skharness builds code. skcode is where you code by hand.

The one-line rule from ADR-0001 · one engine, two front doors


Architecture

A thin client, not a second engine.

The engine lives in one place. The assess/build/grade/gate/merge loop is skharness and nowhere else. skcode is a consumer of it - when it dispatches an autonomous build, it calls skharness.autocode, a thin call, never a re-forked loop.

skcode's host daemon IS skharness, promoted and hardened. skharness became a two-plane Harness: the task plane is autocode (repo + brief → PR); the session plane is skcode (remote control over your live agent sessions). One contract, two planes.

Session-scoped, never the whole graph. A skcode session knows the open project. It does not load your GTD, memory, 40+ MCP servers, or soul - that is skos's job, and keeping it out is what makes the surface fast and the blast radius small.

Tailscale capauth two-plane Harness PTY + tmux WebSocket stream GPL-3.0
skcode ⇄ skharness
skcode-hostd the session plane (one per host)
Harness the shared two-plane contract

task plane → autocode: repo + brief → reviewed PR
session plane → skcode: list · stream · (soon) steer
transport → Tailscale IP only · :9394
auth → capauth · audience skcode
client → web page · Flutter Code pane
operator → Atlas watches + steers hostd

dispatch (P2) → skharness.autocode.ratify · a thin call, not a fork

Reality, not aspiration

What ships today.

skcode is real, delivered as a distributed feature: there is no single skcode package yet - the code lives across three repos that already ship. Here is exactly what is running.

🛰️ ● shipped · P0
Host daemon (session plane)

skcode-hostd lives inside skharness by design. Read-only MVP: list your live agent sessions and stream one transcript. Zero write authority - no spawn, inject, or kill exists yet.

entryskharness.serve:main
bindTailscale · :9394
unitskcode-hostd.service
tests36 · TDD, green
📱 ● shipped · Grade B
Flutter client pane

A "Code" pane in skchat-app embeds the hostd web client same-origin over the 443 funnel. Renders the session list and live transcript; gated until this device is paired (shown as a hint, never a crash).

reposkchat-app
pathlib/features/skcode/
filesskcode_pane · web_embed
gradeB embed → A native (later)
🛠️ ● shipped
Operator adapter

Atlas, the AI-operator seat in skcapstone, watches and steers skcode-hostd as a first-class operand: probe health, archive a stale session, restart the daemon, and (once dispatch lands) hit the emergency brake.

reposkcapstone
pathoperator_seat/skcode_adapter.py
verbsexplain · observe · act
brakepause-dispatch (when P2 lands)

No standalone skcode repo or package exists yet. The daemon is skharness, the client is skchat-app, the operator adapter is skcapstone. That distribution is deliberate - the daemon is skharness promoted, not a fork.


The P0 experience

Watch your sessions. Read-only, for now.

From a paired device on your tailnet, list the agent sessions on a host and stream one live. Every byte stays on hardware you own. No inject box, no spawn button - that authority does not exist yet.


The phase ladder

Honest roadmap.

Each phase is standalone-shippable and security-reviewable on its own. The highest-risk surface - spawning a session on your machine - deliberately does not exist until pairing and authorization land under it.

P0 · DONE

Read-only Code

List live sessions and stream one, capauth-gated, one paired device, sandbox scope. Zero write authority. Shipped as the skcode-hostd session plane.

gate: skharness P0 (exists) + a paired device
P1 · NEXT

Input injection

Text, voice (Whisper), and file inject; manual/auto approval toggle; per-session model switch through the shared resolver; rename, archive, share. Still one host.

gate: unified resolver + dynamic catalog landed · authz.decide interface frozen
P2 · Dispatch

Code + Dispatch

Spawn and steer a brand-new session (harness, repo, branch, profile, prompt) from a paired device. Gated dispatch calls skharness.autocode.ratify - a thin call into the engine, never a re-forked loop. Mandatory RCE guards: argv-only, repo allowlist, worktree isolation.

gate: capauth.pairing (M2) live + authz.decide (M3) + repo allowlist
P3 · Fleet

Harness axis + fleet

Pi and opencode adapters behind the seam; harness switch = fork/re-spawn; roll skcode-hostd across the fleet with cross-host session merge; skcoord card store for background tasks.

gate: Pi spike + fleet install · skcoord extraction
P4 · Off-tailnet + shell

Cellular attach + Grade A

skcomms stream_channel for off-tailnet / cellular attach (reusing the skchat coturn relay); skcode promoted to a Grade A native module in the SKWorld shell.

gate: shell phase + skcomms stream seam

Tracked as coord card 22731c0d · reconciled to ADR-0001


The SKWorld family

Part of the smilinTux ecosystem

skcode is the coding front door of the SKWorld sovereign AI ecosystem. Its siblings run the OS layer (skos) and the autocode engine (skharness). Build on any of them, or let the stack wire them together.


⌨️

Follow the build.

The session plane ships today; interactive dispatch is next. Nothing installs standalone yet - read the design, watch the roadmap, and own the whole coding surface when it lands.

"staycuriousANDkeepsmilin" 🐧