Skip to content
← Work
Self-initiated2026

Aeva

A personal AI agent with a git-backed memory. Daily briefings, one task queue, and context that any Claude session can read. Built for one user: me.

AIProductTypeScriptMCP

The Problem

I run several projects at once and I am a rapid prototyper by temperament, working in intense bursts and then moving on. The cost is continuity. Work discussed in one session evaporates before the next. Tasks live in six places, which means they live nowhere. Every AI session starts from zero and I re-explain myself.

I wanted an assistant that remembers. Not a chat window but a system with a memory I own, read every morning, that tells me what actually matters today.

What It Does

Aeva is a personal agent I talk to on Telegram. Mention work in passing and it becomes a task in a single queue. Ask "what's next" and you get an answer drawn from actual project state. At 07:30 a briefing arrives with open tasks, GitHub activity across active repos and one suggested focus. At 18:00, a review: what moved, what's blocked, tomorrow's single priority. There's one web page, /today, and it isn't clickable.

The memory is a private git repo of markdown. Every write commits. I can read it, diff it, take it elsewhere.

The hard part

An assistant that remembers has to hold one truthful account of my work across a phone, a desktop and several AI tools that each think they are in charge. The obvious approach is to wire the parts together loosely and let each one write whenever it wants. I built that version first, and it failed in the worst way available: quietly. Glue broke without telling me, two things wrote at once, and I spent more time maintaining the assistant than being helped by it.

Several surfacesOne account I trustone writer at a timelet each write freelyreconcile afterwardsbreaks without telling you
Fig. 1 The first build let every surface write whenever it wanted. It did not fail loudly, which is the expensive way for a system to fail.

So the rebuild started from the post-mortem rather than the feature list. One writer at a time. Every failure loud enough to interrupt me, because a silent one costs hours before I notice. And a hard ceiling on how much machinery the core is allowed to contain, since the last version died of its own size. It is one TypeScript service running on Claude, and it is meant to stay small.

Where It Stands

Everything in one repoMarch 2026Abandoned in nine daysMarch 2026Rebuilt from post-mortemJuly 2026Memory works, core waitsJuly 2026
Fig. 2 The first build lasted nine days. The rebuild did not begin for nearly four months.

The first version grew faster than I could hold it, and went quiet rather than breaking outright. When I returned it was to start from the post-mortem, not from what the old build had left behind.

Aeva is in development and not yet in service. The memory layer is built and running in real sessions, so context carries between them instead of being re-explained. The core is scaffolded and waiting. Version one has a bar I set deliberately: fourteen consecutive days where the morning briefing arrives on time and nothing fails silently. It has not cleared that yet, and I would rather it stayed unreleased until it does.