Tugra
Memoria con procedencia para agentes de IA. Un servidor MCP local stdio; no hay nube. Un proyecto de VERAX Teknoloji.
Documentación
tugra
Parte de VERAX, por VERAX Teknoloji. Comienza con el cuerpo de VERAX: verax-ai/verax. Proyectos hermanos: Conarium · Cedulon.
Listado en: npm · Glama · MCP Registry · MCP Market · LobeHub
npx tugra init
Eso crea una bóveda, escribe un dato de ejemplo e imprime un bloque de configuración. Pega el bloque en tu cliente MCP. En una TTY, npx tugra imprime ayuda y sale. Con entrada por tubería (Claude Desktop, Cursor, Claude Code) es el servidor MCP.
Memoria con procedencia para agentes de IA. Cada afirmación lleva su fuente, su antigüedad y su límite. No hay nube.
Qué es
Un dato que no puede nombrar de dónde vino no es un dato. Tugra almacena cada afirmación como un archivo cuyo frontmatter contiene la fuente, la fecha de última verificación, la vida útil y — cuando el tema está prohibido — un límite que prohíbe la invención. La búsqueda clasifica por puntuación de tokens, luego frescura, luego confianza. Los datos retirados y podridos quedan fuera del conjunto predeterminado.
Herramientas
| Herramienta | Qué hace |
|---|---|
fact_search | Busca en la bóveda. Retirados/podridos omitidos salvo que archive: true. |
fact_read | Lee un dato por uid. El cuerpo se escapa antes de que el modelo lo vea. |
fact_propose | Escribe un borrador. Los patrones secretos se rechazan antes de cualquier escritura. type: "boundary" siempre se pone en cuarentena. |
event_report | Añade una línea de telemetría local. Sin red. |
Los nombres de campos almacenados permanecen en la forma nativa de la bóveda (kaynak, guven, raf_omru, sinir). Los nombres de herramientas y parámetros anteriores son el contrato público.
Instalación — rutas de entorno (opcional)
tugra init es suficiente para empezar. Sobrescribe las dos rutas solo si ya tienes una bóveda en otro lugar. Sin ellas, el servidor busca junto al paquete instalado — eso es incorrecto para un npx sin init.
TUGRA_VAULT— bóveda (datos en markdown)TUGRA_EVENTS— directorio de telemetría
Autorización: si no hay almacén de autorización configurado, el modo de usuario único está activo — busca y propone trabajo sin perfil. Si hay un almacén de autorización sí configurado (un directorio yetki/, o TUGRA_AUTH), cada agente necesita un perfil JSON o la búsqueda devuelve no autorizado.
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"tugra": {
"command": "npx",
"args": ["-y", "tugra"],
"env": {
"TUGRA_VAULT": "/absolute/path/to/vault",
"TUGRA_EVENTS": "/absolute/path/to/events"
}
}
}
}
Claude Code
.mcp.json en la raíz del proyecto, o claude mcp add:
{
"mcpServers": {
"tugra": {
"command": "npx",
"args": ["-y", "tugra"],
"env": {
"TUGRA_VAULT": "/absolute/path/to/vault",
"TUGRA_EVENTS": "/absolute/path/to/events"
}
}
}
}
Cursor
.cursor/mcp.json o Configuración de Cursor → MCP:
{
"mcpServers": {
"tugra": {
"command": "npx",
"args": ["-y", "tugra"],
"env": {
"TUGRA_VAULT": "/absolute/path/to/vault",
"TUGRA_EVENTS": "/absolute/path/to/events"
}
}
}
}
Windsurf
mcp_config.json:
{
"mcpServers": {
"tugra": {
"command": "npx",
"args": ["-y", "tugra"],
"env": {
"TUGRA_VAULT": "/absolute/path/to/vault",
"TUGRA_EVENTS": "/absolute/path/to/events"
}
}
}
}
Codex
~/.codex/config.toml:
[mcp_servers.tugra]
command = "npx"
args = ["-y", "tugra"]
[mcp_servers.tugra.env]
TUGRA_VAULT = "/absolute/path/to/vault"
TUGRA_EVENTS = "/absolute/path/to/events"
Windows: usa una ruta completa (C:\\Users\\…\\vault). Node 20 o más reciente.
Más notas de clientes: docs/install.md.
Autorización de bóveda compartida (opcional)
Las configuraciones de usuario único no necesitan esto. Añade TUGRA_AUTH solo cuando varios agentes comparten una bóveda y cada uno necesita su propio perfil (mcp-readonly@tugra y otros como archivos JSON en ese directorio). Un perfil faltante entonces devuelve no autorizado. Un TUGRA_AUTH vacío se trata como no configurado — el modo de usuario único permanece activo.
Superficie de la biblioteca anfitriona (no el cable MCP)
Las herramientas MCP (fact_search, fact_read, fact_propose, event_report) aplican autorización en cada llamada. El paquete publicado también incluye dist-paket/akis.js y dist-paket/yetki.js para que una aplicación anfitriona (cron, espejo, cabina) pueda escribir telemetría sin pasar por JSON-RPC.
Esos módulos son públicos a propósito. akisBildir({ atlaYetki: true }), eylem: "yetki_talebi" y dosyaYoksaIzin (predeterminado true) omiten o relajan la verificación. harcamaEkle muta un perfil. El anfitrión que los importa posee la autorización. El cable MCP no puede configurar estas banderas — el esquema de la herramienta no las acepta.
Bóveda de escala vs bóveda objetivo
Los niveles A0–A5 son datos (yonetisim.yetki.a0 … a5) en una bóveda. El servidor stdio los lee de TUGRA_VAULT, o de la cabina kasa/ cuando esa variable no está configurada.
tugraArac / createTugraMcp toman un kasaKok opcional (el objetivo de escritura/búsqueda). La escala no sigue ese objetivo. Se predetermina a varsayilanKasa() — la misma bóveda central que usa el servidor stdio. Un anfitrión que apunta kasaKok a un árbol solo de datos sigue usando la escala de cabina / TUGRA_VAULT. Para leer la escala de un árbol diferente, pasa skalaKasa explícitamente.
Las cuatro herramientas comparten un único resolvedor. Este es el contrato: objetivo separado + gobernanza central sigue siendo alcanzable. YAYIN/12 brevemente predeterminó la escala a kasaKok; eso rompió el anfitrión de raíz dividida. YAYIN/13 restaura el predeterminado central.
Lo que no garantizamos
- Sin sincronización en la nube. La bóveda son los archivos a los que apuntaste. Nada se sube.
- Sin fusión automática. Dos escritores, dos archivos. Tú reconcilias.
- Sin borrado en esta versión. Existe el retiro; el borrado es posterior.
- Sin detección automática de conflictos. Datos contradictorios pueden coexistir hasta que un humano diga lo contrario.
- Sin servicio alojado.
npx tugraes un proceso stdio local.
Este paquete no se publica como SaaS. No hay tabla de precios aquí.
Requisitos
- Node.js 20 o más reciente. Esta es una decisión de soporte, no un piso técnico: el paquete se prueba en 20 y 22 en CI, y también funciona en 18 — pero 18 pasó su fin de vida útil, así que no lo soportamos.
- Un directorio de bóveda que poseas
Mapa de temas (opcional)
<vault>/_konu-haritasi.json — reglas { "desen", "bayrak", "konu" } en
harita, alt_kirilim y stem. Si el archivo falta, el mapa está vacío:
el texto desconocido cae en kurum.genel o dunya.<world>.genel. Los patrones rotos o
demasiado largos se omiten y registran. Este paquete no incluye una
taxonomía de empresa.
Licencia
Apache-2.0. Ver LICENSE y NOTICE.
La página de marketing vive en ../site/ (npm run preview allí). No se despliega desde este paquete.
Compatibilidad: TUGRA_KASA, TUGRA_AKIS, TUGRA_YETKI (y los nombres más antiguos TALAMUS_* / MULTI_*) siguen funcionando como respaldo cuando el nombre en inglés no está configurado.