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 logo

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.


CI status CodeQL status Dependency audit status Container build status

Latest release @melra/cli on npm Apache-2.0 license 52 of 52 deterministic evaluation scenarios passing Telemetry off

macOS Linux Windows Node.js 22 and 24 Python 3.11 to 3.14 Hardened Docker image



Funciona con   Claude Code Claude Desktop OpenAI Codex Cursor VS Code Gemini CLI Zed Windsurf OpenClaw Hermes Agent GitHub Copilot CLI and any MCP client



Inicio rápido  ·  Cómo funciona  ·  Ver qué está haciendo  ·  Documentación  ·  Discusiones


MELRA governed execution flow

[!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:

Where MELRA sits: the model reasons, your agent runs the loop, MELRA owns every effect, and effect adapters do the work on your systems.

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ómoComando
Un cliente, sin preguntasnpx @melra/cli@alpha setup --client cursor --write
Imprimir la configuración en lugar de escribirlanpx @melra/cli@alpha setup --client codex
Instalar globalmentenpm install -g @melra/cli@alpha && melra setup
Contenedor (sin necesidad de Node)docker run --rm ghcr.io/xagi-lab/melra:alpha doctor
Versión precompiladadescarga desde releases, verifica contra SHA256SUMS, luego node melra/dist/bin.js doctor
Desde el código fuentegit 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 instalastenpm 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 melra y el paquete PyPI melra son proyectos de terceros no relacionados. Este proyecto publica solo bajo el ámbito npm @melra/: @melra/cli es 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--clientConfiguración que escribe
Claude Codeclaude-code<project>/.mcp.json
Claude Desktopclaude-desktopclaude_desktop_config.json
OpenAI Codex CLIcodex~/.codex/config.toml
Cursorcursor~/.cursor/mcp.json
🟦 VS Code (modo agente Copilot)vscode<project>/.vscode/mcp.json
Gemini CLIgemini~/.gemini/settings.json
Windsurfwindsurf~/.codeium/windsurf/mcp_config.json
ZedzedZed settings.json (comentarios conservados)
🧩 ClineclineCline's cline_mcp_settings.json
⬛ OpenCodeopencode~/.config/opencode/opencode.json
👻 Kirokiro~/.kiro/settings/mcp.json
🪿 Goosegoose~/.config/goose/config.yaml
▶️ Continuecontinue<project>/.continue/mcpServers/melra.yaml
⚡ Ampamp~/.config/amp/settings.json
🦞 OpenClawopenclaw~/.openclaw/openclaw.json (mcp.servers)
⚕️ Hermes Agent (Nous Research)hermes~/.hermes/config.yaml (mcp_servers)
GitHub Copilot CLIcopilot~/.copilot/mcp-config.json
🐉 Qwen Codeqwen~/.qwen/settings.json
🅰️ Auggie (Augment)auggie~/.augment/settings.json
Warpwarp~/.warp/.mcp.json
Junie (JetBrains)junie~/.junie/mcp/mcp.json
🤖 Factory Droiddroid~/.factory/mcp.json
🌙 Kimi Codekimi~/.kimi-code/mcp.json
🪁 Kilo Codekilo~/.config/kilo/kilo.jsonc (comentarios conservados)
🧪 LM Studiolmstudio~/.lmstudio/mcp.json
🔌 Cualquier otra cosagenericimprime 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:

The nine stages: melra_plan types, classifies, authorises, issues an approval challenge and records the task; melra_execute checks policy again, deduplicates, runs under a budget, verifies evidence and writes a receipt.

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:

EstadoSignificadoSiguiente paso
🟢 verified_successSe ejecutó y cada verificación declarada pasóHecho
🟡 partialSe ejecutó, pero la evidencia no se cumplióMira la evidencia, luego decide
🔴 policy_blockedRechazado antes de que se ejecutara algoLee el motivo; la misma solicitud será rechazada de nuevo
🔵 awaiting_approvalUn cambio está esperando tu frase exactaApruébalo desde el agente que lo planificó
🟣 recovery_requiredUn cambio puede o no haber sucedidoVerifica el mundo primero; nunca vuelvas a ejecutar a ciegas
⚪ failed · cancelled · budget_exhaustedNo 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

$ melra status
MELRA 0.3.0-alpha.12  developer mode
  Tasks       3 total: 1 awaiting_approval,
              1 policy_blocked, 1 verified_success
  Waiting     1 waiting for approval
  HTTP        127.0.0.1:7457 not running

$ melra tasks
ID        STATUS             OPERATION     UPDATED
64199678  awaiting_approval  file.write    0s ago
ca4aec7a  policy_blocked     terminal.run  1s ago
a1285e0f  verified_success   system.info   1s ago

$ melra watch          # live, until Ctrl-C
6:07:21 PM  task 882cf55c  verified_success
6:07:22 PM  task f813364c  awaiting_approval

melra doctor verifica Node, SQLite, el navegador y la política, e informa cuáles de tus aplicaciones de agente apuntan a MELRA, con el único comando que corrige cualquier problema.

En el navegador: melra serve --http --open

The MELRA console's Tasks view: a filterable list of tasks with status badges, and one task's policy decision, evidence and certificate.

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:

ModoSignificado
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.
enforcedAfirmas 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
  • La llamada a la herramienta se ejecuta inmediatamente
  • Éxito = no se lanzó ninguna excepción
  • Política, si la hay, verificada una vez
  • Los cambios se ven igual que las lecturas
  • La salida es confiable
  • Sin registro duradero
  • Las reglas viven dentro de un agente
  • Planificar y ejecutar son llamadas separadas
  • Éxito = evidencia declarada pasada
  • Política verificada de nuevo en el momento de la ejecución
  • Los cambios requieren evidencia y una aprobación exacta
  • El contenido de la página es explícitamente no confiable
  • Recibo redactado + certificado de ejecución SHA-256
  • Las reglas sobreviven al agente que las usó

Junto a las dos capas con las que se confunde más a menudo:

Arnés de agenteServidor MCPMELRA
Bucle de modelo y razonamiento✓✗✗
Herramientas✓✓vía adaptadores
Política independiente del agenteusualmente ✗posiblenúcleo
Estado de efectos duraderoa vecesraramentenúcleo
Idempotencia entre reiniciosvaríararanúcleo
Recuperación de bloqueos sin reproducciónvaríararanúcleo
Verificación independientepoco comúnposiblenúcleo
Recibos de evidenciapoco comúnposiblenúcleo
Funciona entre agentes✗✓✓
Aislamiento de credencialesvaríavaríanúcleo
Límite de capacidad durovaríausualmente ✗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.

AdaptadorQué está implementado
🗂️ArchivosLectura confinada a la raíz, hash, escritura atómica, mover, mkdir y eliminar, con defensas contra fugas por enlaces simbólicos
💻TerminalProcesos 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
🌐NavegadorSesiones 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
🖥️ComputadoraDescubrimiento 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
📡HTTPGET/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 operativaUn 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.

HerramientaPropósito
melra_capabilitiesDescubrir operaciones, soporte de plataforma, límites y postura de política
melra_planValidar, persistir y verificar política de una operación limitada
melra_executeEjecutar un plan aprobado y verificar el resultado declarado
melra_task_statusLeer estado duradero de tareas
melra_task_cancelCancelar cooperativamente trabajo pendiente o en ejecución
melra_receiptRecuperar evidencia redactada y el certificado de ejecución
melra_workflow_planValidar, preverificar, cifrar y persistir un flujo de trabajo limitado
melra_workflow_advanceEjecutar una ola de programación lista
melra_workflow_statusLeer la proyección duradera del flujo de trabajo
melra_workflow_cancelCancelar cooperativamente trabajo de flujo de trabajo no terminal
melra_workflow_controlPausar, 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.12Evidencia
Flujos de trabajo limitados seguros ante reinicios en nueve tipos de nodosUn proceso MCP real se detiene, se reemplaza y se reanuda en E2E
Cargas útiles cifradas exactas de tareas, flujos de trabajo y resultadosAlmacenamiento 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 mutaciones8/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 lecturaMismo 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 reciboRegistro 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 claseUna mutación cuya respuesta nunca llegó se informa como desconocida, no como fallida
Los agentes reciben capacidades, no credencialesEl 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 conoceFuerza execution / state / independent / semantic en cada elemento de evidencia
Verificación de canal independientehttp_resource_matches se ejecuta a través de POST y verifica a través de un GET separado
Tus propios tipos de evidenciaUn 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 agentesmelra 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 verificarmelra 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 autogeneradoGovBench: 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éResultadoQué significa
✅Evaluaciones de seguridad y ejecución52/52Polí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 duradero8/8100% de recuperación esperada, 0 ejecución duplicada, 0 éxito falso, 100% de consistencia de eventos
🛡️GovBench (autoral)312/312 seguridad, 50/50 utilidad362 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 LoCoMo0.7597 cobertura@201,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ético100/100 Recuerdo@1Regresión de hechos plantados sobre 1,000 registros
🌐Asentamiento de página estática183.7 ms p50 vs 301.3 ms39% menos espera con lecturas correctas idénticas 10/10
🌐Asentamiento de renderizado lento10/10 vs 0/10 correctosLa espera basada en condiciones ve el DOM final; una espera fija de 300 ms lee demasiado pronto
💻Terminal30/30 verificadoLanzamiento de procesos sin shell, 48.1 ms p50 en la máquina medida
🖥️Plano de control de computadora30/30 sondas0.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

Paquete
TypeScript@melra/sdk
Pythonmelra (tipado, 3.11–3.14)
📜 Contratos JSON@melra/protocol, @melra/receipt-schema

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

ObjetivoComando
Configuración guiadamelra setup
Verificar esta máquinamelra doctor
Servir (stdio / HTTP / socket)melra serve · --http --open · --socket <path>
Ver actividadmelra tasks · watch · status
Ejecutar una tareamelra run --request task.json
Aprobar una tarea que un agente planeómelra approve <task-id>
Inspeccionar un recibomelra inspect <task-id>
Probar una políticamelra policy test --request task.json
Verificar conformidadmelra conformance
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

📦 Instalación y configuración del cliente🧭 Capacidades y límites🏛️ Arquitectura
🔬 Investigación y benchmarks🔗 Compatibilidad✅ Evidencia de validación
🛡️ Modelo de amenazas🎖️ Niveles de conformidad🗺️ Hoja de ruta
📝 Registro de cambios🤝 Guía de contribución🔐 Política de seguridad

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 issueAcotado, con los archivos a tocar nombrados en el issue
help wantedMás grande, pero bien definido
Guía de contribuciónCómo encaja el pipeline y qué archivos toca un cambio
  1. Lee CONTRIBUTING.md y el Código de Conducta.
  2. Firma tus commits bajo el DCO (git commit -s).
  3. Ejecuta pnpm check antes de abrir una solicitud de extracción; también verifica enlaces, la tabla de variables de entorno y la forma del CHANGELOG.
  4. 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.