Project memory and handoff

Your agent forgets.

Your teammate never knew. Mneia captures the decisions a session produced at the moment work stops, and hands them to whoever picks it up next.

The problem

Three hours of context, gone by Tuesday.

A developer works with Claude Code or Cursor for three hours on Monday. They establish twenty decisions along the way: why Postgres over DynamoDB, which auth pattern, which edge cases are out of scope, what broke when they tried the obvious approach.

On Tuesday they open a new session. The agent knows none of it. They spend the first fifteen minutes re-explaining.

Worse: mid-session, auto-compaction fires. The agent silently loses the constraint established two hours ago and confidently proposes the approach that was already rejected.

Worse still: a teammate picks up the work. The decisions live in a chat transcript that was compacted away, or in one person's head.

The artifact

This is the thing we ship.

Not a memory store you query. An object you receive, with every line marked by who asserted it.

handoff/payments-migration.md
# Handoff: payments-migration
From: Saad (human) · 2026-07-26 18:40 UTC
To: open
## Next action

Wire the retry path in charges/worker.rb to the new idempotency key. Nothing else is blocking.

## State

Ledger writes are cut over and green in staging. Read path is still dual-reading.

Rollback flag payments.v2_reads is live and tested.

## Constraints (do not violate)
  • -[human · confirmed 2026-07-14] No downtime window. Cutover must be online.
  • -[human · confirmed 2026-07-02] Idempotency keys are namespaced per merchant, not global.
  • -[agent · claude-code · unconfirmed] Stripe webhook ordering is not guaranteed; do not rely on it.
## Decisions and why
  • -[2026-07-11 · human] Postgres advisory locks over Redis for the cutover lock.Rationale: we already page on Postgres; adding a Redis dependency to the critical path was rejected.
  • -[2026-07-19 · agent, human-confirmed] Dual-read window set to 14 days, not 7.Rationale: month-end reconciliation needs a full cycle inside the window.
## Open questions
  • - [ ]Who owns the backfill for pre-2024 charges? Unassigned since 2026-07-08.
  • - [ ]Do we need the dual-read window extended for EU entities? Raised by agent, unverified.
## Superseded recently (do not re-propose)
  • -~~Redis-based cutover lock~~ superseded 2026-07-11, see decision above.
  • -~~7-day dual-read window~~ superseded 2026-07-19.
## Artifacts
  • -PR #2841 (ledger cutover)
  • -ADR-017

Three operations

Everything else serves these.

01

Checkpoint

At a task or day boundary, extract the decisions, constraints, and open questions out of the session. Detect contradictions with what is already known. Ask a human to confirm the load-bearing ones.

Explicit capture at a boundary, not ambient capture that produces noise.

02

Rehydrate

Given the next task and a token budget, assemble the minimal high-signal slice. Not replay-everything, and not raw semantic search. Semantic search returns what is similar, not what is load-bearing.

Active constraints are always included, whatever the budget pressure.

03

Handoff

Produce something a person or an agent receives: what is done, current state, open questions, constraints, next action. Provenance on every line, so the receiver knows what to trust.

The artifact, not a memory store you have to know how to query.

Where it runs

In the tools you already work in.

An MCP server that works in Claude Code, Cursor, Codex, or any MCP client. A CLI. File interop with the AGENTS.md and CLAUDE.md you already keep. Plus a deliberately thin web app for the things a terminal is bad at.

The inner loop stays in your terminal. A handoff that only works inside one vendor's tool is not a handoff, it is a session feature.

Access

Request early access.

We are onboarding teams in stages. Tell us where to reach you and we will get you set up.

One email when your access is ready. Nothing else, and no sharing with anyone.