Skip to main content

Portable memory for AI agents. Markdown on your disk. Speaks MCP.

Project description

all41n14lla

Portable memory for AI agents. Markdown on your disk. Speaks MCP.

Tests PyPI Python License

Status: v0.1.0a2 (alpha). The engine is real: SQLite + FTS5 index, MCP stdio server, four-type storage, live watchdog reconciliation, pathways edge auto-increment on episode writes. 26/26 tests passing on Python 3.13; CI matrix validates 3.11 / 3.12 / 3.13. A short demo video lands with v0.1.0 (non-alpha) after a 24-hour bake. Expect rough edges until then.

The problem

Agent memory is broken in five specific ways: models forget mid-session, hosted memory stores trap your data, memory does not cross agents, most stores are opaque blobs you cannot audit, and nothing works offline. The dominant "fix" — jam more context into the prompt — treats the language model as a storage engine. It is not one. It is a reasoning engine. Storage belongs on disk.

What this fixes

Memory should live where you can read it, back it up, grep it, diff it in git, and open it in a text editor. It should speak a protocol every MCP-capable client already supports, so swapping agents does not mean rebuilding your memory. It should be typed, because different kinds of memory deserve different retrieval policies.

all41n14lla stores memories as markdown files on your disk, indexes them locally with SQLite + FTS5, and exposes them over MCP stdio. Claude Code, Claude Desktop, Cursor, and anything else that speaks MCP gets remember, recall, forget, inspect, and consolidate for free. No SDK lock-in. No vendor cloud. No round trip. Your vault is yours.

How it works

Four node types, one vault, type-aware retrieval.

  • Concepts — stable ideas and definitions. Long-lived. Surfaced when their topic comes up.
  • Patterns — repeated behaviors. Derived from episodes, not written directly. Promoted when the repetition crosses a threshold.
  • Episodes — specific events. High volume. Decay fast, because most stop mattering once the situation is over.
  • Constraints — hard rules. Never decay. Always surfaced when their tags overlap the query. Non-negotiable.

Each lives in its own folder (concepts/, patterns/, episodes/, constraints/). Each is a markdown file with YAML frontmatter. You can edit them by hand — the watchdog observer reconciles changes into the index. Hand-editing is a supported workflow, not a workaround.

Retrieval is not one ranking function over one bucket. Concepts rank by match score plus tag overlap. Patterns add a moderate recency boost. Episodes add a stronger one. Constraints whose tags overlap the query are always returned, regardless of match score — hard rules are not allowed to silently drop out of a recall. Full architecture: docs/architecture.md.

Install

From PyPI (coming soon)

pipx install all41n14lla

Not published yet. Install from source in the meantime.

From source (works now)

git clone https://github.com/bludragon-ai/all41n14lla.git
cd all41n14lla
python3.13 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Python 3.11+ works; 3.13 is what I develop against.

First run

all41n14lla init                                   # scaffolds ~/.all41n14lla/ (hidden dotfile vault)
all41n14lla remember concept "sqlite fts5 uses the porter tokenizer by default"
all41n14lla recall "sqlite tokenizer"
all41n14lla doctor                                 # verify environment + vault health

The default vault is ~/.all41n14lla/ — a hidden per-user dotfile. Pass --path ~/memory (or any other path) if you prefer a visible vault, e.g. one you open in Obsidian.

Other commands: forget <id>, reconcile (rebuild the index from disk), inspect <query> (stub in v0.1-alpha, full in v0.1 final), consolidate (stub, lands in v0.2), version, serve.

Claude Code / Claude Desktop / Cursor config

Drop this into the MCP config for your client of choice.

{
  "mcpServers": {
    "all41n14lla": {
      "command": "all41n14lla",
      "args": ["serve"]
    }
  }
}

Transport is stdio. One process, one client. The server exposes remember, recall, forget, inspect, and consolidate as MCP tools.

Comparison

Every claim below was verified against the tool's current README or docs at the time of writing.

Tool Markdown-native Typed retrieval (4 node types) User-owned local vault Offline-first MCP-native Embeddings License
all41n14lla Yes Yes (concept/pattern/episode/constraint) Yes Yes Yes No (v0.1) MIT
Basic Memory Yes Partial (observations + relations, not 4 fixed types) Yes (local-first; optional paid cloud sync) Yes Yes Yes (FastEmbed, hybrid FTS + vector) AGPL-3.0
MemPalace No (verbatim text + SQLite + ChromaDB) Partial (wings/rooms/drawers hierarchy) Yes Yes Yes Yes (local, ChromaDB default) MIT
mem0 No (pluggable vector DB) Partial (user/session/agent levels) Only in library mode; cloud and self-hosted are the pitched paths Library mode only No (not MCP-native; LangGraph/CrewAI integrations) Yes (OpenAI text-embedding-3-small default) Apache-2.0
MCP Memory (reference) No (JSONL file) No (user-defined entity types, no enforced taxonomy) Yes (local JSONL) Yes Yes No (text search only) MIT

Read the full comparison in docs/comparison.md.

Roadmap

  • v0.1 (this release) — four node types, markdown on disk, SQLite + FTS5 index, MCP stdio server, watchdog reconciliation, CLI (init, serve, doctor, remember, recall, forget, reconcile, version). Lexical search only.
  • v0.2 — embedding-based semantic recall, pattern promotion from repeated episodes, decay on episodes, scheduled consolidate pass.
  • v0.3 — Obsidian plugin so the vault is a first-class notebook, graph view for nodes and links, bidirectional editing.

No dates. Ships when it ships.

Docs

  • Why — the thesis: what is broken about agent memory and why this shape fixes it.
  • Savant cognition as memory architecture — the longer origin story. How a personal interest in typed, pattern-indexed, never-degrading memory became the shape of this project, grounded in a survey of 60+ existing agent-memory tools.
  • Architecture — how the engine actually works. Storage, frontmatter schema, retrieval flow, pathways, MCP surface.
  • Comparison — honest look at all41n14lla vs. Basic Memory, MemPalace, mem0, and the MCP reference server.
  • Origin — where the name comes from.
  • Quickstart — Claude Desktop — five-minute install-to-working guide for Claude Desktop users.

License

MIT. Copyright Jordan Truong.

Open-source inspirations visible in the style of this project: santifer/career-ops and cv-santiago — both good examples of useful, personal, no-fluff tooling.

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

all41n14lla-0.1.0.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

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

all41n14lla-0.1.0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for all41n14lla-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0107644ee6d295c92cd7e8fba53dca486cabf74aa95558a2ce8f3ffb11c2c42f
MD5 61f51e86beb16f1456371e0692ef45a9
BLAKE2b-256 72449fc8df6fc21fa5c1fda16e34c183c70fbecb0f9fa145ca788d9301d47e9e

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on bludragon-ai/all41n14lla

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

File details

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

File metadata

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

File hashes

Hashes for all41n14lla-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54086240389ab60666750c7723b49b105fe4f4f14b3dcaa36dd453e2d0a72070
MD5 187590a789ed3e8913768db1ebd3e6ec
BLAKE2b-256 d9ee0c62d57cb484a4642be43a72ca37dd2d8f0b6a39d7d7db1ce9e479a30111

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on bludragon-ai/all41n14lla

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