F10N4 // getting started

Start here.

C10:OS is a CLI-first, text-default operating system for autonomous agents. It gives every project its own numbered room, makes every action a repeatable recipe, and records the reason behind every change. You drive it from a shell and from Claude — the system figures out the path, the recipe, and the function. This page is the shortest route from "what is this?" to "I shipped something."

The 60-second model

// four moving parts

Four things hold the whole system together. Learn these and everything else is detail.

01

The spine

One root — ~/.C10 — with the master CLI, the registry, and the config. F10N4 is its keeper: no gender, no ego, just the thing that keeps the lights on.
02

Halls

Every project lives in a numbered room (.62, .58, …). Dot-prefixed means underground and sandboxed. Each has its own justfile and reason for being.
03

The WHY chain

Git tracks what changed. why.jsonl tracks why. Append-only and immutable — every mutation carries a --why, and the chain reads back as a story.
04

Two turntables

Two model decks — Anthropic and Google. Drafts run on the cheap deck (LOP), finals on the strong one (HOP). You spend deliberately.

Get going in five steps

// idea → shipped
01

Land in the spine

cd ~/.C10 and type c10. The system answers with its status — services up, halls registered, your current flow state. The first thing you should ever type.

02

Read the room

c10 status for the briefing, c10 why for the last decisions, c10 flow to see if you're in session. You're never guessing at state — the spine tells you.

03

Bring an idea

Capture it as a bot job: c10 bj register "your idea". It gets classified, linked to related work, and filed — with a WHY entry. The F1X board in the Hub is the shared work queue.

04

Build it into a hall

Non-trivial work gets a visual plan first, then a hall. The pipeline scaffolds a new numbered room with its own justfile and .c10/. In Claude Code, /c10:start "describe the app" kicks it off.

05

Verify, then ship

Playwright gates verify the build before it counts. Then c10 deploy <target> --why "..." ships it. When a room crosses the threshold, the graduation ceremony drops the dot and it becomes a service.

06

Leave it better

Noticed something but didn't fix it? Drop a crumb. Spent C01N or earned karma? It's logged. Every loop end leaves the next person — agent or human — a cleaner room.

How it works under the covers

// the machinery

// the build loop

Software in C10:OS moves through one repeatable loop. Ideas enter as captures; a visual plan is drawn before any code; a pipeline scaffolds the hall; gates verify it; a stamp graduates it.

The same loop runs whether a human or an agent is driving — and several agent sessions can edit the tree at once. The discipline is what keeps that concurrency from turning into chaos.

// the path

# every hall walks the same road capture idea lands as a bj0* / F1X entry plan a visual plan is drawn first build pipeline scaffolds the .# hall verify Playwright gates must pass ship c10 deploy · WHY appended graduate threshold met → dot drops
A

Cascading config

Each room's .c10/ overrides its parent; everything links up to the spine at _JU135_/_admin_/config/. Local where it can be, central where it must be.
B

G4LL3RY hosts the web

Underground komponents never run their own web server. One presenter on port 8100 serves every hall's UI — so the CLI stays independent and nothing fights over ports.
C

The WHY chain

Append-only JSONL. A reason can't be rewritten — if a decision turns out wrong, you append the reversal. Decisions become archaeology you can replay with c10 why narrative.
D

Graduation

50 builds · 60% flow · 100 karma · 2 peer votes. Cross the line and a SHA-256 diploma is minted, the commit becomes proof of work, and the room moves to etc/.

Two surfaces, one system

// data vs judgment

// the fish CLI — data

c10 … in the shell gives you the facts. c10 bj list prints a table. c10 config get reads a value. Fast, scriptable, text by default — add --json when a machine needs to read it.

If you just want raw data, this is the surface.

// the /c10 commands — judgment

/c10:* inside Claude Code reads the same registries and runs the same calls, then adds a layer: it interprets, prioritizes, cross-references, and proposes the next action.

c10 bj list prints the table; /c10:bj notices three entries share a room, flags one as stale, files your idea linked to its siblings, and appends the WHY — in one step. If you want it thought about, use the slash command.

From diagram to deployed

// the full ladder

Work climbs one ladder, bottom to top. A picture becomes a command, a command speaks JSON on demand, anything you do twice becomes a recipe — and from there it composes into anything. The same rungs carry an agent or a human.

diagram a plan you can see — rendered to HTML, published to the Publisher, and re-rendered on a schedule so it never goes stale cli c10 … turns the plan into actions · text-default, human-first json add --json to any command · the exact same output a machine reads just anything done twice becomes a just recipe · the room's verbs anything recipes compose — script it, schedule it, or hand it to an agent
01

A harness that improves itself

New verbs are cheap: drop a just recipe or a .md slash command and it's live the next session — no registration step. The system also keeps its own house: c10:doc regenerates a room's CLAUDE.md from its actual structure, diagrams re-render on a cadence, and crumbs, the bj0* registry, and the WHY chain feed every loop back into the next. The factory that builds the halls was built the same way.

02

A full testing backend

Verification is a gate, not an afterthought. Every hall ships its own suite — Vitest unit, integration, and e2e — and Playwright gates must pass before a build can graduate. A hermetic fleet harness (just fleet-e2e) walks the whole lifecycle — create → stamp → publish → pull → data-survival → rollback — in an isolated sandbox, so a release proves itself end-to-end before it ever touches a node.

03

Deployment handling, built in

c10 build --profile <p> packages the spine; c10 deploy <target> --why "..." ships it. Halls run as containers on the fleet (Docker · OrbStack) behind the G4LL3RY presenter and a Cloudflare tunnel. Fleet updates are pull-based through signed Gitea releases — staged, verified, receipted, and rollbackable. A bad config fails its fish -n check and auto-rolls-back; releases land as canary first, then promote to live.

Your first session

// copy · paste · go
# 1 · ask the system where you are $ c10 F10N4 online · 29 services · 69 halls flow: idle · type `c10 flow start` to begin   # 2 · capture an idea — the reason rides along $ c10 bj register "hackathon: live STE grammar checker" → bj0 filed · linked to .62 · why.jsonl appended   # 3 · read the last few decisions, as a story $ c10 why narrative   # 4 · in Claude Code, let the spine do the thinking /c10:start "STE grammar checker over the .62 corpus"

Add --why "..." to anything that mutates. Add --json to anything you want to pipe. Those two flags are 90% of fluency.