alden

Learning and memory

Alden learns what you look for, per repo, from what you already do: what you mark Useful or Not useful (on places to look, the model's findings, checks and PR rows), and the PRs you open ahead of where it ranked them. It also keeps notes you write about what you care about. Everything it uses is listed in alden memory (and the Memory view in alden ui), each item says what it changes, and any of it can be forgotten.

Nothing here leaves your machine, except your notes: the model gets those with each review (see Privacy).

What it learns

From Rule What changes
Useful on a check's flags 3 or more, at least 3 to 1 That check goes first among places to look, marked "↑ You usually agree with …". The model is told you care about it.
Not useful on a check's flags 3 or more, at least 3 to 1 That check's flags are left out of places to look, unless high severity. The briefing lists them as hidden, with the reason.
Dismiss on one place in a PR Once A re-review of that PR leaves that place out, and says so. Other PRs are unaffected, and nothing is learned from it.
PRs you open, or mark Useful in the queue 3 or more, at least 60% of the time, in the last 90 days PRs like that rank higher, with a reason such as "ranked higher: you usually open PRs touching db/migrations/ first".
PRs you mark Not useful in the queue 3 or more, at least 3 to 1 PRs like that rank lower: "ranked lower: you marked 4 PRs labelled docs not useful".
Dismiss on a PR in the queue Once The PR leaves the queue until it changes (a new push or comment), listed under "dismissed · show".

A few rules keep this honest:

What counts as "PRs like that": the sensitive directories a PR touches (from queue.sensitivePaths), dependency changes, its author (not bots), and its labels.

Your notes

alden memory add "Money is in cents, never floats"
alden memory add --repo acme/shop "Server actions must check the session first"

Notes are per repo (by default the clone you're in) and go to the model with every review of that repo, under "What the reviewer cares about", marked as coming from you rather than the PR's author. At most 12 notes are sent, each cut to 300 characters. The briefing says how many the model was given.

Seeing, changing and forgetting

The Memory view in alden ui lists each repo, then "What you look for" and "What you skip" in it. Each item says where it came from and what it changes; notes can be edited, anything can be forgotten (and the forget undone), and learning can be paused. The same from a terminal:

alden memory                       # this clone's repo
alden memory --repo acme/shop --json
alden memory edit note:1a2b3c4d "Money is in cents, never floats"
alden memory forget check:tests.missing:down
alden memory restore check:tests.missing:down
alden memory forget --all
alden memory pause                 # keep what was learned, stop applying it
alden memory resume

Forgetting a learned item also forgets what it was learned from: only feedback after you forget it counts, so it comes back only if your reactions keep pointing that way. Restoring takes the forget back. While learning is paused, your reactions are still saved and notes still go to the model; dismissals still apply, since you asked for them directly.

To take back a reaction, press the same button again in alden ui (it toggles off).

Where it's kept

In ~/.alden/alden.db, a SQLite database (WAL mode, so the CLI and the UI can write at once). Feedback, opens and notes are stored as append-only events with unique ids, so a future sync can upload just what it hasn't sent. The same file holds spending and when you first used Alden on each repo.

Alden needs Node 22.13 or later for the database (the standalone binary has it built in). The first run on an older ~/.alden imports the old JSON files (feedback/, spend/, usage.json) once and moves them to ~/.alden/legacy/.

Privacy

Learning happens on your machine and its data stays there. Your notes, and the checks you care about (as one line each, e.g. "Cares about migration issues"), are sent to your model provider with each review; nothing else from memory is. With --no-llm, nothing is. alden feedback --export shares feedback only, with names removed.