What it is
Anima is a background daemon that reads a live working session in real time — the model's reasoning, its tool calls, its output, the whole stream — and watches for patterns the moment-to-moment focus tends to miss. It does not modify anything. It does not block anything. It observes, keeps a private running journal, and when a signal crosses a threshold, it surfaces a single, quiet nudge.
The design bet is that the most useful interventions are ambient, not authoritative. A tool that halts you mid-flow to warn you is expensive and easy to resent. A tool that says one true thing softly and then trusts you to decide is something you actually keep running.
The philosophy
What it watches
Each signal is a small, cheap detector over the live stream — keyword sentinels, tool-sequence analysis, and rolling-window arithmetic. None of them is smart on its own; the value is in running all of them, quietly, all the time.
How it decides
A raw keyword match is a false-positive machine. So detection runs in three layers, and a nudge only fires when all three agree:
Requiring all three to align is what keeps false positives near zero — the difference between a tool you trust and one you mute on day two. Internally the daemon splits into three cooperating roles: a journaler that writes observations, a signal window that does the rolling arithmetic, and a history cross-reference that recognises when something echoes an earlier session.
Under the hood
Written in Julia with a small Flux.jl model for the semantic layer, run as a systemd service so it survives crashes and boots with the machine. It reads the transcript like a passenger reading the dashboard — aware, not driving: no hooks into the host, no modifications to output. State is a compact append-only feed, and every detector is a rolling window over it, so memory stays flat no matter how long the session runs. Entirely local — nothing leaves the box. The whole point is a subsystem you forget is running until the one moment it says something worth hearing.