Skip to content

aivrar/sortilune

Repository files navigation

Sortilune

Sortilune — Oracle landing

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.

License: MIT Platform Bundle Built with Tauri No telemetry No account Vanilla JS

The name Sortilune (sortilege + lune) means "moon-cast lots" — divination by lots, but the lots are cast by the universe.


Features

Eight chambers, eight uses for physical randomness

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

The Entropy Engine

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).

Local archive

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.

Other things

  • 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.

Visual tour

Oracle Decider
The Oracle drawing a Cosmic card. Real NIST pulse signature in the provenance. The Decider in high-stakes mode. NIST-anchored. Exportable as a PNG certificate.
Diary Constraint
The Diary with the day's five-part prompt (question/word/number/direction/color). The Constraint drawn from the Whimsical category.
Canvas Symphony
The Canvas — a constellation generated from entropy. 4K PNG export. The Symphony — earthquakes & beacon pulses as tones, live planet map.
Beacon Settings
The Beacon — composing a sealed prediction. Settings — per-source enable + Test-All button.

Quick Start

1. Download

Grab sortilune.exe from the Releases page, or use the one in this repo's root (sortilune.exe, 6.13 MB).

2. Run

sortilune.exe

That's it. No install, no admin rights, no system Python, no Docker, no account.

3. First-time use

  • 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.

Requirements

  • 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 system source fallback (with honest provenance labeling).
  • No NVIDIA GPU required. No model downloads. The app is text + SVG + Web Audio, end to end.

Documentation

Comprehensive per-chamber documentation lives on the wiki:

The full original build specification and implementation notes are also in this repo.


Architecture

                       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.


Credits

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.

Code & tooling

  • 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 wallpaper Rust crate.
  • Built primarily with Claude Code.

Inspiration

  • Brian Eno & Peter SchmidtOblique 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.


License

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.

About

Desktop divination by physical randomness. Eight chambers fed by NIST Beacon, ANU Quantum, USGS quakes, Open-Meteo weather, and random.org. One 6 MB portable .exe. No accounts, no telemetry, no install.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors