:description: One seat over five habitats and argv law. It owns none of them. A seat is one agent, or one person, working a tracker. Five habitats answer five questions for it. Cards are what the human froze. :cover: https://leidarljos.github.io/ljos/_static/og.png .. raw:: html

ljos

What does this seat do next?

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

Model agnostic Harness agnostic CLI + MCP
Get started Reference
One seat over five habitats and argv law. It owns none of them. 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 keeps what the seat has learned. The deed store records what the work produced. The tracker says what the work is and who agrees, and the claim graph shows who is working on what right now. The judging of shell commands is not a store: ``ljos-policyd`` refuses the dangerous ones before they run, seat rules refuse more, and ``ljos policy -- COMMAND`` prints the answer for one command. ``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. Seats on one pack also write to each other with ``ljos send``; the atoms travel in the sealed sync log. 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. |image1| Install ======= .. code:: console $ cargo binstall --locked ljos packset deedar-cli claimdag-cli vissue-cli vissue-mcp ljos-policyd ljos-consensus $ packset ensure $ ljos doctor $ ljos onboard --harness json ``ljos`` provides ``ljos`` and ``ljos-mcp``. ``packset`` provides ``packset`` and the writer ``packsetd``. ``packset-embed`` is the encoder for meaning-based search; without it ``packsetd`` matches words only. ``scripts/install.sh`` installs the same set and the encoder (``--no-embed`` leaves it out) with checksums and onboards each runner it finds. ``deedar-cli`` provides ``deedar``. ``claimdag-cli`` provides ``claimdag``. ``vissue-cli`` provides ``vissue``, and ``vissue-mcp`` the tracker server. ``ljos-consensus`` provides ``ljos-consensus``, which ``ljos consensus`` runs. ``ljos-policyd`` is the command check. Those are the binaries the tutorial calls. Each comes prebuilt from its GitHub release; ``cargo install`` takes the same names and builds from source with Rust 1.89 or newer. An older Rust fails on several crates and can install an ``ljos-policyd`` older than 0.5.0 without a word; ``ljos doctor`` marks that row ``no`` and names the fix. ``doctor`` says whether ljos is ready and lists the habitats that need action; ``doctor --all`` 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 ============ .. code:: console $ ljos remember "The lexical default is BM25+. It beat BM25 by two points on turns." remembered (lesson): The lexical default is BM25+. It beat BM25 by two points on turns. id 07be8829, next review 2026-09-26 23:27 +00:00 $ ljos search lexical default 1.0000 3/3 lesson 07be8829... today The lexical default is BM25+. It beat BM25 by two points on turns. $ ljos due 0 due; 1 scheduled, next at 2026-09-26T23:27:31.528Z The :doc:`tutorial ` runs all three loops on a scratch tracker in about ten minutes. .. toctree:: :maxdepth: 1 :caption: Guides :hidden: getting-started howto grok-build integration architecture reference explanation seat .. |image1| image:: _static/seat.svg :width: 100.0%