Skip to main content

cairn-mem

Memoria persistente para agentes de código: CLI + archivos, sin LLM y sin dependencias. Funciona con cualquier agente/arnés que tenga shell.

Una memoria es una decisión, convención, gotcha o hecho del proyecto, con su motivo. Cairn la guarda en .cairn/events.jsonl (append-only, es la verdad) y mantiene un índice FTS5 y un L0 compacto (.cairn/MEMORY.md) que el agente puede leer al arrancar.

Instalación

pipx install cairn-mem      # comando global `cairn`
# o, para desarrollar:
pip install -e ".[dev]"

Uso

cairn init [--share]        # crea .cairn/ (local-only por defecto)
cairn save --kind gotcha --topic auth/redirect --title "..." --body "..." --why "..." --anchor src/auth.py
cairn search "oauth callback" --limit 5     # L1: id, kind, title, snippet, stale
cairn get <id>                              # L2: memoria completa
cairn render                                # L0: regenera e imprime MEMORY.md (≤ 3000 car.)
cairn check                                 # memorias con ancla cambiada (⚠ revisar)
cairn archive <id>                          # deja de aparecer
cairn rebuild                               # reconstruye cairn.db desde events.jsonl
  • kind: decision | convention | gotcha | fact. body ≤ 500 caracteres.
  • Mismo --topic reemplaza la memoria anterior; no dupliques.
  • --json en save, search, get y check para consumo desde agentes.
  • Secretos: se rechazan antes de escribir (claves cloud, JWT, password = ..., URLs con credenciales).

Integración con un agente

Copia el snippet de docs/AGENT_SNIPPET.md en el AGENTS.md/CLAUDE.md del proyecto. Verificado guardando en un arnés y recuperando en otro (OpenCode y GitHub Copilot CLI).

Diseño

  • Verdad: .cairn/events.jsonl (2 operaciones: save, archive).
  • Derivados y regenerables: cairn.db (SQLite + FTS5) y MEMORY.md.
  • Búsqueda BM25 con consultas saneadas (AND y fallback OR), sin embeddings.
  • stale se calcula al leer comparando el hash del ancla (CRLF→LF), no se persiste.
  • Detalle: docs/DESIGN.md · Decisiones: docs/DECISIONS.md · Medidas: docs/BENCHMARKS.md.

Estado

v0.1.0. Hitos: PLAN.md. Reglas de desarrollo: AGENTS.md.

Desarrollo

pip install -e ".[dev]"
pytest -q
ruff check src tests bench
python bench/bench_cli.py --reps 20

Python 3.10+; el núcleo usa solo la stdlib.

Metadata

Release files for cairn-mem 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cairn-mem 0.1.0
File Size Uploaded Provenance Actions
cairn_mem-0.1.0.tar.gz 16.4 kB Without provenance Details for cairn_mem-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cairn-mem 0.1.0
File Interpreter ABI Platform Actions
cairn_mem-0.1.0-py3-none-any.whl Python 3 none any Details for cairn_mem-0.1.0-py3-none-any.whl

Total release size: 27.9 kB

Release files / cairn_mem-0.1.0.tar.gz

Download URL cairn_mem-0.1.0.tar.gz
Size 16.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1432dda6b80248c6e68a3c81c85601ecde1fee26809fa42cba09c5660a08bcdd
BLAKE2b-256 checksum
How to use checksums
68cdc94827f3ca696dd724279935da0f0ae4eb1b7e8b10f6e473febd31d035c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / cairn_mem-0.1.0-py3-none-any.whl

Download URL cairn_mem-0.1.0-py3-none-any.whl
Size 11.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9fe390fb3db930a213d21c5cf0585db569d632d478cc18ec431163639da3793e
BLAKE2b-256 checksum
How to use checksums
e004554e9abb1a51248f6129b975a7bb6d6e4238056f8fb99d5e812f7756ee81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for cairn-mem 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page