A forgetting engine: a memory layer for AI agents, backed by SQLite.
Not a database. A database stores faithfully and forever; this engine decides what to keep, lets memories decay, consolidates routine into gist and connects what belongs together. The name is the joke: it forgets, on purpose.
- What it is
- An engine, a terminal chat and a memory proxy
- Runs
- On your machine, local-only by default
- Remembers in
- SQLite, with local embeddings
- Built with
- Rust, SQLite, axum, Ollama
Six mechanisms
all working on the same memories, at the same time
Decayforgets
The unused fades on an exponential curve, with a half-life for each type of memory.
Saliencekeeps
The surprising and the habitual both resist forgetting. Routine is what fades.
Habitreinforces
Rehearsed episodes become durable facts, and settled habits become foundation traits.
Epochsorganize
Time is cut into epochs, and the engine computes every "three years ago" from real timestamps.
Edgesconnect
Memories link by co-occurrence, meaning and sequence, and recall walks the chain.
Dreamingcreates
A sleep cycle removes duplicates, compresses clusters into gist and marks contradicted memories out of date.
Three ways in
- 1
Chat
iforgot is a terminal chat where memory updates itself. Every message is written in, and every reply is grounded in what it remembers.
- 2
Proxy
An OpenAI-compatible endpoint. Point any chat app at it and it gains long-term memory, with no integration work.
- 3
Watch
A read-only window into the store. Watch memories glow, fade on a time scrubber, and form connections as you chat.
Runs on your machine
Rust and SQLite, with no network calls beyond a local model server. Local-only is the default, and the server only listens on 127.0.0.1.
ollama pull gemma3:12bcargo install --path crates/iforgot-chatiforgotThe fine print
for iforgot and ForgetfulDB
- Privacy policyNot written yet
- Terms of useNot written yet
- Sourcegithub.com/kishore-nikhil/iforgot ↗