Principia Deskpersonal learning system
Free · open source · macOS

A study desk that keeps its appointments.

Pick a class, set a starting point and a study time. At that time the desk rings, a lesson your own AI tutor wrote from primary documentation is already waiting, and the screen is yours again when the check is done. Understand deeply, practice daily.

  • MIT licence
  • your keys stay in the Keychain
  • nine classes, and your own
  • every lock has five ways out
The Today page of Principia Desk: a countdown ring to the next class, the study pulse with a streak and a half-year contribution map, and the class agenda
today · the countdown, the pulse and the week's appointments
What a day looks like

The lesson is written before the bell.

Nothing here waits for you to feel like it. A study time is an appointment; the desk prepares for it ahead and holds the door open.

  1. 01

    The desk prepares

    Twenty minutes before a study time, the tutor plans the next topic on your route, fetches the sources the curriculum names and writes the lesson, sized to the minutes you gave that day.

  2. 02

    It rings

    A notification and an alarm that snoozes but never dismisses. The menu bar says what is due. Nothing rings until the lesson is actually ready.

  3. 03

    You read

    Point form with reading hints, labelled callouts, diagrams, and a section rail that stays in view. Fourteen minutes of a thirty-minute session.

  4. 04

    You practise

    A stepper of concrete steps and a done-when, with a workspace that saves every keystroke and a tutor you can ask about this lesson.

  5. 05

    You are checked

    Questions grounded in what you just read. What stuck is marked; what did not comes back as retrieval on a later day. Then the desk lets go.

Nine classes, and your own

Every class starts where you already are.

Start from scratch, declare a stage with the topics you know, or take a placement check that samples every stage three times. The result is a personal path, revised whenever you change your mind.

  • LBLinux Bashthe interactive shell
  • BSBash Scriptingreusable tools
  • JSJavaScript & Browserruntime and platform
  • TSTypeScripttypes as design
  • FAFrontend Architecturestate, rendering, boundaries
  • DTDeveloper Toolingbundlers, parsers, protocols
  • SDSystem Designdistributed systems
  • DEGermanA1 to B2, 40 scenarios
  • ITItalianA1 to B2, 40 scenarios
  • +Your owndrafted by your tutor, edited by you

Each engineering course is a curriculum of topics with stages, prerequisites and two or more primary sources per topic. Lessons are taught from pages the desk fetched from those sources, not from a model's memory.

Lessons on one runtime

Written for the session you gave it.

A lesson is sized to its study time: fourteen minutes of reading, ten of practice, six of check at thirty minutes; longer days hold several whole topics with a short break between them and retrieval on earlier topics afterwards.

Every lesson names its sources and cites them. A page that could not be fetched is said so, and the reading list keeps the link the curriculum meant, marked as unreachable, rather than inventing one.

Everything is saved as you go: the reading position, the practice steps you ticked, the answers you have not submitted yet. Close the lid and come back.

A Principia Desk lesson on the CAP theorem: the session stepper, reading hints per section, a key-idea callout and the section rail
classroom · system-design · a thirty-minute session
What the desk does

Built to be honest about progress.

Declared familiarity never awards completion. A skipped check is a skipped check. The denominators on the curriculum are the ones you would want if you were paying for this.

  • Your own tutor

    Claude Code, Codex, Cursor Agent or Gemini CLI you are already signed in to; a key for Anthropic, OpenAI, Google, OpenRouter, Groq, Mistral or DeepSeek; or Ollama on this machine. A tutor per class if you like.

  • Primary sources, fetched

    Each course allows a set of documentation hosts. The desk fetches the pages, hands the tutor only what it retrieved, and falls back to mirrors when a host goes dark.

  • Placement that measures every stage

    Three questions per stage, so no stage is skipped on a lucky answer. Unit challenges let you check out of what you already know, on evidence.

  • Study times with their own shape

    Each weekday on a rule can have its own start and its own length. Appointments are durable: due at their time, missed once the day passes, made up or skipped by you.

  • Retrieval and bridges

    Topics come back when their review is due, without a provider. A failed check on a topic whose prerequisite you set aside proposes a short bridge lesson.

  • Lessons you can keep

    Any lesson downloads as a PDF or a CSV with its questions, filed by class under Documents. Your profile exports and imports whole.

  • Always on, never nagging

    A menu bar desk that says what is due and what comes next. A launch agent wakes the desk at every study time, and on wake or next login if it missed one.

  • Classes of your own

    Tell the desk what you want to be able to do. The tutor drafts the curriculum, reads it back, writes the question bank; you edit until it reads right and enrol like any class.

  • Logs you can read

    Every line a runner reports while preparing a lesson is kept for thirty days, run by run, so a failed preparation has a cause you can see.

Your own classes

Say what you want to be able to do. The tutor writes the course.

A brief in your own words: a title, the outcome, what you already know, the documentation you trust. The tutor returns four stages and twelve to thirty-six topics, each with an outcome, the mechanisms, a production scenario, misconceptions and two primary sources, held to the same validator as the bundled curricula.

Edit every topic on a card. Ask the tutor to read the draft back. Fetch every source. Have it write a placement bank. Publish, and the class is any class: study times, lessons prepared ahead, retrieval, PDFs, enforcement.

Export a class as one file and hand it to someone else's desk.

The class builder in Principia Desk: the Review step with a curriculum editor, topic cards grouped by stage and the validator's objections on a rail
classes · new class · review
Enforcement you choose

A lock you set for yourself, and can always undo.

Each class carries a focus policy. The strict one blocks Cmd+Tab, Force Quit and logout while a lesson holds the desk, so it must never be the only thing between you and your own machine. There are five ways out, and none of them needs a terminal.

enforcement-serviceper class
  1. 01
    Advisory

    The window comes to the front at the study time. Nothing is blocked.

  2. 02
    Focused

    Full screen above the menu bar, focus snaps back, other displays are sealed, media is paused. Force Quit still works.

  3. 03
    Strict

    Also blocks Cmd+Tab, Force Quit, logout and shutdown while the lesson holds the desk.

ways-outalways five
  1. 01
    Finish the check

    The ordinary way. The lesson ends and the desk lets go.

  2. 02
    Break glass

    A long phrase you set during onboarding, rendered non-copyable. Typing it pauses the lesson with its work kept and releases the lock.

  3. 03
    The recovery console

    A system-wide key combination opens a console above every window, even a blank one. Four commands in order (unlock, confirm, phrase, release) end the session; five presses in ten seconds release it even if the console cannot open.

  4. 04
    A release token

    A file named principia-unlock in your home folder, in /tmp, or at the root of any mounted volume. Keep a USB stick by the desk.

  5. 05
    The dead man's switch

    A lock lets go by itself after three hours, whatever the app believes. No lesson runs that long.

The kiosk refuses to engage until the interface reports ready, so a broken build cannot hold a lock. This rule has a history: an early version of the roulette bricked a colleague's laptop until he booted into Recovery. Every release since is held to it.

Settings · recovery

The ways out, where you can always read them.

Onboarding teaches the recovery console with a walkthrough that plays the four commands through. Settings keeps the same guide, with the keys as they read on this machine and whether the system took the combination.

The README documents every route, including the ones for a build so broken it cannot draw a window.

The Recovery section of Principia Desk settings: the key combination as keycaps, the four-command ladder, a replayable walkthrough console and the exits that need no console
settings · 03 recovery
Install

Ten minutes to the first appointment.

The desk is a signed-nothing open-source app: download the bundle from the release, or build it from source. It talks to your tutor, to the documentation hosts a course allows, and to nothing else.

requirements
  • macOS 13 or later (Windows and Linux build and run without enforcement)
  • A tutor: a CLI you are signed in to, a provider key, or Ollama with a chat model
  • To build: Rust 1.80+ and Node 20+
  1. 01Download and open

    Get the latest release. The bundle is not notarised yet, so the first launch is right-click › Open.

  2. 02Set up

    Four steps: the tutor, an optional search engine for tutors that cannot browse, your break-glass phrase with the recovery walkthrough, deploy.

  3. 03Choose a class and a starting point

    From scratch, a stage you declare, or the placement check. Add a study time. The class activates.

  4. 04Or build from source

    Everything the release does, on your machine.

    git clone https://github.com/dark-matter08/system-design-roulette.git
    cd system-design-roulette
    npm install
    npm run tauri dev
Questions

Things people ask first.

Is it free?

Yes. MIT licence, no account, no telemetry. You pay your tutor's provider, if it charges, or run Ollama for nothing.

Where does my data live?

In a SQLite database under ~/Library/Application Support/com.darkmatter.principia-desk/, backed up before every schema upgrade. Keys live in the macOS Keychain.

What does the tutor see?

The topic, its curriculum brief, your goal, your progress on that class and the pages the desk fetched. Never your keys, your escape phrase or other classes.

Can I really always get out of a lock?

Yes. Five documented routes, none needing a terminal, and the kiosk refuses to engage at all until the interface has reported ready. See the Enforcement section above.

Does it work on Windows or Linux?

It builds and runs. The lock, the launch agent and the menu bar are macOS today; help on the others is welcome.

Can I make a class for something you do not ship?

Yes. Classes › New class. Your tutor drafts the curriculum, you edit it, the desk validates and publishes it. Export it as a file to share.

What became of System Design Roulette?

This. Same database, same visual character, a different shape: classes you schedule instead of one daily roulette. The changelog tells it.

How do I report a lockout bug?

Privately, as SECURITY.md asks. Ordinary bugs go in the issue tracker.

all systems nominalregion: home-1

Make room for learning.

One class, one study time, and the desk does the rest. It is open source; read it before you trust it.