Desktop divination by physical randomness — Tarot, I-Ching, Runes, a custom cosmic deck, a decision-maker with cryptographic certificates, a daily journal anchored to a NIST beacon pulse, a generative artwork studio, a live planetary soundscape, and a tamper-evident timestamp tool. Every random value is traceable to a real-world source: atmospheric noise, quantum vacuum fluctuations, atomic clocks, public-beacon timestamps, planetary weather, seismic activity. No install. No accounts. No telemetry. One 6 MB .exe.
The name Sortilune (sortilege + lune) means "moon-cast lots" — divination by lots, but the lots are cast by the universe.
| Chamber | What it does | Sources used |
|---|---|---|
| The Oracle | Daily card-style draw from Tarot (78), I-Ching (64), Runes (24), or an original Cosmic deck (36). Each draw renders a unique entropy-seeded SVG illustration. | NIST Beacon, fallback chain |
| The Decider | Make a choice with full provenance. High-stakes mode pins NIST Beacon for cryptographic anchoring. Export the result as a 1600×1000 PNG Decision Certificate. Re-rolls are saved too — honesty stays in the archive. | NIST Beacon (high-stakes) or user-pinned |
| The Diary | Daily journal where each day's entry is anchored to a NIST pulse that hands you a question (one of 206 reflective prompts), a word (one of 658 evocative single words), a number 1–100, a color, and a cardinal direction to write against. Markdown autosave to plain .md files. |
NIST Beacon |
| The Constraint | A short discipline drawn at random — Oblique-Strategies-style. ~250 items across creative / behavioral / perceptual / linguistic / whimsical categories. Accept, pass, or close — both accepts and passes are archived. | Preferred chain |
| The Canvas | Generative scientific-illustration artwork: constellation, stellar spectrum, particle traces, Lissajous, Voronoi cells, wave interference. Six generators. 4K PNG export. Set as desktop wallpaper. | Quantum (preferred), full chain |
| The Symphony | Live ambient soundscape from planetary activity. Earthquakes trigger sine tones (depth → pitch, magnitude → loudness, longitude → stereo pan). Wind speed modulates a low pad's filter. NIST pulses ring as bell-like chimes. World map shows it all. | USGS, Open-Meteo, NIST (live polling) |
| The Beacon | Cryptographically tamper-evident timestamp. Write a prediction, vow, or decision. Seal it: SHA-256 of (your text + the current NIST pulse value) becomes your entry hash. Anyone, anytime, can re-fetch that pulse from NIST's public archive and verify your hash. Proves when, not what. |
NIST Beacon (mandatory) |
| The Lottery | Six pickers: coin, dice, wheel, name-picker, random number, list shuffle. Three ceremony levels: Quick / Ritual / Receipt. Recent rolls visible in a session panel. | Preferred chain |
A single source of truth for every random value in the app. Tries six independent sources with automatic graceful fallback:
| Order | Source | Flavor | Provenance quality |
|---|---|---|---|
| 1 | NIST Randomness Beacon v2.0 | beacon | Cryptographically signed by NIST. Pulse archived publicly forever. The gold standard. |
| 2 | USGS earthquakes | seismic | Derived from the past hour of global quakes via SHA-256. Always available. |
| 3 | Open-Meteo weather | weather | Derived from current weather in 5 rotating world cities. No API key. |
| 4 | random.org | atmospheric | Atmospheric radio noise. ~1000 reqs/day per IP. No API key. |
| 5 | ANU Quantum | quantum | Quantum vacuum fluctuations. Public endpoint; demotes silently on failure. |
| 6 | System fallback | system | crypto.getRandomValues() — honestly labeled when used. Never silently primary. |
Per-source 60-second cache, sliding byte-offset (two requests within a minute share one pulse but get different bytes), 10 req/min rate limit, 3-second timeout, rejection-sampling integer conversion (no modulo bias).
Everything you save lives forever in plain readable files under your OS's app-data directory:
- Windows:
%APPDATA%\com.sortilune.desktop\archive\ - macOS:
~/Library/Application Support/com.sortilune.desktop/archive/ - Linux:
~/.local/share/com.sortilune.desktop/archive/
Each chamber gets a subfolder. JSON files have a human_summary field at the top so you can grok them at a glance. Diary entries are plain Markdown with the day's prompt in YAML frontmatter. You can uninstall Sortilune and your archive still makes sense in any text editor.
- Three themes — Cosmic Dark (default), Cosmic Light, High Contrast — switchable in the topbar, persisted locally.
- Subtle starfield background — canvas-based, ~3 fps, pauses when the window is hidden. <1% CPU at idle.
- Built-in source health panel in Settings — "Test all sources" button reports OK / ERR with latency for each.
- No background processes. No notifications. No daily-prompt nags. Open the app when you want it.
Grab sortilune.exe from the Releases page, or use the one in this repo's root (sortilune.exe, 6.13 MB).
sortilune.exeThat's it. No install, no admin rights, no system Python, no Docker, no account.
- The Oracle is the default landing chamber. Pick a deck (Tarot / I-Ching / Runes / Cosmic), then click Draw.
- Hit F12 any time to open DevTools and inspect what's happening under the hood.
- Open Settings (gear icon top-right) → Test all sources to verify the entropy sources are reachable from your network.
- Switch themes via the sun/moon/contrast pills in the topbar.
- Windows 10 1803+ or Windows 11 — Microsoft WebView2 runtime ships preinstalled on these.
- macOS and Linux also supported (built from the same codebase via
cargo tauri build— see below). - An internet connection for NIST / USGS / Open-Meteo / random.org / ANU. Everything still works offline via the
systemsource fallback (with honest provenance labeling). - No NVIDIA GPU required. No model downloads. The app is text + SVG + Web Audio, end to end.
Comprehensive per-chamber documentation lives on the wiki:
- Installation
- The Oracle
- The Decider
- The Diary
- The Constraint
- The Canvas
- The Symphony
- The Beacon
- The Lottery
- The Entropy Engine (technical)
- The Archive (file format reference)
- Building from source
- FAQ
The full original build specification and implementation notes are also in this repo.
Sortilune (≈6 MB portable .exe)
│
┌───────────────────┴───────────────────┐
│ │
Tauri 2.x shell WebView2 (HTML/CSS/JS)
+ tauri-plugin-http │
+ tauri-plugin-fs ┌────────────────┴──────────────────┐
+ wallpaper crate │ Chamber Layer │
│ │ Oracle Decider Diary Beacon │
│ │ Constraint Canvas Symphony │
│ │ Lottery Archive Settings │
│ └────────────────┬──────────────────┘
│ │
│ ┌────────────────┴──────────────────┐
│ │ The Entropy Engine │
│ │ request({kind, range, count, │
│ │ source, choices}) │
│ │ → { value, provenance } │
│ │ │
│ │ rejection-sampling conversion │
│ │ 60s cache + sliding byte offset │
│ │ 10 req/min rate limit │
│ │ 3s per-source timeout + fallback │
│ └────────────────┬──────────────────┘
│ │
│ ┌────────────────┴──────────────────┐
│ │ Six source adapters │
│ (HTTP/HTTPS) │ nist-beacon.js │
│◄────────────────────┤ usgs-seismic.js │
│ │ open-meteo.js │
│ │ random-org.js │
│ │ anu-quantum.js │
│ │ system.js │
│ └───────────────────────────────────┘
│
▼
OS app-data dir
archive/<chamber>/<timestamp>__<type>_<id>.{json,md,svg,png}
Vanilla JS frontend, no framework. CSS custom-property design tokens. Entropy engine is one file. Each chamber is a lazily-imported ES module that receives a shared ctx = { entropy, archive, state, settings, navigate }. The whole frontend gzips to ~88 KB across 80 lazy-loaded chunks.
Sortilune's premise depends entirely on these public services existing. They are credited prominently in the app's About panel and in every archived item that drew from them. Use Sortilune as an excuse to remember they exist.
- NIST — Randomness Beacon v2.0. Cryptographically signed 512-bit values, every 60 seconds, archived forever.
- ANU (Australian National University) — Quantum Random Numbers Server. Vacuum-fluctuation entropy from a live photodetector stream.
- random.org — Atmospheric radio noise. Operating from Dublin since 1998.
- USGS — Earthquake feed. Global seismic activity, updated every minute.
- NOAA / Open-Meteo — Open-Meteo forecast API. Free, no API key, global weather data.
- Built with Tauri 2.x — Rust + WebView2/WebKitGTK/WKWebView. The reason this is 6 MB and not 200 MB.
- Continent outlines: Natural Earth 110 m land — simplified via Ramer-Douglas-Peucker.
- Wallpaper-setting: the
wallpaperRust crate. - Built primarily with Claude Code.
- Brian Eno & Peter Schmidt — Oblique Strategies (1975), the deck of cards that became The Constraint chamber.
- The Wilhelm/Baynes I-Ching translation tradition and the Rider-Waite-Smith Tarot tradition — read for tone, not copied for content.
- The Voyager Golden Record, the Pioneer plaque, and Edward Tufte — the visual reference for "cosmic-scientific instrument that happens to be beautiful."
See CREDITS.md for the full list including every dependency, dataset, and inspiration.
MIT — copyright (c) 2026 aivrar.
The card libraries (Tarot, I-Ching, Runes, Cosmic deck), the diary prompts and word list, and the constraint libraries are also MIT-licensed and free to remix.
Naturally, the data served by NIST, USGS, NOAA/Open-Meteo, random.org, and ANU is governed by their respective public-data terms — see each provider's site for details. Sortilune fetches and reports their data; it does not relicense it.







