NOW · Team · Open source
Principia Desk
A free study desk for macOS, Windows and Linux: classes with a personal starting point, lessons your own AI tutor writes from primary documentation, study times that ring, and a lock you choose and can always undo.
Architecture
Mission
It started as System Design Roulette: a TikTok video about spinning a wheel of system-design topics, and a version of that which does not ask. Once a day the app took the screen for a quiz, a spin and a course written on the spot by the coding agent I already paid for. It taught me system design for three months and it bricked a colleague's laptop once.
Principia Desk is what it became after that colleague came back with a bigger idea: not one subject, but classes. Nine of them now, from Linux Bash to German, each with a personal starting point, a curriculum of topics with primary sources, study times that ring, and enforcement you set per class. And, since September, classes you make yourself: say what you want to be able to do and the tutor drafts the course.
Manifest
| Layer | Choice | Version | Why |
|---|---|---|---|
| app | Tauri | 2 | One codebase for macOS, Windows and Linux: the kiosk window, the tray, the platform scheduler and the global shortcut, with a web UI inside. |
| app | SvelteKit + Svelte 5 | 5 | Every screen is a node panel on a blueprint grid; runes made the state cheap. |
| languages | Rust | — | Authority: sessions, locks, grading, selection, scheduling and the SQLite runtime. |
| data | SQLite | — | One database, WAL journaling, numbered migrations, a backup before each upgrade. |
| agents | CLI agents, provider keys or Ollama | — | Lessons come from the tutor you already have; the desk fetches the sources itself. |
| site | Astro | — | principia.ndelucien.com: static files behind the box-wide nginx, no scripts, no analytics. |
Decisions
Rust owns all authority. Lifecycles, locks, grading and selection live in the backend; the webview renders and asks. Every lesson is a durable session with saved steps, so closing the lid loses nothing.
Lessons from fetched pages, not from memory. Each course allows a set of documentation hosts. The desk fetches the pages, hands the tutor only what it retrieved, cites them, and says so when a host could not be reached.
Five ways out of every lock, none needing a terminal. A break-glass phrase, a recovery console on a system-wide key combination, a release token on any USB stick, a three-hour dead man's switch, and the kiosk refusing to engage until the interface reports ready.
The tutor is whatever you already have. Claude Code, Codex, Cursor or Gemini CLIs, a provider key in the Keychain, or Ollama on the machine. A tutor per class, a model shortlist per runner.
Numbered, checksummed migrations with a backup before each. Sixteen so far. The rename from the roulette adopted the old profile through SQLite's backup API and left the original in place.
Impact
- Classes
- 9 + yours
- Curriculum topics
- 300
- Ways out of a lock
- 5
- Platforms
- macOS · Windows · Linux
- Version
- 0.2.6
Version 0.1.0 shipped in June as System Design Roulette; 0.2.0 shipped in September as Principia Desk, with installers for Apple Silicon and Intel Macs, Windows and Linux built by the release pipeline. The desk has 300 curriculum topics across nine classes, placement checks, durable appointments, a study alarm, PDF and CSV export, a recovery console, a class builder with practice questions, and a site at principia.ndelucien.com with the documentation and an install guide. 194 commits, two people, MIT.
What broke
A colleague installed an early build to try it. The kiosk engaged before the interface had drawn anything, the escape hatch lived inside that blank window, and the release token had to be created from a terminal the lock did not allow. He booted into Recovery Mode to delete the launch agent. Every rule the project has about enforcement dates from that afternoon: the white-screen guard, the token on any mounted volume, the dead man's switch, and later the recovery console on a key combination the system registers rather than the page. A lock must always be escapable without a terminal, or it does not ship.
Ship log
- First commit: the roulette, the kiosk, the quiz
- The bricked laptop; the white-screen guard and the release token the same day
- v0.1.0, System Design Roulette
- A colleague widens it: classroom subjects, languages, research grounding, chat
- Principia Desk: classes, paths, a shared runtime, appointments
- Your own classes, the recovery console, and the site goes live
- v0.2.0, Principia Desk: installers for macOS, Windows and Linux
- 0.2.1 — keys in each platform's secret store, updates from inside the desk, SearXNG from the desk, profile export and import
- 0.2.2 — the first desk that installs its own update, signature checked
- 0.2.3–0.2.6 — VibeVoice on every platform; Windows finds tools installed after launch; SearXNG without git, and on Windows
- Now: 0.2.6, 206 commits, installers for macOS, Windows and Linux