Skip to main content

Experience-driven memory for autonomous agents — learn from past successes and failures.

Project description

Mimir

Experience-driven memory for autonomous agents. Mimir helps agents learn from their past successes and failures instead of starting from scratch on every task.

Named after Mímir, the keeper of wisdom in Norse mythology.


The problem

Today's agents have memory, but they don't really learn.

Most frameworks store one of two things:

  • Conversation history (LangGraph memory, buffer memory)
  • Vector embeddings of documents (RAG, AGENTS.md, CLAUDE.md)

Both let an agent remember information. Neither lets it remember experience.

Task:     Fix authentication latency
Action:   Added Redis cache
Outcome:  Success

A month later, the agent has no meaningful understanding that this strategy worked. It solves the same class of problem from zero, every time.

The idea

Instead of storing documents, embeddings, and metadata, Mimir stores experiences:

Problem  →  Action  →  Outcome  →  Confidence  →  Context  →  Time

From a stream of experiences, Mimir reflects, extracts reusable strategies, and recommends actions for new tasks — so the agent gets measurably better over time.

from mimir import Mimir

memory = Mimir()

# Record what happened
memory.record(
    task="Fix authentication timeout",
    action="Implemented Redis caching",
    outcome="success",
    score=0.95,
)

# Recall relevant past experience
past = memory.recall("authentication latency")

# Get a recommended strategy with confidence
strategy = memory.recommend("login timeout")
# → Strategy: "Redis caching"  |  confidence: 0.87  |  based on 23 successes / 2 failures

How it differs from AGENTS.md / CLAUDE.md

AGENTS.md / CLAUDE.md Mimir
Knowledge type Static, hand-written rules Dynamic, learned from outcomes
Updates Manually edited Updates itself from results
Example "Use FastAPI. Use PostgreSQL." "Redis caching solved auth latency 23/25 times (92%)."
Failures Not tracked First-class — agents stop repeating mistakes

AGENTS.md answers "What should the agent remember?" Mimir answers "How does an agent accumulate experience and become wiser over time?"

Design principles

Mimir is built as a modular monolith Python library — not a microservice swarm, not a managed cloud product. The library is the product.

  • No LLM and no web server required for v1. Storage, retrieval, and ranking come first. Reflection via an LLM is added later, behind an interface.
  • Pluggable seams. Storage, embeddings, and the write path are interfaces, so scaling up (SQLite → Postgres → async reflection → Redis cache) is a swap, never a rewrite.
  • Derived knowledge is rebuildable. Strategies and reflections are computed from raw experiences and can always be regenerated.
  • Failures are first-class. Learning from what didn't work is treated as importantly as what did.

Architecture

┌────────────────────────────────────────────────────────────┐
│  Public API   Mimir()  .record() .recall() .recommend()     │
├────────────────────────────────────────────────────────────┤
│  Write chokepoint   ──►  [validation / provenance hook]      │   single write path
├──────────────┬───────────────┬─────────────────────────────┤
│  Episodic    │  Reflection   │  Recommendation             │
│  Engine      │  Engine       │  Engine                     │
│  (record/    │  (reflect/    │  (recommend / rank /         │
│   recall)    │   extract)    │   confidence)               │
├──────────────┴───────────────┴─────────────────────────────┤
│  Retrieval layer        (keyword + optional vector hybrid)   │
├────────────────────────────────────────────────────────────┤
│  Storage interface      SQLite (v1) · Postgres (v2) · …      │   pluggable
├────────────────────────────────────────────────────────────┤
│  Embedding provider     none (default) · local · API        │   pluggable
└────────────────────────────────────────────────────────────┘

Data model

Experience
  id, task, action, outcome (success|failure|partial),
  score (0..1), context (json), embedding (nullable),
  created_at, superseded_by (nullable)

Strategy   (derived)  problem_pattern, recommended_action, confidence,
                      success_count, failure_count, source_experience_ids
Reflection (derived)  summary, pattern, supporting_experience_ids, created_at

Installation

pip install mimir   # (coming soon)

# or, for development
git clone https://github.com/<you>/mimir.git
cd mimir
pip install -e ".[dev]"

Requirements: Python 3.11+. v1 has no required external services — storage is a local SQLite file. Semantic search and reflection are optional extras.

Quick start

from mimir import Mimir

memory = Mimir(db_path="mimir.db")

memory.record(
    task="Fix login latency",
    action="Added Redis cache in front of session lookups",
    outcome="success",
    score=0.9,
    context={"service": "auth", "language": "python"},
)

memory.record_failure(
    task="Throttle abusive clients",
    action="Added a fixed-window rate limiter",
    reason="WebSocket traffic wasn't handled — limiter only saw HTTP",
)

for exp in memory.recall("authentication is slow", k=5):
    print(exp.action, exp.outcome, exp.score)

print(memory.recommend("login times out under load"))

Roadmap

Phase Goal Status
1 — Episodic memory record() / recall(), outcome tracking, SQLite backend 🛠️ In progress
2 — Failure memory record_failure(), failures queried separately Planned
3 — Reflection engine reflect() — cluster experiences, synthesize patterns (LLM) Planned
4 — Strategy extraction Turn experiences into reusable strategies with confidence Planned
5 — Recommendation engine recommend() — rank strategies for a new task Planned
6 — Shared org memory Multiple agents learn from a shared store Future

Scaling path

Mimir starts as a single SQLite file and grows by swapping seams — no rewrites:

  1. v1 — SQLite, in-process, single agent.
  2. v2 — Postgres + pgvector backend for concurrent multi-agent writes.
  3. v3 — extract the (slow, batch) reflection engine into an async worker.
  4. v4 — Redis cache for hot/recent experiences on the read path.

Status

Early development. APIs will change. Not yet published to PyPI. Feedback and ideas welcome.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mimir_learn-0.1.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mimir_learn-0.1.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file mimir_learn-0.1.0.tar.gz.

File metadata

  • Download URL: mimir_learn-0.1.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mimir_learn-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e994433c014871e31f81d927574d412ab95ca3f88590d442ba9b9405b40c996
MD5 9268f3649a065116dc2a89089f26af17
BLAKE2b-256 f15596372ef2bc7c375482e468aaa33166c28f1983a53cbc88f856dfecc2ce58

See more details on using hashes here.

Provenance

The following attestation bundles were made for mimir_learn-0.1.0.tar.gz:

Publisher: publish.yml on AshNicolus/mimir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mimir_learn-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mimir_learn-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mimir_learn-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 232c7f9045aad775fe4454ece8d6822af3dc5f31083b05394cc780386118f498
MD5 59f43e30860b9aeb2e0a963a82337fb9
BLAKE2b-256 40895369287d9ce64a675e5443c1cfa3bccc016e68115bfce54a2e4d3f4dc21d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mimir_learn-0.1.0-py3-none-any.whl:

Publisher: publish.yml on AshNicolus/mimir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page