Skip to content

About

Seldon: flight recorder and planning desk for Omarchy. Rust engine + Quickshell plugin (jax.seldon).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Seldon: the Prime Radiant mark and the wordmark on night blue

Seldon

A flight recorder and planning desk for your Omarchy machine.

CI Release Licence: MIT

The Seldon desk on Today at full width, Tokyo Night, sample data: the header with the counts of active, queued and crises, the sidebar with the nine sections, NEEDS YOU with two crises, today's journal, and the active cases as tiles

Seldon keeps a plain-Markdown logbook of everything that changes on your Omarchy system: packages, config files, themes, plugins, snapshots and Omarchy updates. You plan changes as cases. Seldon matches what actually happened against those cases and shows every change nobody planned as drift, so you can explain it. A bar pill and one window, the desk, show the picture in the Omarchy shell: today, the changelog, your cases, the charts of the Prime Radiant and a graph of your machine's memory. Seldon only records: it never installs anything, never changes your system and never blocks a command.

The name comes from Hari Seldon in Asimov's Foundation: the Plan predicts, and a crisis is where reality leaves it.

Why · Features · Quick start · Tour · Install options · Documentation · Status · Contributing

Why

Omarchy is built for working with AI agents. On a developer's machine, agents and people install packages, edit configs and switch themes every day. After a few weeks nobody can say why the system looks the way it does. pacman.log and journalctl have the facts but not the reasons. A hand-written changelog has the reasons, until you stop writing it. Seldon keeps both in one place: the facts it collects itself, and the reasons you or your agents give.

Features

  • Six collectors read pacman, snapper, Omarchy, plugins, the theme and your watched config files into an append-only ledger. A capture never records the same change twice.
  • You plan a change as a case: a Markdown file with a zone (green, yellow, red), a risk class and a plan. It moves from queued to active, verification and completed.
  • A change that no case covers is drift. You link it to a case, explain it or dismiss it, from the terminal or the desk; or your agent proposes it for all open changes and you apply the proposal.
  • Claude Code's hooks, or one seldon hook command for any other agent, record each changing command with the agent's name and the active case, for agent sessions inside the logbook and for the sessions Seldon starts (from ~/Work, as Omarchy's own agent). The hooks sit in ~/.claude/settings.json and do nothing in your other sessions unless config.toml sets [hooks] scope = "all". Every logbook carries an AGENTS.md with the rules agents follow there.
  • In the Omarchy shell, a bar pill counts active cases and crises. The desk opens over your desktop at the width you choose: nine sections on number keys, from Today and the Changelog (which also counts the other changes without a case) to the Prime Radiant's charts and the graph, all in your Omarchy theme.
  • The logbook is Markdown and YAML in ~/Seldon, a git repository and, if you want, an Obsidian vault. seldon rebuild writes a guide that turns a fresh install into this machine again. Nothing leaves your machine.

Quick start

You need Omarchy 4 and a terminal. Nothing here needs sudo. Three steps, about two minutes.

1. Install the engine

The engine is one program, seldon.

AUR package: coming soon. Until then install the engine from GitHub (below).

install.sh downloads the static seldon binary of a release, checks it against the release's SHA256SUMS and refuses on a mismatch, then installs ~/.local/bin/seldon (and the alias jax-seldon). It runs as your user and never asks for root. With the GitHub CLI (gh) installed and logged in, it also checks that the release workflow of this repository built the download (gh attestation verify); without gh it says that only the checksum was checked, and --require-verified makes it refuse instead (SECURITY.md).

Checked form — download, read, verify, run:

cd "$(mktemp -d)"
curl -fsSLO https://github.com/JohnAndrewsX/jax-seldon/releases/latest/download/install.sh
curl -fsSLO https://github.com/JohnAndrewsX/jax-seldon/releases/latest/download/SHA256SUMS
less install.sh                                    # read what it does
sha256sum -c --ignore-missing SHA256SUMS && bash install.sh

One-liner — the script still verifies the engine against SHA256SUMS; only the script itself goes unchecked:

curl -fsSL https://github.com/JohnAndrewsX/jax-seldon/releases/latest/download/install.sh | bash

Check it with seldon --version. If your shell says command not found, open a new terminal: Omarchy puts ~/.local/bin on your PATH when a shell starts.

2. Create your logbook

seldon init

It asks one question, where the logbook lives (~/Seldon by default), and takes the defaults for the rest: the first capture looks back 90 days and records that as history "before Seldon", without asking. seldon init --defaults asks nothing; seldon init --ask is the full wizard. Then check the setup:

seldon doctor

Every line should say ok. On Omarchy, snapper may say degraded: your user cannot read snapshots yet. Seldon works without them. doctor prints the one command that allows it; it changes the root snapper config, so Seldon never runs it for you.

3. Add the plugin

omarchy plugin add https://github.com/JohnAndrewsX/jax-seldon-plugin.git --enable

Omarchy asks before it clones the plugin. A pill with the Seldon mark then appears on the right of the bar: a left click opens the desk at Today, a middle click at the Prime Radiant. Seldon records the plugin's installation as routine history, not as drift. You can also add the plugin first: its setup card on Today installs the engine and creates the logbook for you, one button each (Getting started).

When something is missing, the desk says so in its header's chip and offers the fix as one click:

State The desk shows One click
Engine missing the setup card's step 1, "Install the engine" (or "Seldon engine missing" once it was there) Install: install.sh from the release, in a terminal you see
Logbook not initialised the setup card's step 2, "Create the logbook" Create logbook: seldon init --defaults in a terminal
Index missing or unreadable "No index yet" / "Index unreadable" Build index: seldon status writes it
Index stale (older than 2 h) "Index is stale" Capture now

The full list, contract mismatch and restart notice included, is in the plugin README.

A 60-second tour

Change something without telling Seldon first. Omarchy's ~/.bashrc has a place for your own aliases; one line there is quick and easy to undo. Then ask Seldon what it saw:

echo "alias gs='git status'" >> ~/.bashrc
seldon capture
seldon drift
yellow     2026-10-09 19:22  config/config-change  ~/.bashrc  01M4GV0KZY6ZYF5BBTFT5DXZ48
1 open drift item(s), 0 crisis

The change is drift: no case covers it. It is no crisis, so the pill stays as it was: by default its number after the mark counts crises only. The desk's header counts it under attention; the plugin setting driftInBar set to all counts it in the bar too. The plugin captures by itself every 15 minutes; seldon capture just saves you the wait. Explain the change with the event id from the last column:

seldon drift explain <EVENT> -- "A short git status"

Seldon records your reason as a completed case and the drift is gone. Some changes are no drift at all: a theme switch, a plugin toggle, a system upgrade and adding Seldon's own plugin are routine history. The next change you plan first:

seldon plan new --area shell -- "Remove the gs alias again"
seldon plan start <ID>
seldon log --case <ID> -- "Removing the gs alias again"

plan new prints the case id. Delete the alias line from ~/.bashrc, run seldon capture again and link the new change to the case with seldon drift link <EVENT> <ID>. Close the case with seldon plan verify <ID> and seldon plan done <ID>. A change an agent makes through the hooks carries the active case on its own.

Open the desk and press 2 for the Changelog: both changes, the note and every step of the case are there. 7 shows the Prime Radiant, 8 the graph. Each step is also a git commit in your logbook: git -C ~/Seldon log --oneline.

The full walk-through, with the output of every command, is Getting started.

Install options, update and removal

Options (with the one-liner: | bash -s -- --unit):

Option Effect
--version vX.Y.Z that release instead of the latest
--prefix DIR install into DIR/bin instead of ~/.local/bin
--unit also install the optional watcher unit into ~/.config/systemd/user/ (installed, not enabled; see engine/systemd/README.md)
--force replace a seldon (or unit) the script did not install, such as a self-built binary; without it the script refuses and changes nothing
--require-verified install only when gh verified the download's build provenance; refuses when gh is missing or not logged in, or for a release up to v0.1.1 (made before attestations)
--skip-provenance do not ask gh; only the checksum is checked (a note says so). For a gh that fails on its own, for example behind a proxy; not with --require-verified
--uninstall remove what the script installed (give the same --prefix)
  • Update: run install.sh again, either form. It replaces seldon when the release is newer; with the same version it changes nothing. Update the plugin with omarchy plugin update jax.seldon, then restart the shell with omarchy-restart-shell: until it restarts, the shell keeps running the old plugin code. The plugin then shows "Restart the shell to finish the update" with a Restart shell button; a plugin version without this notice shows nothing, so restart after every update. From 0.1.x to 0.2.0, update the engine and the plugin together (index contract 2); from 0.2.x, 0.3.x or 0.4.0 to 0.4.1 the order does not matter: what changed.
  • Remove: bash install.sh --uninstall, or with the one-liner … | bash -s -- --uninstall. It removes exactly the files it installed (a file you changed since is kept, and it says so). Your logbook, ~/.config/seldon/ and ~/.local/state/seldon/ stay. Remove the plugin with omarchy plugin remove jax.seldon.

Engine from the AUR

Once the package is live:

omarchy pkg aur add jax-seldon   # install
yay -S jax-seldon                # update
omarchy pkg drop jax-seldon      # remove

Install from one source only: both put a seldon on your PATH.

Documentation

You want to Read
Use Seldon, step by step User guide: English · Deutsch
Get going in fifteen minutes Getting started · Erste Schritte
Know every pill and desk key Plugin README · Keybindings
Let an AI agent work in your logbook Agent guide · llms.txt
Understand how it works Concept · specs for the logbook, engine, plugin and the contract · decisions
Work on Seldon itself Contributing · Development
See what changed Changelog · Versioning

An AI agent started inside a logbook follows that logbook's AGENTS.md; an agent working on this repository follows the repository's AGENTS.md.

Project status

v0.4.1: Seldon works on Omarchy's edge channel (Qt 6.12) as on stable; edge's own packages and a channel switch are recognised, and the settings files Omarchy writes itself are routine. v0.4.0 made the agent hooks return within a millisecond in a session that has nothing to do with Seldon, put Work's header buttons on keys and a word beside every coloured stripe, and taught the redaction to read the commands inside $(…), backticks and <(…). v0.3.0 brought the other desk buttons by key, an index that stays under 1 MB on a very large logbook, and the short agent skill. The index format is still contract 2, as since v0.2.0, which made the desk. Before 1.0.0 a minor release may still change the CLI, the logbook layout or the contract; the changelog then says so under Breaking. Next: the AUR package, the listing in the Omarchy plugin directory and the update-impact report; then 1.0.0.

Contributing

Issues and pull requests are welcome. Please open an issue before you write anything larger than a fix, so it does not collide with planned work. CONTRIBUTING.md has the build (just check), the rules and how review works; everyone taking part follows the Code of Conduct.

Security

Report a vulnerability privately through GitHub's vulnerability reporting, never in a public issue. SECURITY.md has the scope and the alternative by e-mail. The engine has no network code and needs no root. The plugin runs inside the Omarchy shell; what it reads and runs is listed in its README.

Licence

MIT © JohnAndrewsX. Plugin id jax.seldon, AUR package jax-seldon.

Acknowledgements

About

Seldon: flight recorder and planning desk for Omarchy. Rust engine + Quickshell plugin (jax.seldon).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages