Releases: dylanp12/alluvia
Release list
Alluvia 0.3.0 — the first five minutes
The first five minutes, fixed — and MCP writes become opt-in.
- Newest sessions first — distillation now always processes your most
recent sessions first, so the map is freshest where it matters. - First-run cap — the very first refresh distills your ~50 most recent
sessions and says so ("the remaining N backfill automatically on the next
refresh"). You see labeled themes, connections, and unfinished threads in
minutes instead of waiting out a full-history distill — and the label/
status stages keep budget headroom on day one. Tune or disable with
ALLUVIA_FIRST_RUN_CAP(0 turns it off). (#11-class first-run failures,
designed out.) - MCP is read-only by default (#12) —
rate_proposalandpropose_next
(the tools that write your judgments or spend your LLM budget) now return
a clear "disabled" message unless you opt in on your machine:
[mcp] writes = truein config.toml orALLUVIA_MCP_WRITES=1. Surprise
writes are impossible, not merely detectable. - Windows CI (#13) — the platform detection that already claimed Windows
is now tested there. - Docs: SECURITY.md (private vulnerability reporting), CONTRIBUTING.md,
a ChatGPT-history import guide, and a README that says the quiet part
loudly: the whole product works end-to-end on a free-tier key.
Alluvia 0.2.2 — sediment & gold
Visual identity — sediment & gold. alluvia now looks like what it does: a
patient field survey of your own thinking, with one scarce point of gold at the
find.
- New mark & wordmark — three tributaries converge at a gold node and
continue as one stem (it diagrams the product, and reads as a merge graph).
Lockup, wide/square marks, favicon, and a social-preview card live in
assets/; the README carries a dark/light-aware lockup. - Dashboard reskin — the
alluvia servedashboard moves onto the brand
palette (Ink/Basin/Paper/Wash/Silt/Gold), now light- and dark-aware instead
of dark-only, with IBM Plex Mono station labels and an inlined favicon. Zero
external requests, as before. - Accessible by construction — every theme status carries a labelled dot
(never colour alone), status and source palettes are contrast- and
colour-vision-validated on both grounds, and gold is a filled mark reserved
for the find/active state — never text on a light surface. - Brand guide —
docs/BRAND.mddocuments the palette, the scarcity rule, the
ground-scoped token roles, and the voice. - No engine, CLI, MCP, or storage behaviour changed.
Install: uv tool install alluvia · PyPI
Alluvia 0.2.1 — live resource usage
alluvia top(#10) — live resource usage of every running alluvia
process: sampled CPU %, RAM, cumulative disk read/write, uptime, with a
machine context line.--watch Nfor a refreshing view;statusshows
the same process list.- Network accounting at the source (#10) — per-process network bytes
aren't visible to unprivileged userland on any OS, and alluvia's only
traffic is its LLM calls — so the governor now counts them itself:
calls and bytes sent/received per model, persisted with the breaker
state and reported bytop. - New dependency: psutil (cross-platform process metrics).
Alluvia 0.2.0 — the good citizen
The good-citizen release: alluvia now runs concurrently, dies cleanly, shows
you everything it keeps, and repairs itself (#5, #6, #7, #8).
- Concurrent sessions (#5) — the store runs in WAL mode (readers never
block a running refresh; legacy stores upgrade transparently), refresh
takes a single-writer lock released by the OS on any process death
("already running (pid N)" instead of double-spending your LLM budget),
andservereuses an already-running dashboard or walks to a free port. - Kill-anytime contract (#5) — any alluvia process can be killed at any
instant with zero corruption and zero cleanup debt. SIGTERM behaves like
Ctrl-C; interrupting a refresh prints "paused — everything done so far is
saved" and resumes on the next run. alluvia status(#6) — every path alluvia touches with sizes, the
store broken down by data class (raw = source of truth · derived =
rebuildable · judgments = yours), and what's live right now.--jsonfor
scripting.alluvia doctor(#7) — diagnoses the whole installation and applies
every safe repair automatically: WAL on legacy stores, schema migrations,
pruning orphaned derived rows, config permissions, stale digest flags,
impossible governor cooldowns. Raw data and judgments are never touched.
--checkreports without repairing (exit 1 if repairs are needed),
--liveproves your provider key with one tiny call, and
--rebuild-derivedis the confirmed recovery lever that discards derived
data while raw sessions and your ratings survive.--verboseandrefresh --plan(#8) — see the pipeline and governor
think; preview exactly what a refresh would do (sessions pending, theme
work, cooldowns in effect) without spending a single LLM call.
Install: uv tool install alluvia · PyPI · Closes #5, #6, #7, #8
Alluvia 0.1.2 — see what's happening
You can now see what alluvia is doing (#4). Long stages used to run silently and
look hung — worst of all a first refresh, which downloads the local
embedding model with no output at all.
- Live progress everywhere it was silent —
refreshshows each stage
(distilling N sessions, embedding, mapping themes, linking) with rich
progress bars on a terminal and plain line output when piped or in CI.
ingestshows a running session count. - Deliberate waits are narrated — when the governor waits out a rate
limit it says so (⏳ rate-limited: waiting 30s (model)) instead of
freezing; the first-run embedding-model download announces itself. - Embeddings run in batches so progress moves (and memory stays flat).
alluvia --version.- Issue templates (bug report asks exactly for the refresh summary and
version; feature template fits both small asks and full RFCs) and a PR
template with a test-first checklist. - MCP tools, library callers, and the test suite see zero new output —
progress is CLI-only by construction.
Alluvia 0.1.1 — ride out rate limits
Resilience release: provider rate limits no longer darken the map (#1, #2, #3).
- LLM governor — every provider call now runs behind a provider-agnostic
governor: escalating cooldown ladder, per-model circuit breakers, and
role→model fallthrough chains, all driven by abstract call outcomes (HTTP
status and the standardRetry-Afterheader are optional fast-paths, never
dependencies). Breaker state persists in SQLite, so short CLI runs respect
cooldowns learned by earlier runs instead of re-hammering an exhausted model. - Fallthrough chains — on Groq's free tier each model has its own daily
budget; distill/label/status/why calls fall through to sibling models when
the head model hits a wall.proposenever falls through — generation fails
loud rather than silently downgrading. Override per role with
ALLUVIA_LLM_CHAIN_<ROLE>(comma-separated). unfinishednever goes dark — when the status classifier is
unavailable, recurring themes get a heuristic status (recently touched →
open, stale → dormant) instead ofunknown. Heuristics are never cached;
the classifier upgrades them on a later refresh.- Degradation is visible —
refreshprints a per-stage summary and a
warning with the provider retry time when a stage degraded;themes/
unfinished, the MCP tools, and the dashboard surface the same signal. An
all-unknownmap now says "the classifier hasn't completed" instead of
pretending nothing is unfinished. - Distillation pauses immediately (and resumably) when every model is cooling;
fallback labels cut at word boundaries; adaptive pacing (AIMD) discovers a
provider's sustainable request rate empirically. - Breaking: every environment variable now uses the
ALLUVIA_prefix
(ALLUVIA_DB,ALLUVIA_LLM_MODEL_<ROLE>,ALLUVIA_LLM_CHAIN_<ROLE>, …) — 0.1.0
shipped them under an inconsistent prefix. If you exported variables for
0.1.0, re-export them with the new prefix;config.tomlusers are
unaffected.
Alluvia 0.1.0 — first release
First installable release. Everything to date: five source adapters
(Claude Code, Cursor, Windsurf*, Antigravity*, ChatGPT export), raw-first
SQLite store with a swappable vector index (sqlite-vec/numpy), the
distill→embed→cluster→label→status→link engine, four lenses
(themes / connections / unfinished / propose) with a human ratings loop,
a proactive weekly digest with mute + dismissal-learning, eight MCP tools,
multi-provider role-mapped LLM support (Groq/OpenAI/Anthropic), config.toml
alluvia initonboarding, and cross-platform source detection.
(*Windsurf/Antigravity ship log-and-skip: their stores are schema-less
protobuf — see docs/DEBT.md.)
Every capability was validated against a real 400+-session corpus through
live gates; see docs/validation/.
Install: uv tool install alluvia · PyPI