MELRA
Entorno de ejecución local para agentes MCP con verificaciones de políticas, aprobaciones con alcance, verificación, recibos duraderos y recuperación.
Documentación
MELRA
Módulo de Ejecución en Capas para Autonomía Refiable
Tu agente de IA decide qué hacer. MELRA se asegura de que suceda de forma segura, una sola vez y de manera comprobable.
Un núcleo de autonomía de código abierto: la capa por la que pasa cada acción del agente en su camino hacia tus archivos, terminal, navegador, escritorio y APIs. Verifica cada acción contra tus reglas, te pregunta antes de cualquier cosa riesgosa, la ejecuta exactamente una vez, comprueba que realmente funcionó y guarda un recibo. Cualquier agente, cualquier modelo, las mismas garantías.
Funciona con
Inicio rápido · Cómo funciona · Ver qué está haciendo · Documentación · Discusiones
[!WARNING] MELRA es software alfa. El runtime local está probado de extremo a extremo, pero las APIs pueden cambiar antes de
1.0. Usa un espacio de trabajo aislado, mantén las listas de permitidos de dominios y comandos estrechas, y lee cada aprobación antes de otorgarla.
¿Qué es MELRA?
Los agentes de IA ya no solo hablan. Editan archivos, ejecutan comandos, navegan por sitios web y llaman APIs en tu nombre. Cuatro preguntas vienen con eso, y la mayoría de los agentes las responden de manera diferente, o no las responden en absoluto:
🛡️ ¿Está permitido?Cada acción se verifica contra tu política, y se vuelve a verificar en el momento en que se ejecuta. Los cambios riesgosos esperan tu aprobación exacta. |
✅ ¿Realmente funcionó?"Sin error" no es éxito. Una acción cuenta solo cuando la evidencia que declaraste se cumple: el archivo existe, el código de salida es 0, la página dice lo que debería. |
🔁 ¿Qué pasa si se bloquea?Cada acción se registra antes de ejecutarse y se ejecuta como máximo una vez. Después de un bloqueo, MELRA resuelve qué sucedió en lugar de repetirlo ciegamente. |
🧾 ¿Qué sucedió?Cada acción deja un recibo redactado y vinculado por hash, para que puedas auditar qué se ejecutó, quién lo pidió y por qué se permitió. |
MELRA responde esas preguntas una vez, en un solo lugar, para cada agente. Se sitúa debajo de tu agente, de la misma manera que un sistema operativo se sitúa debajo de tus aplicaciones:
El LLM razona. El harness gestiona el bucle. MELRA posee el ciclo de vida del efecto. Cambia el modelo o el agente el viernes; tus políticas, aprobaciones, credenciales, historial y recibos seguirán ahí el lunes.
Inicio rápido
Necesitas Node.js 22 o más reciente. Un comando configura todo:
npx @melra/cli@alpha setup
En una terminal, setup es un asistente breve. Escribe una política local segura, encuentra las
aplicaciones de agente en tu máquina, pregunta cuál debería usar MELRA, y escribe MELRA en
el archivo de configuración propio de esa aplicación, conservando todo lo demás (y guardando una .bak primero):
Which MCP client should use MELRA?
1) Claude Code detected: 'claude' on PATH
2) Cursor detected: config file found
3) Gemini CLI detected: config folder found
...
Choose 1-26 [1]: 1
Write it into ~/project/.mcp.json? [Y/n]
✓ Policy ~/.melra/policy.json
✓ Claude Code ~/project/.mcp.json
Next: Start claude in this workspace and approve the 'melra' server when it asks; 'claude mcp list' then shows it connected.
Luego reinicia tu aplicación de agente (Claude Code te pedirá aprobar el servidor de un proyecto una vez) y pídele que haga algo, por ejemplo "usa melra para mostrarme la información del sistema". Eso es todo.
¿Prefieres banderas, un contenedor o compilar desde el código fuente?
| Cómo | Comando |
|---|---|
| Un cliente, sin preguntas | npx @melra/cli@alpha setup --client cursor --write |
| Imprimir la configuración en lugar de escribirla | npx @melra/cli@alpha setup --client codex |
| Instalar globalmente | npm install -g @melra/cli@alpha && melra setup |
| Contenedor (sin necesidad de Node) | docker run --rm ghcr.io/xagi-lab/melra:alpha doctor |
| Versión precompilada | descarga desde releases, verifica contra SHA256SUMS, luego node melra/dist/bin.js doctor |
| Desde el código fuente | git clone https://github.com/XAGI-Lab/melra.git && cd melra && corepack enable && pnpm install --frozen-lockfile && pnpm build && pnpm melra setup |
| Un solo archivo, sin necesidad de Node (experimental) | desde un checkout: pnpm build:sea, luego ./dist-sea/melra setup; consulta ejecutable único |
| Verificar lo que instalaste | npm audit signatures verifica las firmas del registro; la procedencia npm que vincula cada paquete a su compilación llega con la próxima versión (consulta paquetes npm) |
Cada comando imprime salida legible en una terminal y JSON plano cuando se canaliza o con
--json, para que los scripts sigan funcionando. MELRA crea <MELRA_HOME>/payload.key con
permisos privados en el primer inicio; haz una copia de seguridad junto con los archivos SQLite, porque perderlo
hace ilegibles los payloads persistidos. Consulta instalación para
cada ruta de instalación, variable de entorno e invocación Docker endurecida.
[!CAUTION] El paquete npm sin ámbito
melray el paquete PyPImelrason proyectos de terceros no relacionados. Este proyecto publica solo bajo el ámbito npm@melra/:@melra/clies la CLI. Instala desde ese ámbito, desde este repositorio o desde los releases oficiales.
Funciona con tu agente
MELRA habla el Model Context Protocol, por lo que cualquier
cliente MCP puede usarlo. Para estos, melra setup --client <name> escribe la configuración en el
formato y ubicación propios del cliente, y melra doctor te dice si cada uno está
apuntando a MELRA:
| Agente | --client | Configuración que escribe |
|---|---|---|
claude-code | <project>/.mcp.json | |
claude-desktop | claude_desktop_config.json | |
codex | ~/.codex/config.toml | |
cursor | ~/.cursor/mcp.json | |
| 🟦 VS Code (modo agente Copilot) | vscode | <project>/.vscode/mcp.json |
gemini | ~/.gemini/settings.json | |
windsurf | ~/.codeium/windsurf/mcp_config.json | |
zed | Zed settings.json (comentarios conservados) | |
| 🧩 Cline | cline | Cline's cline_mcp_settings.json |
| ⬛ OpenCode | opencode | ~/.config/opencode/opencode.json |
| 👻 Kiro | kiro | ~/.kiro/settings/mcp.json |
| 🪿 Goose | goose | ~/.config/goose/config.yaml |
| ▶️ Continue | continue | <project>/.continue/mcpServers/melra.yaml |
| ⚡ Amp | amp | ~/.config/amp/settings.json |
| 🦞 OpenClaw | openclaw | ~/.openclaw/openclaw.json (mcp.servers) |
| ⚕️ Hermes Agent (Nous Research) | hermes | ~/.hermes/config.yaml (mcp_servers) |
copilot | ~/.copilot/mcp-config.json | |
| 🐉 Qwen Code | qwen | ~/.qwen/settings.json |
| 🅰️ Auggie (Augment) | auggie | ~/.augment/settings.json |
warp | ~/.warp/.mcp.json | |
junie | ~/.junie/mcp/mcp.json | |
| 🤖 Factory Droid | droid | ~/.factory/mcp.json |
| 🌙 Kimi Code | kimi | ~/.kimi-code/mcp.json |
| 🪁 Kilo Code | kilo | ~/.config/kilo/kilo.jsonc (comentarios conservados) |
| 🧪 LM Studio | lmstudio | ~/.lmstudio/mcp.json |
| 🔌 Cualquier otra cosa | generic | imprime el bloque estándar mcpServers |
¿Construyendo tu propio agente? Usa el SDK de TypeScript o el SDK de Python. Ambos pueden iniciar MELRA o conectarse a uno que ya esté ejecutándose a través de HTTP de bucle local o un socket Unix privado. Para frameworks de agentes, consulta los ejemplos de frameworks: LangChain / LangGraph, el OpenAI Agents SDK, el Vercel AI SDK y los SDK MCP oficiales.
[!NOTE] Un cliente nombrado se marca como verificado solo después de que el paquete publicado, no un checkout del código fuente, pase descubrimiento, planificación, aprobación, ejecución, cancelación y recuperación de recibos en ese cliente. El estado por cliente vive en COMPATIBILITY.md.
Cómo funciona
Cada acción que un agente quiere tomar se llama un efecto: file.write,
terminal.run, browser.click, http.request, y así sucesivamente. MELRA hace exactamente nueve
cosas a cada efecto, divididas en dos llamadas para que nada se ejecute en el momento de la planificación:
Aquí hay un cambio de principio a fin:
sequenceDiagram
autonumber
participant A as Your agent
participant M as MELRA
participant You
participant W as Your system
A->>M: melra_plan: write notes.md, evidence "file contains 'done'"
M->>M: type, classify, check policy, record
M-->>A: awaiting_approval + challenge "APPROVE 3f9c…"
A->>You: May I write notes.md?
You-->>A: yes
A->>M: melra_execute with the exact phrase
M->>M: policy again, not already done?
M->>W: write the file (under a budget)
M->>W: read it back, independently
M-->>A: verified_success + receipt
Lo que significa el estado final, y qué debería hacer un agente a continuación:
| Estado | Significado | Siguiente paso |
|---|---|---|
🟢 verified_success | Se ejecutó y cada verificación declarada pasó | Hecho |
🟡 partial | Se ejecutó, pero la evidencia no se cumplió | Mira la evidencia, luego decide |
🔴 policy_blocked | Rechazado antes de que se ejecutara algo | Lee el motivo; la misma solicitud será rechazada de nuevo |
🔵 awaiting_approval | Un cambio está esperando tu frase exacta | Apruébalo desde el agente que lo planificó |
🟣 recovery_required | Un cambio puede o no haber sucedido | Verifica el mundo primero; nunca vuelvas a ejecutar a ciegas |
⚪ failed · cancelled · budget_exhausted | No se completó | Seguro planificar de nuevo |
Mostrar la solicitud que un agente realmente envía
El agente resuelve "ejecutar las verificaciones" en una operación acotada, más la evidencia que probaría que funcionó:
{
"goal": "Run the repository checks",
"operation": { "kind": "terminal", "action": "run", "command": "pnpm", "args": ["check"] },
"requiredEvidence": [{ "type": "exit_code", "value": 0 }]
}
La tarea llega a verified_success solo si el proceso sale con 0. Un proceso que se ejecuta
y sale con 1 completó la acción pero falló la evidencia, por lo que se reporta como
partial. MELRA nunca recibe un objetivo como "arregla el servidor de producción": eso necesita
juicio, que pertenece al modelo. Un núcleo que interpretara oraciones sería un
núcleo cuyas garantías dependieran de un modelo.
Cuando un agente se conecta, MELRA también le envía una guía breve de este bucle (el
instructions del servidor MCP), para que un modelo sepa declarar evidencia, leer el estado y
nunca reintentar a ciegas un resultado desconocido, sin que nadie haga prompt-engineering.
Ver qué está haciendo
Puedes ver cada acción, su decisión de política, su evidencia y su recibo, desde la terminal o el navegador. Nada aquí puede aprobar o iniciar trabajo, y las frases de aprobación nunca se muestran.
|
Desde la terminal
|
En el navegador:
Una vista general, una lista de tareas buscable y flujos de trabajo duraderos con un flujo de eventos en vivo. Funciona en ancho de teléfono y en modo claro y oscuro, y se sirve con una estricta Content-Security-Policy. |
Seguro por defecto
| Predeterminado | |
|---|---|
| 🏠 | Solo local. stdio, HTTP de bucle cerrado detrás de un token, o un socket Unix de modo 0600 que solo tu usuario del SO puede abrir. Sin cuenta y sin servicio alojado. |
| 📴 | La telemetría está desactivada. |
| ✍️ | Los cambios requieren dos cosas: evidencia declarada y una frase de aprobación exacta, que expira y está limitada a la tarea. |
| 📁 | Las rutas permanecen dentro de tu espacio de trabajo, incluidos los directorios de trabajo del terminal; se rechazan las fugas por enlaces simbólicos. |
| 🚫 | Se deniegan shells, sudo/su y nombres de teclas de escritorio arbitrarios. Los comandos de terminal deben estar en la lista de permitidos por nombre. |
| 🌐 | Las direcciones privadas, de enlace local, de bucle cerrado y de metadatos de nube están bloqueadas por los adaptadores de navegador y HTTP, después de la resolución DNS, antes de consultar cualquier lista de permitidos. |
| ⚠️ | El contenido de páginas web se marca como no confiable y nunca puede cambiar la política. |
| 🔑 | Los secretos se redactan antes de almacenar cualquier cosa, y los agentes reciben capacidades, nunca tus credenciales en bruto. |
| ⏱️ | Cada llamada está limitada por un presupuesto y una señal de cancelación; un navegador atascado falla con un error claro en lugar de colgarse. |
Modo no seguro local y los dos modos de implementación
Cada fila anterior se puede desactivar de una vez con melra serve --unsafe-local (o
MELRA_UNHINGED=1): sin política, sin aprobaciones, sin requisito de evidencia, sin confinamiento
del espacio de trabajo, sin comprobaciones de destino. El agente obtiene exactamente el alcance que tiene tu usuario del SO.
El modo se anuncia en stderr, en melra doctor y en melra_capabilities,
y los recibos aún registran lo que se ejecutó. Consulta
modo no seguro local.
La brecha honesta en una instalación predeterminada es que MELRA gobierna los efectos que se le solicitan.
Un agente que tiene tanto un terminal MELRA como uno nativo hace que el kernel sea
opcional. MELRA_MODE es donde dices en qué situación estás:
| Modo | Significado |
|---|---|
developer (predeterminado) | MELRA gobierna lo que se le solicita; el agente puede tener otra vía, y tú lo aceptas. Por eso MELRA se puede probar en treinta segundos. |
enforced | Afirmas que la alternativa ha desaparecido: el agente está en un sandbox, no tiene secretos privilegiados y llega a estos sistemas solo a través de aquí. |
MELRA no puede verificar esa afirmación desde su propio proceso, y no
finge hacerlo; el aislamiento es trabajo del sistema operativo. Lo que hace el modo forzado es
cerrar cada puerta que MELRA posee: --unsafe-local se rechaza por completo, nada se vincula
fuera del bucle cerrado (se permite un socket Unix 0600), ningún cliente puede registrarse, y
mode se estampa en cada recibo. Para el lado del sistema operativo,
examples/deploy tiene una ejecución Docker endurecida y una unidad
systemd, cada una verificada en CI, y melra doctor informa qué restricciones están realmente en
efecto. Consulta
modos de implementación,
el modelo de amenazas y la política de seguridad.
Por qué MELRA
Un LLM decide qué hacer. Un arnés ejecuta el bucle que lo lleva allí. Algo aún tiene que decidir si el efecto resultante está permitido, ejecutarlo exactamente una vez, probar que funcionó y sobrevivir a un bloqueo en el medio. Hoy esa maquinaria se reconstruye dentro de cada arnés de agente, y muere con el arnés. MELRA es esa maquinaria, extraída y hecha independiente del agente.
| 🚫 Servidor de herramientas típico | ✅ MELRA |
|---|---|
|
|
Junto a las dos capas con las que se confunde más a menudo:
| Arnés de agente | Servidor MCP | MELRA | |
|---|---|---|---|
| Bucle de modelo y razonamiento | ✓ | ✗ | ✗ |
| Herramientas | ✓ | ✓ | vía adaptadores |
| Política independiente del agente | usualmente ✗ | posible | núcleo |
| Estado de efectos duradero | a veces | raramente | núcleo |
| Idempotencia entre reinicios | varía | rara | núcleo |
| Recuperación de bloqueos sin reproducción | varía | rara | núcleo |
| Verificación independiente | poco común | posible | núcleo |
| Recibos de evidencia | poco común | posible | núcleo |
| Funciona entre agentes | ✗ | ✓ | ✓ |
| Aislamiento de credenciales | varía | varía | núcleo |
| Límite de capacidad duro | varía | usualmente ✗ | parcialmente enviado |
Muchos servidores MCP pueden hacer estas cosas; esto no es una afirmación de que ninguno lo haga.
La diferencia es que en MELRA son el contrato de ejecución en lugar de una opción
por herramienta. El límite está parcialmente enviado: MELRA_MODE=enforced cierra cada puerta
que MELRA posee, pero el aislamiento del SO que impide que un arnés llegue al sistema de archivos alrededor
del kernel es responsabilidad del operador; las recetas de implementación endurecidas ejecutables aún están
por venir (#52).
La prueba de características. Cualquier cosa que aún tendría sentido si la solicitud viniera de software determinista ordinario pertenece a MELRA: autorización, idempotencia, aislamiento de credenciales, recuperación, verificación, historial de efectos. Optimización de indicaciones, memoria del LLM, selección de modelos, un planificador y personalidad de agente pertenecen al arnés de arriba. Por eso nada en la ruta de ejecución de MELRA llama jamás a un modelo.
Qué puede hacer
Adaptadores de efectos
El kernel es el contrato; estas son sus implementaciones enviadas. Cada una pasa por la misma tubería de política, aprobación, presupuesto, verificación, recibo y certificado; un adaptador que la omitiera no sería un adaptador.
| Adaptador | Qué está implementado | |
|---|---|---|
| 🗂️ | Archivos | Lectura confinada a la raíz, hash, escritura atómica, mover, mkdir y eliminar, con defensas contra fugas por enlaces simbólicos |
| 💻 | Terminal | Procesos en primer plano sin shell y en segundo plano supervisados con listas de permitidos, rasgos, tiempos de espera, entrada interactiva, cancelación y redacción |
| 🌐 | Navegador | Sesiones de Playwright aisladas, objetivos DOM semánticos, artefactos limitados, política de red y ventanas emergentes, perfiles opcionales, asentamiento basado en condiciones, y cada llamada de navegador limitada para que una página atascada falle claramente |
| 🖥️ | Computadora | Descubrimiento de capacidades, inspección de árbol de accesibilidad y OCR, y captura de pantalla, puntero, arrastre, teclado y desplazamiento gobernados en macOS, Windows y configuraciones Linux/X11 compatibles |
| 📡 | HTTP | GET/HEAD como lecturas y cada otro método como una mutación de como máximo una vez con aprobación, fijada a la dirección que resolvió la verificación de destino, con credenciales inyectadas por el kernel en lugar de entregadas al llamador |
| 🧠 | Memoria operativa | Un servicio del kernel, no un adaptador: almacenamiento SQLite con ámbito de lo que MELRA sabe sobre sus propios efectos, con clasificación híbrida, frescura, expiración, supersesión, procedencia y redacción |
Los adaptadores de base de datos, nube y SaaS están diseñados y en la hoja de ruta, no enviados hoy. La memoria semántica sobre el usuario (preferencias, historial de conversación) pertenece al arnés, no aquí.
Una superficie de herramientas deliberadamente pequeña
Once herramientas frente a los adaptadores y un controlador de flujo de trabajo duradero. La CLI, ambos SDK, HTTP de bucle cerrado y el socket Unix llegan a las mismas once operaciones; esta lista es el contrato del kernel, no una API específica de MCP.
| Herramienta | Propósito |
|---|---|
melra_capabilities | Descubrir operaciones, soporte de plataforma, límites y postura de política |
melra_plan | Validar, persistir y verificar política de una operación limitada |
melra_execute | Ejecutar un plan aprobado y verificar el resultado declarado |
melra_task_status | Leer estado duradero de tareas |
melra_task_cancel | Cancelar cooperativamente trabajo pendiente o en ejecución |
melra_receipt | Recuperar evidencia redactada y el certificado de ejecución |
melra_workflow_plan | Validar, preverificar, cifrar y persistir un flujo de trabajo limitado |
melra_workflow_advance | Ejecutar una ola de programación lista |
melra_workflow_status | Leer la proyección duradera del flujo de trabajo |
melra_workflow_cancel | Cancelar cooperativamente trabajo de flujo de trabajo no terminal |
melra_workflow_control | Pausar, reanudar o suspender una ejecución sin perder su lugar |
¿Prefieres nombres de herramientas que tu modelo ya conoce? Establece MELRA_HARNESS_TOOLS=1 y trece
más aparecen junto a estas (read_file, write_file, run_command, browser_click,
approve, …). No son una segunda vía: cada una construye una tarea ordinaria y ejecuta
la misma tubería. Consulta nombres de herramientas ordinarios.
Flujos de trabajo duraderos y seguros ante reinicios
Los flujos de trabajo componen nodos operation, approval, condition, parallel, bounded_loop,
checkpoint, compensation, human_input y delegation, y cada efecto
aún viaja a través de la tubería de tareas. Cada llamada CLI a continuación es un proceso nuevo, así que esto
ejercita la persistencia ante reinicios sin demonio:
melra workflow plan --definition examples/workflows/restart-safe.json # save the id
melra workflow advance <workflow-id>
melra workflow advance <workflow-id> # exits 3 with the write's approval challenge
melra workflow advance <workflow-id> --approval '<approval-id>:<exact phrase>'
melra workflow advance <workflow-id>
planned stateVersion=2
running stateVersion=4 inspect=verified_complete
awaiting_approval stateVersion=7 phrase="APPROVE <digest prefix>"
running stateVersion=10 write=verified_complete
verified_complete stateVersion=14 checkpoint=verified_complete
Detén el proceso después de cualquier línea y el siguiente comando se reanuda desde el mismo
MELRA_HOME. Las lecturas interrumpidas pueden reintentarse; los cambios interrumpidos nunca se repiten
silenciosamente. Se resuelven mediante reobservación, o se estacionan en recovery_required.
Todo lo enviado en esta versión
Enviado en 0.3.0-alpha.11 y 0.3.0-alpha.12 | Evidencia |
|---|---|
| Flujos de trabajo limitados seguros ante reinicios en nueve tipos de nodos | Un proceso MCP real se detiene, se reemplaza y se reanuda en E2E |
| Cargas útiles cifradas exactas de tareas, flujos de trabajo y resultados | Almacenamiento AES-256-GCM más comprobaciones de fugas de texto plano en SQLite/WAL y proyecciones públicas |
| Recuperación sin reproducción silenciosa de mutaciones | 8/8 escenarios de recuperación deterministas, cero duplicados, cero falsos éxitos |
HTTP de bucle cerrado, un socket Unix 0600, un flujo de eventos y una consola de solo lectura | Mismo tiempo de ejecución que stdio, token en cada ruta, 405 en cualquier no GET a la API JSON |
| Un cliente se autentica y se nombra en cada recibo | Registro OAuth 2.1 desde aprobación hasta un token |
| Dos modos de implementación | --unsafe-local y un enlace no de bucle cerrado se rechazan bajo MELRA_MODE=enforced |
| Llamadas HTTP y API como efecto de primera clase | Una mutación cuya respuesta nunca llegó se informa como desconocida, no como fallida |
| Los agentes reciben capacidades, no credenciales | El kernel guarda el secreto y lo limita por host y capacidad; las concesiones llevan un tamaño y una expiración |
| La evidencia dice cómo se conoce | Fuerza execution / state / independent / semantic en cada elemento de evidencia |
| Verificación de canal independiente | http_resource_matches se ejecuta a través de POST y verifica a través de un GET separado |
| Tus propios tipos de evidencia | Un verificador registrado responde a evidencia { "type": "custom" }; la planificación rechaza uno no registrado, y la evidencia personalizada siempre es la fuerza más débil |
| Configuración para 26 aplicaciones de agentes | melra setup escribe el formato propio de cada aplicación; Claude Code, OpenCode y Hermes Agent conectados a una versión empaquetada en un Mac real |
| Aislamiento del SO que puedes verificar | melra doctor informa capacidades, no_new_privs, seccomp y una raíz de solo lectura; CI lo ejecuta bajo las recetas Docker y systemd endurecidas |
| Un benchmark de gobernanza autogenerado | GovBench: 362 casos a través del tiempo de ejecución real, seguridad 312/312, utilidad 50/50 |
Consulta el CHANGELOG completo.
Evidencia y benchmarks
Los números provienen de scripts confirmados y artefactos JSON, con hashes de conjuntos de datos y límites de afirmaciones. Son mediciones de componentes, no una afirmación de que MELRA sea "el mejor" ni de que los benchmarks no comparables sean comparables.
| Qué | Resultado | Qué significa | |
|---|---|---|---|
| ✅ | Evaluaciones de seguridad y ejecución | 52/52 | Política determinista, concesión de capacidades, alcance de credenciales, traversal, terminal, memoria, computadora, HTTP, cancelación y escenarios de verificación |
| 🔁 | Evaluación del núcleo duradero | 8/8 | 100% de recuperación esperada, 0 ejecución duplicada, 0 éxito falso, 100% de consistencia de eventos |
| 🛡️ | GovBench (autoral) | 312/312 seguridad, 50/50 utilidad | 362 casos sin modelo a través del runtime real: contención, integridad de aprobación, honestidad de verificación, exactamente una vez, redacción y falsos positivos en trabajo legítimo. Su primera ejecución encontró dos errores reales (293/307), ambos corregidos; la gobernanza añade aproximadamente 0.5–1.4 ms por acción |
| 🧠 | Recuperación LoCoMo | 0.7597 cobertura@20 | 1,982 preguntas con evidencia sin llamadas a modelo, embeddings ni red; re-ejecutado el 2026-10-14 e idéntico en cada métrica |
| 🧠 | Recuerdo sintético | 100/100 Recuerdo@1 | Regresión de hechos plantados sobre 1,000 registros |
| 🌐 | Asentamiento de página estática | 183.7 ms p50 vs 301.3 ms | 39% menos espera con lecturas correctas idénticas 10/10 |
| 🌐 | Asentamiento de renderizado lento | 10/10 vs 0/10 correctos | La espera basada en condiciones ve el DOM final; una espera fija de 300 ms lee demasiado pronto |
| 💻 | Terminal | 30/30 verificado | Lanzamiento de procesos sin shell, 48.1 ms p50 en la máquina medida |
| 🖥️ | Plano de control de computadora | 30/30 sondas | 0.032 ms p50 de descubrimiento de adaptadores; esto no es una puntuación de éxito de tareas de escritorio |
Artefactos crudos: microbenchmarks del núcleo, LoCoMo y GovBench.
El repositorio también contiene un harness de agente de navegador pre-registrado (MiniWoB-125 y el subconjunto registrado WebArena-Verified Hard-30) cuyos IDs de tarea, revisiones ascendentes y hashes de conjuntos de datos están congelados. Su puntuación aún no se afirma: se publicará solo después de que una ejecución completa de denominador fijo pase la puerta de publicación. MELRA no ha ejecutado una presentación oficial de OSWorld, WebArena o LongMemEval.
Reproducir las puntuaciones
# the full validation gate
pnpm check && pnpm evals && pnpm e2e && pnpm pack:check && pnpm security:audit
pnpm --filter @melra/evals evaluate:durable-core -- --publishable
# memory, browser, terminal and computer microbenchmarks
pnpm benchmark:core
# governance benchmark: 362 model-free cases, loopback fixtures only
pnpm benchmark:govbench
# LoCoMo (dataset not vendored: CC BY-NC 4.0)
git clone https://github.com/snap-research/locomo.git /tmp/locomo
pnpm benchmark:locomo -- --dataset /tmp/locomo/data/locomo10.json \
--output docs/research/results/locomo-retrieval.json
# browser-agent harness contract checks (no model, no network)
pnpm benchmark:browser:check
pnpm benchmark:browser:verify-upstream
# hardened container and a real MCP smoke test
docker build -t melra:local . && docker run --rm melra:local doctor && pnpm docker:smoke
La suite MiniWoB también necesita los activos MiniWoB++ fijados y una configuración de agente; consulta el índice de investigación y la metodología. Las salidas de ejecución (HAR, capturas de pantalla, video, transcripciones) están ignoradas por git y nunca deben confirmarse.
Para desarrolladores
|
SDKs
Ambos SDKs inician un servidor local o se conectan a uno en ejecución a través de HTTP o un socket Unix. El token siempre se pasa explícitamente, y HTTP plano a un host remoto se rechaza a menos que optes por ello. |
CLI de un vistazo
|
Mapa del repositorio
apps/cli/ CLI and stdio entrypoint
kernel services
packages/protocol/ strict task, workflow, event and operation schemas
packages/runtime-core/ task/workflow lifecycle, events, recovery
packages/policy-core/ local policy and scoped approvals
packages/storage-sqlite/ transactional tasks, workflows, events, evidence
packages/verifier-core/ deterministic evidence predicates
packages/receipt-schema/ receipts and execution certificates
packages/memory/ operational memory: scoped retrieval and lifecycle
packages/server/ runtime composition, MCP, loopback HTTP and Unix socket
reference effect adapters
packages/file-runtime/ confined filesystem operations
packages/terminal-runtime/ shell-free process supervision
packages/browser-runtime/ isolated browser automation and stable-DOM wait
packages/computer-runtime/ governed local computer-use adapters
packages/http-runtime/ governed HTTP and API calls
clients and evidence
packages/sdk-ts/ TypeScript client SDK
sdk-py/ Python client SDK
benchmarks/browser-agent/ pre-registered browser-agent evaluation harness
evals/ safety and durable crash-recovery evaluations
scripts/ benchmark and release checks
docs/research/ methods, findings and raw results
examples/ runnable task examples
MELRA está impulsado por capacidades, no restringido por lenguaje: Rust, Go, Swift, C# u otro lenguaje se puede añadir cuando la medición muestre un beneficio real y la misma suite de conformidad pase.
Los ejemplos ejecutables cubren una tarea de sistema de solo lectura, una escritura de archivo verificada, una verificación de terminal, inspección de navegador, memoria con alcance, descubrimiento de capacidades de computadora, una llamada API gobernada, verificación independiente y un flujo de trabajo seguro ante reinicios.
Documentación
Contribución
Código, adaptadores, integraciones de clientes, harnesses de benchmarks, predicados de verificación, documentación y análisis de amenazas son todos bienvenidos.
| Comienza aquí | Qué es |
|---|---|
| good first issue | Acotado, con los archivos a tocar nombrados en el issue |
| help wanted | Más grande, pero bien definido |
| Guía de contribución | Cómo encaja el pipeline y qué archivos toca un cambio |
- Lee CONTRIBUTING.md y el Código de Conducta.
- Firma tus commits bajo el DCO (
git commit -s). - Ejecuta
pnpm checkantes de abrir una solicitud de extracción; también verifica enlaces, la tabla de variables de entorno y la forma del CHANGELOG. - Reporta vulnerabilidades a través de informe de vulnerabilidades privado, nunca en un issue público.
Licencia
El software y la documentación están licenciados bajo la Apache License 2.0. El logotipo oficial y las ilustraciones principales están licenciados bajo CC BY-ND 4.0. Los conjuntos de datos de benchmarks de terceros mantienen sus propias licencias y no se incluyen en este repositorio.
Construido en abierto por XAGI Labs.
Activos de marca MELRA © XAGI Labs Private Limited, licenciados CC BY-ND 4.0.