Alexandria
Una bóveda de conocimiento local para tus agentes de IA — ahorra tokens, recuerda entre sesiones y convierte cualquier modelo en un ingeniero disciplinado. A local knowledge vault for your AI agents — saves tokens, remembers across sessions, and turns every model into a disciplined engineer.
¿Qué es Alexandria?What is Alexandria?
Alexandria captura automáticamente tus prompts y sesiones de IA, busca en ese conocimiento antes de gastar tokens, y lo conecta todo en un grafo estilo Obsidian. 100% local: sin base de datos, sin API keys, sin telemetría, sin costo. Funciona con los agentes más populares vía MCP. Alexandria automatically captures your AI prompts and sessions, searches that knowledge before spending tokens, and connects everything in an Obsidian-style graph. 100% local: no database, no API keys, no telemetry, no cost. Works with the most popular agents via MCP.
Ahorra tokensSaves tokens
Cada prompt dispara una búsqueda semántica local (<100ms) que inyecta solo los fragmentos relevantes — en vez de releer archivos enteros.Every prompt triggers a local semantic search (<100ms) that injects only the relevant fragments — instead of re-reading whole files.
Cero reanálisisZero re-analysis
Al iniciar sesión, el agente recibe el mapa del proyecto y todo el conocimiento acumulado.On session start, the agent receives the project map and all accumulated knowledge.
Memoria de solucionesSolution memory
Si un prompt casi idéntico ya se resolvió, se inyecta la solución previa — el agente no la rederiva.If a nearly identical prompt was solved, the previous solution is injected — the agent doesn't re-derive it.
Contexto infinitoInfinite context
El ruido viejo se archiva, nunca se borra — todo queda buscable para siempre.Old noise gets archived, never deleted — everything stays searchable forever.
Vault de Obsidian válidoValid Obsidian vault
Markdown plano con [[wikilinks]]. Ábrelo en Obsidian cuando quieras.Plain markdown with [[wikilinks]]. Open it in Obsidian anytime.
MultiplataformaCross-platform
Windows, macOS, Linux · Node, Bun o Deno. JS puro — sin dependencias nativas que rompan tu install.Windows, macOS, Linux · Node, Bun or Deno. Pure JS — no native deps to break your install.
InstalaciónInstall
Requiere Node ≥ 20. Instala el binario global ale (alias alexandria):Requires Node ≥ 20. Installs the global binary ale (alias alexandria):
# npm (Node ≥ 20)
npm install -g @ureck/alexandria
# bun
bun add -g @ureck/alexandria
# deno
deno install -grA -n ale npm:@ureck/alexandria/ale
# (si Deno se queja de "minimum dependency date", añade --minimum-dependency-age=0)
Verifica:Verify:
$ ale --version
1.1.0
DesinstalarUninstall
ale uninstall # global: quita hooks + bloque de CLAUDE.md
ale uninstall --project # solo de este proyecto (hooks + .mcp.json)
npm uninstall -g @ureck/alexandria # y el binario, si quieres
La reversión es limpia: nunca borra la bóveda ni tus notas — quedan como markdown normal, legibles en Obsidian o cualquier editor. Si reinstalas después, ale init reconecta con todo tu conocimiento intacto.The revert is clean: it never deletes the vault or your notes — they remain plain markdown, readable in Obsidian or any editor. If you reinstall later, ale init reconnects with all your knowledge intact.
Primeros pasosFirst steps
Un solo comando instala todo (modelo de embeddings ~130MB descargado una vez, hooks, registro MCP, índice):One command installs everything (embedding model ~130MB downloaded once, hooks, MCP registration, index):
# Global — una bóveda compartida para todas tus sesiones (~/Alexandria)
ale init
# Por proyecto — bóveda DENTRO del repo (./Alexandria)
cd mi-proyecto
ale init --project
# Apuntar a un vault de Obsidian existente
ale init --path ~/Documents/MiVaultObsidian
# Elegir qué agentes reciben el servidor MCP
ale init --agents all # todos los soportados
ale init --agents claude,cursor,opencode # solo estos
ale init --project además, automáticamente:ale init --project also, automatically:
- añade la bóveda a tu
.gitignore(conocimiento personal, no código del repo),adds the vault to your.gitignore(personal knowledge, not repo code), - escanea el proyecto (stack de package.json, scripts npm, estructura de carpetas, extracto del README) en una nota inicial
Map - <proyecto>— contexto desde la primera sesión,scans the project (stack from package.json, npm scripts, folder structure, README excerpt) into an initialMap - <project>note — context from the very first session, - pregunta «¿Configurar Claude para usar Alexandria automáticamente?» y escribe las reglas de uso en
CLAUDE.md(--auto/--manualpara saltar la pregunta).asks "Configure Claude to use Alexandria automatically?" and writes the usage rules intoCLAUDE.md(--auto/--manualto skip).
init no hay nada que reconectar, nunca.
Hooks load when a session starts — open a new agent session in that folder (an already-open one won't see them). After init there is nothing to reconnect, ever.
Referencia de comandosCommand reference
alexandria funciona como alias de ale. Ejecuta ale <comando> --help para ver todas las opciones.alexandria works as an alias of ale. Run ale <command> --help to see all options.
| ComandoCommand | Qué haceWhat it does |
|---|---|
ale init | Instala todo: bóveda, hooks, MCP, .gitignore, escaneo del proyecto, CLAUDE.md.Installs everything: vault, hooks, MCP, .gitignore, project scan, CLAUDE.md. |
ale scan | Contexto profundo del proyecto: rutas de API, variables de entorno (SOLO nombres), esquema de datos (parseo de archivos) y convenciones → notas compactas (cap adaptativo ≤200, muestreo justo en monorepos). Solo-lectura; garantiza .gitignore.Deep project context: API routes, env var NAMES only, data schema (file parse) and conventions → compact notes (adaptive cap ≤200, fair sampling in monorepos). Read-only; ensures .gitignore. |
ale toggles | Menú para activar/desactivar cada comportamiento que gasta tokens, con su costo aproximado real. Funciona antes o después de instalar; scriptable con ale init --off <keys>.Menu to enable/disable every token-spending behavior, each with its real approximate cost. Works before or after install; scriptable via ale init --off <keys>. |
ale agents [ids] | Lista agentes / registra el servidor MCP en los que elijas.List agents / register the MCP server in the ones you pick. |
ale search <query> | Búsqueda híbrida (semántica + keyword); --expand trae vecinos del grafo. Con el protocolo activo añade la Cadena del Protocolo (plan+verificación+lección) del mejor resultado.Hybrid search (semantic + keyword); --expand pulls graph neighbors. With the Protocol on, appends the Protocol chain (plan+verification+lesson) of the top hit. |
ale add <title> | Guardar una nota (inline, desde archivo o stdin).Save a note (inline, from file, or stdin). |
ale plan <file> | Crear un plan del Protocolo desde .md/.txt (los checkboxes → Definition of Done).Create a Protocol plan from .md/.txt (checkboxes → Definition of Done). |
ale graph | Visor local del grafo de conocimiento (auto-refresh cada 3s).Live local graph viewer (auto-refresh every 3s). |
ale audit | Salud del Protocolo: planes sin DoD, fallos sin lección, notas huérfanas.Protocol health: plans without DoD, failures without lessons, orphan notes. |
ale stats | Notas, conexiones, métricas del protocolo, tokens estimados ahorrados.Notes, connections, protocol metrics, estimated tokens saved. |
ale config <get|set> | Configuración (ej. protocol true/false).Configuration (e.g. protocol true/false). |
ale skills | Recomienda e instala skills — detección semántica (e5) + keyword sobre tu bóveda. Repo local configurable: ale config set skills.repo <ruta>; si no, instala desde skills.sh.Recommends & installs skills — semantic (e5) + keyword detection over your vault. Local repo configurable: ale config set skills.repo <path>; otherwise installs from skills.sh. |
ale reindex | Reindexar (incremental; --force para todo).Reindex (incremental by default; --force for all). |
ale consolidate | Archiva prompts viejos sin reuso — nunca borra.Archive old unused prompts — never deletes. |
ale doctor | Verifica y repara: modelo, hooks, MCP, índice.Check & repair: model, hooks, MCP, index. |
ale uninstall | Quita hooks (tus notas quedan intactas).Remove hooks (your notes stay untouched). |
ale --vault <path> <cmd> | Ejecutar cualquier comando contra otra bóveda.Run any command against another vault. |
Opciones detalladasDetailed options
ale init
Crea/conecta la bóveda e instala todo. Persiste entre sesiones.Creates/connects the vault and installs everything. Persists across sessions.
| --project | registrar para este proyecto (cwd)register for this project (cwd) |
| --global | registrar para todas las sesiones (default)register for all sessions (default) |
| --path <dir> | ruta del vault ObsidianObsidian vault path |
| --auto / --manual | configurar CLAUDE.md sin preguntar / no tocarloconfigure CLAUDE.md without asking / don't touch it |
| --no-protocol | instalar sin el Protocolo (solo bóveda clásica)install without the Protocol (classic vault only) |
| --portable | MCP con comando npx (commiteable en repos de equipo)npx-based MCP command (safe to commit for teams) |
| --off <keys> | desactivar comportamientos que gastan tokens desde el inicio (csv, ej. architect.enrich,digest.map — lista completa: ale toggles)disable token-spending behaviors from the start (csv, e.g. architect.enrich,digest.map — full list: ale toggles) |
| --agents <ids> | "all", "detected" o csv de agentes"all", "detected" or csv of agents |
ale toggles
Menú interactivo para activar/desactivar cada comportamiento que gasta tokens, con su costo aproximado real. Funciona antes o después de instalar (la config es global, independiente de la bóveda). En terminal no interactiva imprime la lista y sale sin colgar.Interactive menu to enable/disable each token-spending behavior, with its real approximate cost. Works before or after installing (the config is global, independent of the vault). In a non-interactive terminal it prints the list and exits without hanging.
| (sin opciones) | equivalente scriptable: ale config set <key> true|falsescriptable equivalent: ale config set <key> true|false |
ale scan
Escaneo profundo del proyecto (solo-lectura) → notas compactas de contexto. Re-ejecutable cuando el proyecto cambie; ale doctor avisa si quedó obsoleto.Deep project scan (read-only) → compact context notes. Re-run whenever the project changes; ale doctor warns when stale.
| scan.maxEntries | override del cap por nota: ale config set scan.maxEntries <n> (default: adaptativo 80→200)per-note cap override: ale config set scan.maxEntries <n> (default: adaptive 80→200) |
ale uninstall
Reversión limpia: quita los hooks, el bloque marcado de CLAUDE.md y la entrada MCP del proyecto. Nunca borra la bóveda ni las notas — tu conocimiento queda intacto en markdown.Clean revert: removes hooks, the marked CLAUDE.md block and the project's MCP entry. Never deletes the vault or your notes — your knowledge stays intact as markdown.
| --project | quitar del proyecto (cwd) en vez de lo globalremove from the project (cwd) instead of global |
ale search <query...>
Búsqueda híbrida en la bóveda por significado, no por keywords.Hybrid search over the vault by meaning, not keywords.
| -k <n> | número de resultados (default: 6)number of results (default: 6) |
| --expand | incluir vecinos del grafo conectados a los resultadosinclude graph neighbors connected to the results |
ale add <title>
Guardar una nota manualmente. Usa [[wikilinks]] para conectar conocimiento.Save a note manually. Use [[wikilinks]] to connect knowledge.
| -c, --content <text> | contenido markdown (o se lee de stdin)markdown content (or read from stdin) |
| -f, --file <path> | leer contenido de un archivo .md/.txtread content from a .md/.txt file |
| -t, --tags <tags> | tags separados por comacomma-separated tags |
Ejemplos diariosDaily examples
Buscar por significado, no por keywordsSearch by meaning, not keywords
$ ale search how do I publish my app to the google store
Flutter release deployment (Alexandria/notes/2026-07-09-deploy.md, note) ● high relevance
To publish on Play Store: keystore outside git, key.properties,
flutter build appbundle. Always sign with the production key.
La consulta no comparte keywords con la nota («google store» → «Play Store»). Más ejemplos:The query shares zero keywords with the note ("google store" → "Play Store"). More:
ale search cors error in the api # encuentra tu fix de hace meses
ale search "architecture decision" -k 10
ale search auth --expand # también trae notas CONECTADAS (grafo)
● high/medium/low relevance es relativa al mejor resultado — confía en ella más que en el número crudo.The ● high/medium/low relevance label is relative to the best hit — trust it over the raw number.Guardar notas manualmenteSave notes manually
# Nota rápida
ale add "Prisma setup" -c "Singleton en src/lib/prisma.ts usando globalThis" -t "prisma,db"
# Desde un archivo del proyecto (o un pipe)
ale add "Decisiones de arquitectura Q3" --file DECISIONS.md
cat DECISIONS.md | ale add "Decisiones de arquitectura Q3"
# Con [[wikilinks]] para conectar conocimiento
ale add "Vercel deploy" -c "Region cdg1, ver [[Prisma setup]]" -t deploy
(La captura automática vía hooks ya hace esto en cada sesión de Claude Code — add es para conocimiento extra.)(Automatic capture via hooks already does this in every Claude Code session — add is for extra knowledge.)
Ver el grafo de conocimientoView the knowledge graph
El grafo se mantiene solo — cada cambio en la bóveda regenera <vault>/grafo.html.The graph maintains itself — every vault change regenerates <vault>/grafo.html.
ale graph # visor EN VIVO en tu navegador (auto-refresh cada 3s)
ale graph --out other.html # copia estática en otro lugar (opcional)
Nodos = notas (tamaño = conexiones, color = tipo: planes, verificaciones, lecciones, sesiones), líneas sólidas = [[wikilinks]], punteadas = similitud semántica.Nodes = notes (size = connections, color = type: plans, verifications, lessons, sessions), solid lines = [[wikilinks]], dashed = semantic similarity.
Medir lo que te ahorraMeasure what it saves you
$ ale stats
Vault: /Users/you/Alexandria (global)
Notes: 142 {"note":80,"prompt":38,"session":22,"map":2}
Indexed chunks: 385 · Connections: 91
Semantic search: active
Protocol
Plans: 6 (1 open) · Verifications: 14 (86% ok)
Lessons: 9 (4 reused — each reuse = a debug session that never happened)
Measured (facts, not estimates)
Context injections: 57
Solution cache hits: 12 (~9,400 tokens)
Injected tokens (cost): ~21,300
Estimated savings (band, NOT audited)
~63,900 – 170,400 tokens
Control de tokens (apagar y prender)Token control (turn things on/off)
Todo lo que gasta tokens es opt-out. Tres formas, y funcionan antes o después de instalar (la configuración es global e independiente de la bóveda):Everything that spends tokens is opt-out. Three ways, and they work before or after installing (the config is global and independent of the vault):
ale toggles # menú interactivo con costos
ale init --off architect.enrich,digest.map # desactivar desde la instalación
ale config set tokens.solutionCache false # scriptable, uno por uno
| Key | Qué haceWhat it does | Costo aproximadoApprox. cost |
|---|---|---|
protocol | Ciclo plan → verificar → aprender (manifiesto + tools MCP)Plan → verify → learn cycle (manifest + MCP tools) | ~6% del digest (~120 tokens); su ahorro es diferido~6% of the digest (~120 tokens); its savings are deferred |
architect.enrich | Arquitecto en plan_create: similares + lecciones + hintsArchitect in plan_create: similar plans + lessons + hints | ~+90 tokens por plan (escala con el contexto hallado, tope 2+2+3)~+90 tokens per plan (scales with found context, capped at 2+2+3) |
tokens.solutionCache | Inyecta la solución de un prompt casi idéntico anteriorInjects the solution of a nearly identical past prompt | hasta ~500 tokens/prompt; evita re-derivar completoup to ~500 tokens/prompt; avoids full re-derivation |
tokens.promptSearch | Búsqueda semántica por prompt — el mecanismo PRINCIPAL de ahorroPer-prompt semantic search — the MAIN saving mechanism | hasta ~1500 tokens/prompt; apagarlo apaga la razón de ser de Alexandriaup to ~1500 tokens/prompt; turning it off defeats Alexandria's purpose |
digest.map | Mapa del proyecto al iniciar sesiónProject map at session start | hasta ~50% del digest (~1000 tokens); evita re-explorarup to ~50% of the digest (~1000 tokens); avoids re-exploring |
digest.titleIndex | Índice de hasta 25 títulos que la bóveda ya sabeIndex of up to 25 titles the vault already knows | ~10% del digest (~200 tokens)~10% of the digest (~200 tokens) |
ale stats.If you touch nothing, nothing changes. Costs are approximate, computed from the code's real budgets (digest ≈2000 tokens, per-prompt injection ≈1500) — you can always see the real measured spend with ale stats. Escaneo del proyecto (ale scan)Project scan (ale scan)
ale init --project ya lo corre; re-ejecútalo cuando el proyecto cambie (ale doctor te avisa si quedó obsoleto):ale init --project already runs it; re-run whenever the project changes (ale doctor warns you when it's stale):
$ ale scan
✓ API: 12 rutas · Env: 8 vars (solo nombres) · Datos: 5 · Convenciones: 4 · .gitignore ✓
Cuatro escáneres de solo-lectura escriben notas compactas (una línea por entrada) que el agente recibe solo cuando son relevantes — el digest de inicio no crece:Four read-only scanners write compact notes (one line per entry) that the agent receives only when relevant — the session digest doesn't grow:
API - <proyecto>— rutas del App Router con métodos HTTP, Pages Router, server actions ("use server"), Express/Hono.API - <project>— App Router routes with HTTP methods, Pages Router, server actions ("use server"), Express/Hono.Env - <proyecto>— SOLO NOMBRES de variables de entorno (los valores jamás se copian).Env - <project>— env var NAMES only (values are never copied).Datos - <proyecto>— esquema por parseo de archivos (prisma, drizzle, migrations SQL) — sin conexión a BD.Datos - <project>— schema from file parsing (prisma, drizzle, SQL migrations) — no DB connection.Convenciones - <proyecto>— gestor de paquetes, monorepo, TS strict, alias, framework.Convenciones - <project>— package manager, monorepo, TS strict, aliases, framework.
Cap adaptativo: proyectos chicos quedan en 80 entradas por nota; con más señal real escala hasta 200, con marca visible de truncado (… +N más) y override ale config set scan.maxEntries <n>. En monorepos el muestreo es justo por carpeta — una carpeta gigante no esconde las rutas de sus hermanas (v1.1.0). Y antes de escribir garantiza que la bóveda esté en .gitignore: tus notas nunca llegan a un repo compartido.Adaptive cap: small projects stay at 80 entries per note; with more real signal it scales up to 200, with a visible truncation mark (… +N more) and the ale config set scan.maxEntries <n> override. In monorepos sampling is fair per folder — one huge folder can't hide its siblings' routes (v1.1.0). And before writing it guarantees the vault is in .gitignore: your notes never reach a shared repo.
El Protocolo AlexandriaThe Alexandria Protocol
Más allá de la memoria, Alexandria trae un protocolo de ingeniería ligero que convierte cualquier modelo con MCP en un agente senior que planea, verifica con evidencia y aprende:Beyond memory, Alexandria ships a lightweight engineering protocol that turns any MCP-capable model into a senior agent that plans, verifies with evidence, and learns:
Vive en las propias tools MCP — sus nombres y descripciones cargan las instrucciones — así funciona idéntico en todos los agentes, con o sin hooks:It lives in the MCP tools themselves — their names and descriptions carry the instructions — so it works identically across every agent, with or without hooks:
| MCP tool | Qué hace el agenteWhat the agent does |
|---|---|
plan_create | Planea como un Arquitecto: aclara objetivos vagos antes de crear el plan, registra el diseño (param design → sección Diseño) y la respuesta trae planes similares previos + lecciones más sugerencias de calidad (DoD verificable, tareas chicas) — sugerencias, nunca bloqueo. Los planes abiertos se reinyectan la próxima sesión.Plans like an Architect: clarifies vague goals first, records the design (design param → Design section) and the response surfaces similar past plans + lessons plus quality hints (verifiable DoD, small tasks) — suggestions, never a gate. Open plans are re-injected next session. |
task_verify | Ejecuta el comando de verificación (ej. npm test) y saca el veredicto del exit code real — no de la palabra del agente. Marca discrepancia si el agente afirmaba otra cosa; sin comando, la nota queda auto-reportado y ale audit la delata.Runs the verify command (e.g. npm test) and takes the verdict from the real exit code — not the agent's word. Flags a discrepancy if the agent claimed otherwise; without a command the note is tagged self-reported and ale audit calls it out. |
lesson_extract | Destila la causa raíz + fix tras resolver algo no obvio. ~200 tokens hoy reemplazan ~20,000 de re-debug el mes que viene.Distills the root cause + fix after solving something non-obvious. ~200 tokens today replace ~20,000 tokens of re-debugging next month. |
El protocolo está activo por defecto; actívalo/desactívalo cuando quieras:The protocol is on by default; toggle it anytime:
ale config set protocol false # solo bóveda clásica
ale config set protocol true # de vuelta
ale init --no-protocol # instalar sin él
Agentes soportadosSupported agents
Los registros son merges idempotentes — tus otros servidores MCP nunca se tocan.Registrations are idempotent merges — your other MCP servers are never touched.
ale agents # lista con auto-detección (● = encontrado en tu máquina)
ale agents all # registra el MCP en todos
ale agents cursor,gemini # solo estos
| Agent | Config escritaConfig written | Por proyectoPer-project |
|---|---|---|
| Claude Code | .mcp.json / claude mcp add + hooks | |
| Cursor | ~/.cursor/mcp.json / .cursor/mcp.json | |
| OpenCode | opencode.json | |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | — |
| Cline | cline_mcp_settings.json (VS Code) | — |
| Codex CLI | ~/.codex/config.toml | — |
| Gemini CLI | ~/.gemini/settings.json / .gemini/settings.json | |
| VS Code (Copilot) | mcp.json / .vscode/mcp.json | |
| OpenClaw | ~/.openclaw/openclaw.json | — |
| Hermes Agent (Nous) | hermes mcp add / ~/.hermes/config.yaml | — |
Cómo funcionaHow it works
AI agent session
|
+- SessionStart --> inyecta digest: manifiesto del protocolo + mapa + planes abiertos (hooks, Claude Code)
+- Cada prompt --> búsqueda híbrida local -> inyecta solo lo relevante (hooks, Claude Code)
| +- prompt casi idéntico ya resuelto -> inyecta la solución (cache)
+- MCP tools ----> vault_search · vault_save · vault_related · vault_link (todos los agentes)
| plan_create · task_verify · lesson_extract (el Protocolo)
+- Stop/PreCompact> guarda el resultado de la sesión en la bóveda (hooks, Claude Code)
|
<Obsidian vault>/Alexandria/*.md <- markdown, [[wikilinks]]
<vault>/.vault/ <- índice (regenerable)
- Búsqueda híbrida: embeddings locales (transformers.js, e5-small multilingüe) + BM25, combinados con RRF, ponderados por recencia, uso y tipo de nota (lecciones/soluciones rankean más alto).Hybrid search: local embeddings (transformers.js, multilingual e5-small) + BM25, combined with RRF, boosted by recency, usage, and note type (lessons/solutions rank highest).
- Índice incremental: solo re-procesa notas cuyo mtime cambió. El grafo nunca se reconstruye desde cero.Incremental index: only re-processes notes whose mtime changed. The graph is never rebuilt from scratch.
- Deduplicación: prompts casi idénticos no crean notas nuevas — suman
hits(y suben en el ranking).Deduplication: near-identical prompts don't create new notes — they addhits(and climb the ranking). - Sobre los scores: el modelo e5 comprime los cosenos (~0.76–0.86 aun para temas no relacionados); el ranking es lo confiable, de ahí la etiqueta de relevancia.About scores: the e5 model compresses cosines (~0.76–0.86 even for unrelated topics); the ranking is what's reliable, hence the relevance label.
Privacidad y seguridadPrivacy & security
- Todo corre en tu máquina: el modelo de embeddings se descarga una vez (Hugging Face) y luego funciona offline. Tus notas nunca salen de tu disco. Sin telemetría.Everything runs on your machine: the embedding model is downloaded once (Hugging Face) and then works offline. Your notes never leave your disk. No telemetry.
- Sin API keys, sin cuentas, sin costo.No API keys, no accounts, no cost.
- Los escáneres de dependencias (Socket, etc.) marcan acceso a red/shell/env en el árbol de dependencias: eso viene del runtime de ML (
onnxruntime/transformers.js, que necesita acceso al filesystem y la descarga única del modelo) y del SDK oficial de MCP — no del código de Alexandria. El paquete publicado no corre install scripts propios.Dependency scanners (Socket, etc.) flag network/shell/env access in the dependency tree: those come from the ML runtime (onnxruntime/transformers.js, which needs filesystem access and the one-time model download) and the official MCP SDK — not from Alexandria's code. The published package runs no install scripts of its own. - Los configs por proyecto generados (
.mcp.json,.vault.json, etc.) apuntan a la ruta de instalación de tu máquina, así queale init --projectlos gitignorea automáticamente (y quita del tracking los ya commiteados) — nunca se filtran a un repo compartido. Para un equipo que sí quiere un MCP compartido, correale init --project --portable.Generated per-project configs (.mcp.json,.vault.json, etc.) point at your machine's install path, soale init --projectautomatically gitignores them (and untracks any already committed) — they never leak to a shared repo. For a team that wants a shared MCP config, runale init --project --portable.
Dudas técnicas frecuentesTechnical FAQ
¿Necesito internet o una API key?Do I need internet or an API key?
Solo internet una vez, para descargar el modelo de embeddings (~130MB) en el primer init. Después todo es offline. Nunca hay API keys ni cuentas.Internet only once, to download the embedding model (~130MB) on the first init. After that everything is offline. No API keys or accounts, ever.
¿Qué pasa si aún no descargué el modelo? ¿Falla la búsqueda?What if I haven't downloaded the model yet? Does search break?
No. La búsqueda degrada con elegancia: sin modelo funciona en modo keyword-only (MiniSearch/BM25) — nunca falla por falta de modelo. Cuando el modelo aparece y el índice no tiene vectores, se fuerza un reindex completo automáticamente (v0.5.1+); no necesitas reindex --force a mano.No. Search degrades gracefully: without the model it runs keyword-only (MiniSearch/BM25) — it never fails for a missing model. When the model becomes available and the index has no vectors, a full reindex is forced automatically (v0.5.1+); no manual reindex --force needed.
¿Por qué los scores de similitud son todos ~0.8?Why are the similarity scores all ~0.8?
El modelo e5-small comprime los cosenos (~0.76–0.86 incluso para temas no relacionados), así que el número crudo no sirve como confianza. Por eso Alexandria muestra una etiqueta ● high/medium/low relevance relativa al mejor resultado — confía en el ranking, no en el número.The e5-small model compresses cosines (~0.76–0.86 even for unrelated topics), so the raw number isn't meaningful as confidence. That's why Alexandria shows a ● high/medium/low relevance label relative to the best hit — trust the ranking, not the number.
¿Dónde se guardan mis notas y el índice?Where are my notes and index stored?
Notas en <vault>/Alexandria/*.md (markdown con frontmatter YAML + [[wikilinks]], un vault de Obsidian válido). El índice derivado vive en <vault>/.vault/ (meta.json + embeddings.bin) y siempre es regenerable con ale reindex. Vault por defecto: ~/Alexandria (global) o ./Alexandria (por proyecto).Notes in <vault>/Alexandria/*.md (markdown with YAML frontmatter + [[wikilinks]], a valid Obsidian vault). The derived index lives in <vault>/.vault/ (meta.json + embeddings.bin) and is always regenerable with ale reindex. Default vault: ~/Alexandria (global) or ./Alexandria (per project).
¿Cómo resuelve Alexandria qué bóveda usar?How does Alexandria resolve which vault to use?
Por orden de prioridad: el flag --vault > .vault.json del directorio actual > ~/.config/alexandria/config.json > ~/Alexandria.In priority order: the --vault flag > .vault.json in the current directory > ~/.config/alexandria/config.json > ~/Alexandria.
¿Se borra algo alguna vez? ¿Qué hace consolidate?Is anything ever deleted? What does consolidate do?
Nada se borra. ale consolidate archiva prompts viejos sin reuso a Alexandria/archive/: salen del grafo y de la inyección, pero siguen buscables para siempre (contexto infinito). Por defecto toca prompts de más de 45 días; --dry para simular.Nothing is deleted. ale consolidate archives old unused prompts to Alexandria/archive/: they leave the graph and injection but stay searchable forever (infinite context). Defaults to prompts older than 45 days; --dry to preview.
¿Rompe mis otros servidores MCP al registrarse?Does it break my other MCP servers when registering?
No. Todos los registros son merges idempotentes — nunca sobreescriben configuraciones ajenas. Puedes correr ale agents las veces que quieras.No. All registrations are idempotent merges — they never clobber other servers' configs. You can run ale agents as many times as you want.
Instalé pero el agente no ve nada. ¿Qué pasó?I installed it but the agent sees nothing. What happened?
Los hooks cargan al iniciar una sesión. Una sesión ya abierta no los verá — abre una nueva sesión del agente en esa carpeta. Si persiste, corre ale doctor (verifica y repara modelo, hooks, MCP e índice).Hooks load when a session starts. An already-open session won't see them — open a new agent session in that folder. If it persists, run ale doctor (checks & repairs model, hooks, MCP, and index).
¿Puedo usar mi vault de Obsidian existente?Can I use my existing Obsidian vault?
Sí: ale init --path ~/Documents/MiVault. Alexandria escribe markdown plano con [[wikilinks]] y aliases en el frontmatter para que Obsidian resuelva los enlaces. Nota: grafo.html es para tu navegador; en Obsidian usa su vista de grafo nativa.Yes: ale init --path ~/Documents/MyVault. Alexandria writes plain markdown with [[wikilinks]] and aliases in the frontmatter so Obsidian resolves the links. Note: grafo.html is for your browser; in Obsidian use its native graph view.
¿Cómo lo desinstalo sin perder mis notas?How do I uninstall without losing my notes?
ale uninstall hace una reversión limpia: quita los hooks, el bloque marcado en CLAUDE.md (preservando el resto) y la entrada MCP del proyecto. No borra la bóveda ni las notas.ale uninstall does a clean revert: removes hooks, the marked block in CLAUDE.md (preserving the rest), and the project's MCP entry. It does not delete the vault or notes.
¿Funciona con Bun o Deno? ¿Y en Windows?Does it work with Bun or Deno? And on Windows?
Sí a todo. Es JS puro (ESM, Node ≥ 20) sin dependencias nativas: Windows, macOS, Linux · Node, Bun o Deno. Para Deno, si se queja del "minimum dependency date", añade --minimum-dependency-age=0.Yes to all. It's pure JS (ESM, Node ≥ 20) with no native deps: Windows, macOS, Linux · Node, Bun or Deno. For Deno, if it complains about the "minimum dependency date", add --minimum-dependency-age=0.
¿Puedo controlar cuántos tokens gasta Alexandria?Can I control how many tokens Alexandria spends?
Sí, todo es opt-out. ale toggles (v1.1.0+) lista los 6 comportamientos que gastan tokens — protocolo, Arquitecto, caché de soluciones, búsqueda por prompt, mapa del digest, índice de títulos — cada uno con su costo aproximado real, y los activas/desactivas desde ahí. Funciona antes o después de instalar (la config es global, independiente de la bóveda), y es scriptable: ale init --off architect.enrich,digest.map o ale config set <key> false. Ojo: la búsqueda por prompt es el mecanismo principal de ahorro — apagarla apaga la razón de ser de Alexandria.Yes, everything is opt-out. ale toggles (v1.1.0+) lists the 6 token-spending behaviors — protocol, Architect, solution cache, per-prompt search, digest map, title index — each with its real approximate cost, and you flip them right there. It works before or after installing (the config is global, independent of the vault), and it's scriptable: ale init --off architect.enrich,digest.map or ale config set <key> false. Note: per-prompt search is the main saving mechanism — turning it off defeats Alexandria's purpose.
¿Qué lee ale scan de mi proyecto? ¿Puede ver mis secretos?What does ale scan read from my project? Can it see my secrets?
Lee (nunca modifica) tu código para extraer hechos: rutas de API, nombres de archivos, esquema de datos y convenciones. De los .env extrae SOLO los NOMBRES de las variables — los valores jamás se copian a ninguna nota. El esquema de BD sale de parsear archivos (prisma/drizzle/migrations), sin conectarse a ninguna base. Y antes de escribir, garantiza que la bóveda esté en .gitignore: tus notas nunca llegan a un repo compartido.It reads (never modifies) your code to extract facts: API routes, filenames, data schema and conventions. From .env files it extracts variable NAMES only — values are never copied into any note. The DB schema comes from parsing files (prisma/drizzle/migrations), with no live connection. And before writing, it guarantees the vault is in .gitignore: your notes never reach a shared repo.
¿Cómo me ayuda Alexandria a planear mejor?How does Alexandria help me plan better?
plan_create (v1.0.0+) actúa como un arquitecto: si el objetivo es vago, guía al agente a hacerte 2-3 preguntas antes de crear el plan; acepta un design (decisiones de stack/arquitectura) que queda como sección del plan; y al guardarlo devuelve planes similares que ya hiciste (para retomar, no duplicar), lecciones relevantes de la bóveda y sugerencias de calidad (DoD verificable por comando, tareas chicas). Todo son sugerencias — el plan se guarda siempre, nada se bloquea.plan_create (v1.0.0+) acts like an architect: if the goal is vague it guides the agent to ask you 2-3 questions before creating the plan; it accepts a design (stack/architecture decisions) saved as a plan section; and on save it returns similar plans you already made (resume, don't duplicate), relevant lessons from the vault and quality hints (command-verifiable DoD, small tasks). All suggestions — the plan is always saved, nothing is gated.
¿Cómo comprueba el protocolo que el trabajo esté bien hecho, no solo "por encima"?How does the Protocol check the work is actually done, not just superficially?
La tool task_verify (v0.5.4+) recibe un verify_command (ej. npm test, npm run build) y lo ejecuta: el veredicto sale del exit code real, no de lo que el agente afirme. Si el agente dijo que pasó pero el comando falla, se registra el resultado real y se marca una discrepancia. Si no se pasa comando, la verificación queda etiquetada auto-reportado (no comprobada) y ale audit la delata. Así la verificación es evidencia real, no palabra.The task_verify tool (v0.5.4+) takes a verify_command (e.g. npm test, npm run build) and runs it: the verdict comes from the real exit code, not from what the agent claims. If the agent said it passed but the command fails, the real result is recorded and a discrepancy is flagged. Without a command the verification is tagged self-reported (unchecked) and ale audit calls it out. Verification is real evidence, not the agent's word.
Historial de versionesChangelog
Versión actual: v1.1.0. Resumen de lo más reciente (ver el CHANGELOG completo):Current version: v1.1.0. Recent highlights (see the full CHANGELOG):
| VersiónVersion | CambiosChanges |
|---|---|
1.1.0 | ale toggles: control de todo lo que gasta tokens con costos reales, antes o después de instalar (init --off); Arquitecto a mitad de costo (193→90 tokens medidos); ale scan con cap adaptativo ≤200 y muestreo justo en monorepos (ya no pierde carpetas); diccionario interno por tag para que audit/digest escalen con años de bóveda.ale toggles: control everything that spends tokens with real costs, before or after install (init --off); Architect at half cost (193→90 measured tokens); ale scan with adaptive cap ≤200 and fair sampling in monorepos (no more lost folders); internal tag dictionary so audit/digest scale with years of vault. |
1.0.0 | Primera estable: ale scan (contexto profundo — API, env solo-nombres, esquema por archivos, convenciones — gitignoreado y re-ejecutable); plan_create planea como Arquitecto (diseño + planes similares + lecciones + hints); índice a prueba de corrupción (escritura atómica + auto-reconstrucción); doctor ampliado; tests 9→27.First stable: ale scan (deep context — API, env names-only, schema from files, conventions — gitignored & re-runnable); plan_create plans like an Architect (design + similar plans + lessons + hints); corruption-proof index (atomic writes + self-rebuild); expanded doctor; tests 9→27. |
0.5.4 | task_verify ahora ejecuta el comando y verifica por exit code real (detecta discrepancias); ale search añade la Cadena del Protocolo (plan+verificación+lección); detección de skills semántica (e5, z-score); skills.repo configurable → corre en cualquier equipo.task_verify now runs the command and verifies by real exit code (catches discrepancies); ale search adds the Protocol chain (plan+verification+lesson); semantic skill detection (e5, z-score); configurable skills.repo → runs on any machine. |
0.5.3 | La métrica «lecciones reutilizadas» ahora sube de verdad: al inyectar una lección/solución como contexto, su hits incrementa — un reuso genuino por fin es medible.The "lessons reused" metric now actually moves: injecting a lesson/solution as context bumps its hits — a genuine reuse is finally measurable. |
0.5.2 | ale stats honesto: separa hechos medidos de una banda de estimación explícitamente etiquetada (sin número falso-preciso).Honest ale stats: separates measured facts from an explicitly-labeled estimate band (no fake-precise single number). |
0.5.1 | Búsqueda auto-repara de keyword-only a semántica; los configs personales ya no se filtran a repos compartidos; uninstall revierte limpio; nuevo init --portable.Search auto-repairs from keyword-only to semantic; personal configs no longer leak into shared repos; uninstall reverts cleanly; new init --portable. |
0.5.0 | El Protocolo Alexandria: plan → ejecutar → verificar con evidencia → aprender. Nuevas tools MCP y comandos (plan, audit, config).The Alexandria Protocol: plan → execute → verify with evidence → learn. New MCP tools and commands (plan, audit, config). |
0.4.0 | init --project totalmente automático (gitignore, escaneo, CLAUDE.md); consolidate archiva prompts viejos.Fully automatic init --project (gitignore, scan, CLAUDE.md); consolidate archives old prompts. |
0.3.0 | Grafo se regenera automáticamente; visor en vivo con auto-refresh; compatibilidad real con Obsidian.Graph regenerates automatically; live viewer with auto-refresh; real Obsidian compatibility. |
0.1.0 | Release inicial: bóveda markdown local, búsqueda híbrida offline, captura automática por hooks, visor de grafo, servidor MCP.Initial release: local markdown vault, offline hybrid search, automatic capture via hooks, graph viewer, MCP server. |