ljos

One seat over five habitats and argv law. It owns none of them.

Remember, agree, hand over: memory for a working seat that a person can read on disk.

Model agnostic Harness agnostic CLI + MCP

A seat is one agent, or one person, working a tracker. Five habitats answer five questions for it: cards are what the human froze, the pack knows what the seat has learned, the deed store knows what the work produced, the tracker knows what the work is and who agrees, and the claim graph knows what this session is handing out. Argv law is not a store: ljos policy prints the line, and ljos-policyd is the TCB when it is on PATH or POLICYD_BIN. ljos is the one command and the one Model Context Protocol (MCP) server over those habitats. It adds three loops the habitats do not have alone: memory that is reviewed and forgotten on a clock, agreement that weighs voters by who turned out right, and a handover another seat can check and import.

Everything is a file a person can open: Org headings, JSON lines, a content-addressed store, a Cap’n Proto snapshot. No model is required to run any of it, and any model or agent runner that can call a command or an MCP tool can sit in the seat.

_images/seat.svg

Install#

$ cargo binstall ljos ljos-mcp packset packset-daemon deedar-cli claimdag-cli vissue-cli ljos-consensus ljos-policyd
$ packset ensure
$ ljos doctor
$ ljos onboard --harness json

doctor names each habitat and whether it answers. The seat works with the habitats it has; a missing one is reported, not guessed around. onboard registers the server with an agent runner and installs the sitting protocol as its skill; ljos protocol prints that protocol for any other.

First minute#

$ ljos remember "The lexical default is BM25+. It beat BM25 by two points on turns."
$ ljos search lexical default
$ ljos due

The tutorial runs all three loops on a scratch tracker in about ten minutes.