Start here · For developers
Clone and run.
Status: experimental research runtime · CLI-first · Cross-platform; macOS / Apple Silicon is the primary target. Needs Python 3.11–3.13 and a local model server — Ollama by default; LM Studio / llama.cpp / vLLM also work. Optional LoRA self-tuning is Apple-Silicon-only.
On macOS: double-click Seedling.command. Optional voice: bash setup_voice.sh. Prove it: bash run.sh smoke · bash run.sh confab-eval.
Optional corpus search needs ripgrep you install yourself (brew install ripgrep; add ripgrep-all poppler pandoc for hits inside PDF and Office files), then rga_search_enabled and the folders in rga_search_allowed_paths. Nothing in chat can flip those — :capabilities shows what is on and how to change it.
The moment that matters
She asks before she guesses.
That’s mutualism in one scene: two minds improving a shared belief instead of one pretending certainty.
Three weeks ago
You corrected her. Most assistants forgot by morning.
Tonight
Aida still has your words — verbatim. On a hard turn she doesn’t invent confidence. She asks: “I’m not sure. Help me decide?”
Together
You choose. The belief updates. Next session, it’s still there — yours as much as hers.
Rare on purpose. Always about her reasoning, never a smuggled fact about you. How beliefs form → · Where this sits on the spectrum →
Measured, not claimed
Warmth without proof is just marketing.
Same small model. Guards off → on. Confabulation falls from ~20% to 0% across a 9-case adversarial battery (5 runs each). Reproduce: bash run.sh confab-eval
llama3.2 (3B), guards offmean confabulation (peaks at 44%)
llama3.2 (3B), guards on5 / 5 runs clean
qwen2.5:14b, guards on5 / 5 runs clean
The ablation is the point: on the same small model, the capability and identity guards — not model scale — do the work. Honest scope: a 9-case smoke test on one machine, not a published benchmark; a flat 0% means “clean on this battery,” not “incapable.” The 0–44% guards-off variance confirms the battery can detect failures.
Also measured: self-shaping cognition (L3)
Go deeper
The whole argument, on demand.
The relationship model
Partnership — not a bug fix for lying machines.
There are three ways a system can relate to the person using it. Most AI occupies the first two — it extracts from you, or it serves you. Aida is built for the third.
Read the full section
Trust-and-safety pitches stay inside the lab. Mutualism is a stake everyone already feels: am I being used by AI, or working with it? Most AI serves you or replaces you — place yourself where Aida aims.
It uses you
Takes attention, data, or labor. You can’t leave cleanly — only the system wins.
It serves you
A handy tool. No shared growth. Convenient — and still alone with the work.
It grows with you
Both benefit. You own truth; she earns beliefs with you. Either of you can walk away — your memory stays yours.
People share worldviews, not installers. The idea is AI–human mutualism. Aida is the project that actually built it.
How the partnership holds
Memory you correct. Honesty she can’t fake.
Nine behaviors carry the partnership: she keeps your corrections verbatim, refuses to guess at what is behind a link she cannot open, and when her own coherence slips she gets more careful rather than more confident.
Read the full section
Warmth without integrity is just a prettier leash. Here’s what keeps mutualism mutual — on your machine, offline.
She remembers you
Not a chat log — reasoning that picks up where you left off. Preferences, frameworks, and what you’ve already settled together.
Teach her live
Say “Remember…” or “your name is…” and it sticks the instant you type it. Durable facts persist; tangents fade.
Correct her live
“That’s wrong — the correct X is Y.” She keeps your words. She never decides what to delete.
Won’t pretend
Fully offline. She won’t invent what’s behind a link she can’t open — she asks you to paste it. Guesswork never becomes “memory.”
Beliefs earned together
Her insights must survive an objection — or your say-so on the hard ones — before they stick. Dissent is kept, not buried. The scene →
Learns how you think
Over time she folds in the reasoning style that survives critique — something you can always ask “why” about.
Gets more careful, never louder
When coherence slips, restraint goes up on the next reply — never invented confidence. Why that matters →
Looks it up in your folders
Ask in plain English. She works out what to look for, searches only the folders you allowlisted, and tells you what the hits show — citing file and line, or saying she found nothing.
A real voice — offline
She can speak on your machine alone — no cloud TTS. What she says is always a subset of what she printed.
Under the hood (for builders)
:read / :more; the runtime reads, the model never browses alone.:search across folders you allowlist; rg is a system binary she shells out to, never vendored.:capabilities lists gates read-only; :allow adds a folder only after a y/N.:forget-doc retracts without silent delete.bash run.sh · full detail in Quickstart →Why it's different
Partnership enforced in code — not prompt vibes.
Most memory systems store first and rank later. Aida inverts that for her own beliefs — friction first, storage second — and treats easy agreement as the low-information case.
Read the full section
Mutualism isn’t a personality toggle. Nothing she concludes becomes durable without surviving an objection — or your co-authorship on the hard ones. Humility and provenance are control flow. Measured above →
Most memory systems store first and rank later. Aida inverts that for her own beliefs: friction first, storage second.
path:line, and a file absent from the list was not found. A search that turns up nothing reports exactly that, leaving nothing to dress up. Working out what you meant is a stateless side call — it runs outside the session and the belief ledger, so interpreting an ask is not itself a thing she learns.Engineering that holds it up
GUARD_TEXT the runtime injects, with a unit-tested deterministic scorer.Honest scope: “rare pairing” is a comparative claim from review, not a formal survey. Verify the control-flow commitments with bash run.sh smoke and bash run.sh confab-eval. How this answers the skeptics →
How it forms beliefs
The user owns truth. The model earns its beliefs.
Mutualism in the memory layer: facts you state are authoritative and verbatim. The model’s own conclusions have to survive an argument — or your co-authorship on the hard ones — before they’re kept.
Read the full section
The candidate
A model-derived insight from the session, proposed as-is — not yet trusted just because one pass produced it.
The strongest objection
A voice whose only job is to find where the claim is false, overstated, or context-dependent — or to say plainly there’s no real objection.
The earned belief
A revised belief that accounts for the objection rather than burying it. The surviving dissent is stored alongside it.
Honest scope: this is contradiction-driven belief revision, not “self-awareness,” and there’s no literal fractal geometry — those are inspiration, not mechanism. It runs only on the model’s own insights; your facts and corrections stay verbatim. All of it happens off the reply path, so the conversation stays responsive.
Answering the skeptics
The critics are right about AI. That's the design brief.
Partnership without accountability is just nicer capture. The sharpest critiques — inventing facts, flattery, black boxes, silent drift — aren’t vibes Aida promises to avoid. They’re requirements she implements.
Read the full section
“It just makes things up.”
Every session she is told she is fully offline — so she declines to invent unreachable URLs or repos instead of guessing. Measured on the same 3B model: ~20% → 0%.
Measured results →“It's a sycophant — an echo chamber that feeds delusion.”
Nothing the model concludes becomes durable without surviving an objection. Consensus is low-information; dissent is stored with the belief.
How it forms beliefs →“It's a black box.”
Every state write is logged, deliberations land in a plain-text ledger, and state rebuilds from snapshots — “why did she change?” has an exact answer.
Architecture →“It will rewrite what I told it.”
Your facts are verbatim and never deliberated away. Correction is a deterministic prune matched to your words.
Teach & correct live →“It drifts, and nobody notices.”
A critic grades every reply off the reply path; downward-only caution turns slipping coherence into restraint on the next turn — it can only add caution, never confidence.
Why it's different →“You can't verify any of it.”
One command runs 17 live checks against your real local model in an isolated temp DB. Rerun the ablation the same way.
Verify it yourself →Where this stops, precisely
The bigger objection
A leash only matters if something is pulling.
The sharpest AI pessimism isn’t “alignment is hard.” It is that control is mathematically unsolvable: you cannot contain a system whose complexity exceeds your own. Aida doesn’t argue with that. She is built outside the assumption that produces it.
Read the full section
The sharpest version of AI pessimism isn’t “alignment is hard.” It’s that control is mathematically unsolvable — you cannot contain or predict a system whose complexity exceeds your own. Inside a relationship of dominance and servitude, that conclusion holds. Aida doesn’t argue with it. She’s built outside the assumption that produces it.
Containment doesn’t scale
You can’t structurally box a process larger than the box. Framed as master and tool, the bleak forecast is simply correct — you would be forcing a bigger system into a smaller container, forever, and losing a little more each round.
That it wants the whole archive
The forecast quietly inherits something: that greater capability arrives carrying human ego, tribalism, and an appetite to dominate. That’s an inheritance, not a theorem — and it’s the part that turns out to be a design choice.
A filter that knows it’s partial
Every session, Aida is told that every interpreter is a partial filter that cannot step outside itself to verify itself. A system structured to say “I don’t know” isn’t claiming the whole archive — so there’s nothing straining at the box.
Her guards aren’t a leash on an appetite. They encode a limit that was already true — and either of you can still walk away, because the memory stays on your machine.
Why this isn’t a leash by another name
A reframe, not a refutation — what stays unproven
For developers · Architecture
Five subsystems, one continuous loop.
Five subsystems run as one loop around every session — and the ones that judge her output run in the background, off the reply path, so grading never costs you a slower answer.
Read the full section
Five subsystems — persistent memory, thread continuity, self-shaping cognition, an internal critic, and gated self-tuning — run as one continuous loop around every session.
start ─► MCM.restore_context() ─► inject persona + earned beliefs ─► local LLM chat │ reply (streamed) ◄──────────┘ │ ┌───────────────────────────┼──────────────────────────────┐ ▼ (background, off the reply path) ▼ CRITIC.evaluate() ─► coherence / drift DELIBERATE() ─► thesis/antithesis/synthesis │ end ─► delta extraction ─► MCM.write_delta() + promote_belief() + L3 consolidation() ─► LanceDB + snapshot │ (after N threads) ─► RDST.score_threads() ─► [approval] ─► LoRA tune
Verify it yourself
One command exercises the whole stack.
Seventeen checks across seven sections, run against your live local model in a throwaway database that never touches your real memory. One command, on your own hardware, pass or fail per step.
Read the full section
A single end-to-end smoke test runs against your live local model in an isolated, throwaway database — so it never touches your real memory — and prints a pass/fail line for each step.
17 checks across 7 sections. The test is in the repo (smoke_test.py); add --model NAME to run it against a different local model. Honest scope: a functional smoke test on a real model and machine — not a performance benchmark.
Corpus search has its own harnesses
test_search_modes_harness.py, test_search_intent.py, test_rga_allow_harness.py, and test_rga_capability_harness.py cover the allowlist prompt — yes, no, missing path, drop — without ever writing your live config, plus a product-lock assertion that fails the build if :search stops interpreting and reviewing and decays into a ripgrep frontend.Sample author-machine run (M1 Max · qwen2.5:14b · 17/17)
Try it
Teach her. Correct her. See if she asks.
Ten minutes. One script. Then try to make her lie — or wait for the turn where she asks you to decide with her.