Memoria local para agentes de IA

Tu agente redescubre lo mismo en cada sesión.
Pinky lo recuerda.

Conocimiento en Markdown versionado en git. Búsqueda híbrida BM25 + semántica. 100% local y offline. Nativo para agentes vía MCP.

Cero lock-in. Te quedan los .md · el índice se reconstruye solo · $0 por query.

El problema

Los agentes no tienen memoria. Vos se la explicás una y otra vez.

Cada sesión, tu agente vuelve a tropezar con el mismo gotcha, re-decide lo ya decidido y re-lee lo ya leído. Pinky le da una memoria durable y auditable — sin mandar tu código a ningún lado.

Fuente de verdad

Los .md con frontmatter que escribe el agente (o vos). Legibles, versionados en git, revisables con git diff. Es tuyo y se queda con vos.

↓ pinky reindex

Cache desechable

Un índice SQLite (FTS5 + sqlite-vec) derivado del Markdown. Si se corrompe o cambia el modelo, se reconstruye solo. Nada crítico vive sólo acá.

↑ 100% regenerable

Por qué Pinky

Cuatro cosas que casi nadie combina a la vez.

Local y offline, híbrido, markdown-as-truth y nativo-para-agentes. Los demás tienen una o dos.

01

100% local y offline

Embeddings ONNX locales, o un embedder determinista sin red. SQLite in-process, cero daemon. Ideal para código sensible o regulado que no puede salir de la máquina.

--hash-embed → sin red, jamás
02

Retrieval híbrido real

BM25 encuentra lo exacto (pg_pool_timeout); el vector encuentra lo parecido ("el pool se cuelga"). Se fusionan con Reciprocal Rank Fusion.

calidad medible: hit@k + MRR
03

Markdown = fuente de verdad

El índice es cache; los .md son la verdad. Cero lock-in: te quedan archivos legibles. Auditás lo que aprendió tu agente con un git diff.

reindex reconstruye todo
04

Nativo para agentes

Servidor MCP estándar: brain_search, brain_save, brain_stats. Más hooks de Claude Code. No es una app — es infraestructura.

cualquier cliente MCP · el CLI anda solo
05

Se mantiene sano

Dedup semántico, decay por antigüedad, backlinks código↔conocimiento, telemetría de poda y validador evergreen. Combate la entropía; no es un vertedero.

pinky dedup · stale · telemetry
06

Cero-ops, un binario

Sin Docker obligatorio, sin servicios, sin base de datos que administrar. Un archivo brain.db desechable y tres binarios chicos en Rust.

curl | sh → andando en <2 min
El ciclo del conocimiento

Crear → indexar → buscar → mantener.

El agente busca antes de actuar, guarda lo que descubre y deja diary al terminar. El conocimiento crece solo mientras trabajás.

CREAR

Nace un .md

El agente (guiado por una regla), el hook stop o vos. Frontmatter YAML + cuerpo Markdown.

INDEXAR

reindex

Parse → chunk → embed → SQLite. Incremental: sólo re-embebe lo que cambió.

BUSCAR

brain_search

Híbrido BM25 + vector, fusión RRF, rerank léxico opcional, filtros por proyecto/tipo/tag.

MANTENER

sano

Dedup, staleness, rollups de diary, telemetría de poda, eval de calidad.

Un índice, tres accesos

Para vos, para el agente y para Claude Code.

pinky

CLI

  • reindex
  • search
  • save
  • dedup
  • stale
  • rollup
  • backlinks
  • eval
  • doctor
  • watch
  • sync
pinky-mcp

Servidor MCP

  • brain_search
  • brain_save
  • brain_stats

La memoria del agente. Se registra en Claude Code (o cualquier cliente MCP) con pinky init.

pinky-hooks

Hooks de Claude Code

  • session-start
  • pre-read
  • pre-write
  • stop → diary

Inyectan contexto antes de leer/escribir y escriben diary al terminar. Con presupuesto de tiempo: nunca bloquean.

Dónde encaja

Pinky vs. las alternativas.

Pinky Memoria de plataforma Vector-DB SaaS grep + notas
Local / offlineNoNo
Híbrido BM25 + vectorNoparcialNo
Markdown portable (sin lock-in)NoNo
Nativo para agentes (MCP)parcialNoNo
Cero-ops (un binario)No
Costo por query$0incluido💲$0

Pinky es el único que combina local + offline, híbrido, markdown-as-truth y nativo-para-agentes al mismo tiempo.

Economía de tokens · medido

Hasta ~34× menos tokens por consulta.

Tokens de contexto que entran por cada consulta de conocimiento, mismo escenario, medido sobre un corpus real de 16 docs (~59 KB).

Sin gestión relee el código para redescubrir~17.200 tok 45×
Markdown plano grep + leer los archivos que matchean~12.900 tok 34×
Pinky brain_search top-3, snippets rankeados~380 tok

Medido con el binario pinky: payload de brain_search --json vs. grep + leer los archivos vs. releer el código (tokens ≈ chars/4). Es el payload de recuperación; en corpus más grandes la brecha se agranda.

Más que ahorro de tokens

Lo que ganás, no sólo lo que ahorrás.

Tu agente deja de repetir los mismos bugs

Los gotchas se inyectan antes de escribir código. Menos errores re-cometidos — no sólo menos tokens.

No le re-explicás lo mismo cada sesión

El conocimiento persiste y se acumula; un dev o agente nuevo arranca sabiendo lo que el equipo ya aprendió.

Tu código nunca sale de tu máquina

100% local y offline: habilita proyectos sensibles o regulados que con un SaaS no podrías tocar. $0 por query.

Auditás lo que aprendió tu agente

Markdown versionado en git: lo revisás con un git diff en un PR. Cero lock-in — te quedan los archivos.

El conocimiento no se pudre

Dedup, decay por antigüedad y telemetría de poda; el eval en CI corta el build si la relevancia baja.

Cero-ops, y nunca te molesta

Un binario, sin daemon; pinky init en un comando; los hooks tienen presupuesto de tiempo y jamás bloquean tu agente.

Para quién

Cuando el conocimiento no puede salir de tu red.

Código regulado

Fintech · salud · defensa · gobierno

Airgapped u on-prem: los embeddings corren locales y nada sale de la máquina. La memoria del agente cumple sin exfiltrar código.

Proyectos de años

Devs solos y equipos chicos

El agente hereda gotchas, decisiones y patrones acumulados. Onboarding instantáneo: un dev (o un agente) nuevo arranca sabiendo lo que el equipo ya aprendió.

Diario vivo

Changelog que se escribe solo

El hook stop deja una entrada de diary por sesión; los rollups arman el resumen semanal/mensual sin LLM.

Multilingüe real

Español + italiano

El modelo multilingual-e5-small cubre ES e IT: buscás en un idioma y encontrás lo escrito en otro.

Quickstart

De cero a memoria en cuatro comandos.

Linux x86_64 y macOS Apple Silicon con binario prebuilt. Otras plataformas: compilá desde fuente.

curl -fsSL https://releases.pinkybrain.dev/install.sh | sh
# 1 · preparar el proyecto: crea documentation/ y registra el MCP
pinky init

# 2 · indexar el conocimiento (búsqueda híbrida, modelo multilingüe)
pinky reindex documentation

# 3 · buscar — o dejá que el agente use la tool brain_search
pinky search "timeout al cerrar el pool de postgres"

# 4 · reabrí el proyecto en Claude Code → el MCP 'pinky' queda disponible
Objeciones honestas

Lo que seguro te estás preguntando.

¿Los embeddings locales no son peores que los de OpenAI?

Para retrieval, el híbrido BM25 + vector compensa el gap: los términos exactos los clava BM25 y lo semántico el vector. Y la calidad es medible — el harness de eval reporta hit@k y MRR, y el CI falla el build ante una regresión de relevancia.

¿Y si se corrompe la base de datos?

El índice es desechable: pinky reindex lo reconstruye entero desde los .md. Además hay guardas de versión de schema y de modelo de embeddings: si algo no cuadra, avisa y se regenera — no corrompe en silencio.

¿Sólo funciona con Claude Code?

El núcleo es agnóstico y MCP es un estándar abierto: sirve para cualquier cliente MCP, y el CLI funciona solo. Los hooks, eso sí, hoy son específicos de Claude Code.

¿Realmente es offline? Mencionan un modelo que se descarga.

El modelo ONNX (~100 MB) se baja una sola vez y después todo corre offline. Si querés cero-red desde el minuto uno, usá --hash-embed: un embedder determinista que nunca toca la red (algo menos preciso, ideal para airgapped/CI).

¿Escala a un proyecto grande de años?

Decenas de miles de entradas son poco para SQLite, y la búsqueda vectorial sobre eso es <10 ms. El cuello de botella no es el volumen: es la organización y el retrieval, que es justo lo que Pinky resuelve.

¿Setup complicado?

curl | sh instala los binarios; pinky init deja el proyecto listo con el MCP registrado con rutas relativas (relocatable). Sin rutas absolutas horneadas, sin tocar código.