← Presentaciones · ARVANTTI LABS

Arvantti Harness® · Arquitectura para desarrolladores

Arvantti Harness® para equipos técnicos: adapters para cada harness de IA, la CLI como contrato, terminales reales, tres cerebros, guardianes, loops de agentes, receipts y conectores.

17 diapositivas · Equipos técnicos

En modo presentación: flechas o clic para avanzar, N notas, F pantalla completa, Esc salir.

01 / 17 · Portada
Logo Arvantti Labs: Engineering Intelligent Futures

Arvantti Harness®

Arquitectura para desarrolladores:
un arnés de arneses para tus agentes de código

Una marca de

Logo Sequoia Space
Notas del presentador

Bienvenida. Esta es una versión técnica de Arvantti Harness®, pensada para equipos de desarrollo. Vamos a ver la arquitectura real del repositorio arv-harness: el Core en TypeScript, la CLI como frontera estable, los adapters, las terminales con node-pty y xterm, el Brain sobre SQLite + sqlite-vec y la Shell de escritorio en Electron. Arvantti Harness® es marca registrada de Arvantti Labs, una marca de Sequoia Space.

02 / 17 · El problema y la propuesta: un arnés de arneses

El problema

Lo que se rompe al escalar agentes

01

Contexto O(n²)

Cada turno reenvía prompt, tools, skills e historial completo. El costo acumulado crece de forma cuadrática.

02

Caché roto

Activar o quitar una tool o un MCP cambia el prefijo: todo el historial se reprocesa a precio completo.

03

Contaminación

Agentes que comparten contexto, archivos y checkout se pisan entre sí y arrastran ruido ajeno.

04

Sin auditoría

Qué agente hizo qué, con qué permiso y sobre qué ruta queda perdido en el scrollback.

Regla de oro del caché: lo estable va arriba; lo volátil, al final.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

2

Notas del presentador

Cuatro dolores concretos. 1) Los modelos no guardan estado entre turnos: el harness reenvía system prompt, definiciones de tools y MCP, metadatos de skills, CLAUDE.md/AGENTS.md y todo el historial; el costo acumulado de una sesión crece O(n²). 2) El prompt caching funciona por prefijo idéntico byte a byte (orden: tools → system → mensajes). Agregar o quitar tools, cambiar de modelo o de agente, o compactar, rompe el prefijo y se reprocesa todo lo posterior. Añadir contenido al final no lo rompe. 3) Subagentes y sesiones que comparten contexto o checkout se contaminan. 4) Sin un control plane común no hay registro de quién hizo qué. Fuente: ADR-0002 y ADR-0003 (contexto/caché) y la nota de diseño exploratoria ARVANTI-resumen-completo.md, que no es canónica.

03 / 17 · El problema y la propuesta: un arnés de arneses

Qué es Arvantti Harness®

Un arnés de arneses

TUS HARNESSES

Claude Code

Antigravity

GPT Codex

OpenCode

Kimi

Pi

Gemini

Microsoft Copilot

Modelos locales

Adapters delgados

Traducen y delegan en la CLI. Sin lógica de negocio.

Arvantti Harness® Core

arvantti <cmd>

Policy

Qué se permite

Grants

Permisos por sesión

Tasks

Trabajo trazable

Receipts

Evidencia NDJSON

Brain

Contexto y memoria

Guardianes

Rutas y secretos

TU ENTORNO

Repositorios

Terminales reales

Conectores

Archivos y docs

No reemplaza a tu agente: lo envuelve. Cada harness conserva sus subagentes y tools nativas; todos comparten un solo Core.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

3

Notas del presentador

Así funciona el arnés de arneses. A la izquierda, los harnesses o CLIs de código con IA que ya usa tu equipo: Claude Code, Antigravity, GPT Codex, OpenCode, Kimi, Pi, Gemini, Microsoft Copilot o modelos locales. Cada uno se conecta mediante un adapter delgado, que traduce sus acciones y delega en la CLI estable de Arvantti; el adapter no tiene lógica de negocio ni es fuente de verdad de capacidades (ADR-0001). En el centro está el Core de Arvantti Harness®, común para todos: policy (qué se permite), grants (permisos por sesión), tasks (trabajo trazable), receipts (evidencia en NDJSON), brain (contexto y memoria) y guardianes de rutas y secretos. El Core opera sobre tu entorno: repositorios, terminales reales (PTY, pseudo-terminales), conectores y archivos. Arvantti no inhabilita los subagentes, tools ni flujos nativos de cada harness (ADR-0003): los envuelve con un mismo control plane.

04 / 17 · Arquitectura: capas, CLI estable y contexto

Arquitectura

Cinco capas y una sola autoridad

01 · Hosts

Electron Desktop

TUI

Pi /arvantti

Tu shell

02 · CLI estable

arvantti …

--json

salida determinista

03 · Core

Policy y grants

Guardianes

Tasks y receipts

Work intake

Puertos Brain

04 · Adapters

Pi

Claude Code

Antigravity

GPT Codex

OpenCode

Kimi

terminal

brain

obsidian-vault

local-store

05 · Ejecución

Terminal real · PTY

Worktrees

Procesos foreground

Capa cloud · Gobierno

Cloudflare

Gobierno y conocimiento compartido: Brain, SDD y memoria común.

Nunca ejecuta terminales ni procesos.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

4

Notas del presentador

Lectura de arriba hacia abajo: una petición entra por un host (Electron Desktop, la TUI, el adapter Pi con /arvantti o tu propia shell), cruza la CLI estable (bin/arvantti.mjs → src/cli: parseCliArgs, executeCli, formatCliResult) y llega al Core (src/core: project-policy, guardians, grant-document, task-contract, task-receipt, work-intake, session-assignments, brain-repository, context-measurement…). El Core no hace I/O ni contiene un loop LLM: los adapters (src/adapters: pi, terminal con node-pty y buffer ANSI, brain con sqlite-vec, obsidian-vault para SDD, local-store en .arvantti/, transcript, process) hacen el trabajo con efecto. Hay un adapter por cada harness de código con IA (Pi, Claude Code, Antigravity, GPT Codex, OpenCode, Kimi), siempre delgado y delegando en la CLI. La capa de ejecución son PTYs reales (pseudo-terminales: consolas reales creadas por programa, con node-pty), worktrees autorizados y procesos foreground. Desktop, TUI y CLI no son autoridades de permisos; la policy se revalida en la frontera del efecto. Cloudflare (ADR-0010, hito H16) será gestión, gobernanza y conocimiento compartido, nunca host de ejecución.

05 / 17 · Arquitectura: capas, CLI estable y contexto

ADR-0002 · Frontera estable

La CLI es el contrato

# ¿cuánto planear?

$ arvantti plan assess "Migrar auth" --steps=5

# crear el SDD sólo si tú lo eliges

$ arvantti sdd create --level=lite \

    --id=ARV-SDD-0042 auth "Migrar auth"

$ arvantti task link T-12 ARV-SDD-0042 <ruta>

$ arvantti sdd inspect <bundle> --json

$ arvantti pull skill <id> <revision>

Preferimos CLI sobre MCP.

Una sola tool estable que todos los harnesses tienen: bash.

Salida humana o JSON determinista. La policy se revalida en la frontera del efecto.

Un MCP suma tools al prefijo y rompe el caché al activarse; la CLI entra por bash, paginada y auditable.

help · version · catalog · pull · policy · task · flow · plan · sdd · shell · tui

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

5

Notas del presentador

Preferimos CLI sobre MCP: cada servidor MCP agrega definiciones de tools al prefijo del contexto, lo infla y rompe el caché al activarlo o quitarlo; la CLI se invoca por bash, que todos los harnesses ya tienen, y devuelve salida paginada, redactada y auditable. ADR-0002: la CLI es la frontera estable para humanos, agentes y adapters. Evita registrar una tool nativa por cada integración (lo que inflaría el prefijo y rompería el caché) y obliga a respuestas paginadas, redactadas y aptas para entrar al final del contexto. Los 11 comandos que existen hoy están en src/cli/command.ts: help, version, catalog, pull, policy, task, flow, plan, sdd, shell y tui; --json cambia el formato de salida. Sintaxis real: plan assess <summary> [--steps=N] [--reversible] [--external-effect] [--sensitive] [--architecture] [--uncertain] [--multi-actor] [--force=direct|task|sdd-lite|sdd-full]; sdd create --level=lite|full --id=ARV-SDD-#### <slug> <title>; sdd inspect <bundle>; task <create|claim|complete> <task-id> [title]; task link <task-id> <sdd-id> <sdd-path>; pull <profile|skill|flow|integration> <id> <revision> (requiere ARVANTTI_SUBJECT_ID); policy <shared|local> <path>; flow code-review <revision>. Los IDs del ejemplo (T-12, ARV-SDD-0042) son ilustrativos. Ojo: comandos como "arvantti brain search" o "arvantti skill show" aparecen en ADR-0002 como ejemplos futuros y aún no existen. Riesgo asumido: bash no es sandbox; la CLI valida argumentos, rutas y scopes.

06 / 17 · Arquitectura: capas, CLI estable y contexto

Ingeniería de contexto

Cuidar el prefijo, cargar a demanda

01

Prefijo estable

Las tools y MCP nativos se fijan al iniciar la sesión.

02

Punteros lazy

Catálogo compacto; el cuerpo entra con pull.

03

Inyectar al final

Lo volátil llega como mensaje: el caché queda intacto.

04

bash + CLI

Una tool para todo; nada de una tool por integración.

Como desarrollador, quiero un presupuesto de contexto explícito (.arvantti/context-budget.json) para que, si algo no cabe, se rechace en lugar de truncarse en silencio.

Historia de usuario ARV-US-0010 (catálogo y pull con presupuesto) · ADR-0002 y ADR-0003.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

6

Notas del presentador

Aviso: el marco de esta diapositiva viene de la nota exploratoria ARVANTI-resumen-completo.md, que NO es canónica; lo canónico es ADR-0002, ADR-0003 y el subplan de arquitectura agéntica. 01 Prefijo estable: ADR-0003 fija el perfil nativo de tools/MCP al inicio de sesión; cambiarlo en vivo es excepción explícita con impacto de caché documentado. Las asignaciones por sesión están implementadas; medir caché con Pi real sigue pendiente (H2/H3), por eso Parcial. 02 Punteros lazy: diseño de tres niveles catálogo → flujo → instrucciones por agente; mantener la cadena plana (2 niveles es robusto). Implementado: arvantti catalog y arvantti pull con assignments y receipts (ARV-US-0010). 03 Inyectar al final: pull por CLI implementado; el modo context-push existe como tipo de asignación pero el flujo normal es pull por check-in, sin inyectar trabajo en una sesión activa. 04 bash + CLI: el adapter Pi delega en la CLI (ARV-US-0008). Presupuesto: context-budget.json declara maxItems, maxCharacters, maxTokens opcional (heurística ceil(bytes UTF-8 / 4), no tokenizer real) y la política de overflow paginate/summarize/reject; el pull local rechaza contenido que excede en lugar de truncarlo.

07 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Multisesión y terminales

Una terminal por agente

¿Terminal nueva o subagente?

1

¿Toca archivos de otro agente? Terminal + worktree propio

2

¿Necesita otro harness? Terminal nueva

3

¿Paralelo real? Terminales separadas

4

Si no: tarea sustancial → terminal; ligera → subagente

Ejecución real

¿Qué es un PTY? Una pseudo-terminal: la misma consola que usas a diario, creada por Arvantti para cada agente. El agente trabaja en una terminal real y Arvantti ve lo que entra y sale.

Terminal real (PTY) con node-pty y @xterm/headless

Grupos proyecto → worktree → sesión, persistidos

Desktop: pestañas y paneles divididos, cada uno con su terminal real

Coordinación multiagente: cada agente en su terminal, con tareas y receipts compartidos.

Room de concilio: los agentes contrastan propuestas y concilian una decisión antes de actuar.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

7

Notas del presentador

Además hay coordinación multiagente: cada agente trabaja en su terminal y comparten tareas y receipts. Y un Room de concilio, un espacio donde los agentes contrastan sus propuestas y concilian una decisión antes de actuar, con la persona como árbitro final. Cada agente en su propia terminal/sesión, con su contexto y, si escribe código, su propio worktree: así no se contaminan. El árbol de decisión viene de la nota exploratoria (no canónica): evaluar en orden y detenerse en la primera respuesta decisiva; prioridad corrección (1–2) > capacidad (3) > optimización (4). Dato de pruebas del autor en esa nota: Pi arranca con ~800–1.000 tokens de entrada y Claude Code con ~20.000, así que con arneses livianos abrir terminales separadas es barato. PTY (pseudo-terminal) quiere decir una terminal real creada por programa: el agente cree estar en una consola normal y Arvantti puede ver lo que entra y sale. PTY embebido local con node-pty, buffer ANSI con @xterm/headless, tabs, menú contextual y restauración estructural en la TUI (ARV-SDD-0024); grupos jerárquicos y bindings persistidos en .arvantti/terminal-workspace.json; al restaurar, las sesiones aparecen como unknown y nunca se relanzan solas (ARV-US-0016). La terminal es libre: no exige policy ni grants y NO es sandbox; Arvantti no controla un pi o claude que tú lances ahí. Desktop Electron tiene PTY real, tabs múltiples, splits recursivos y reattach tras recargar el renderer. Worktrees: el Core tiene contrato de binding; crear el primer worktree o rama requiere autorización humana explícita (ADR-0004). El Canvas de relaciones entre sesiones (ARV-SDD-0025) está planificado.

08 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Brain · ADR-0005

Memoria con procedencia

CONOCIMIENTO

Fuente

Revisión

Documento

Chunk

Vector

AFIRMACIONES

Entidad

Relación / Claim

Evidencia

DECISIONES

Actor

Decisión

Evidencia

Los agentes nunca tocan la base: consultan por puertos y CLI.

SQLite nueva + sqlite-vec

  • FTS5 con consulta acotada
  • Redacción antes de persistir
  • Snapshot con VACUUM INTO
  • Dimensión vectorial explícita

VENTAJAS

  • Local, en nube local o en tu nube privada empresarial: los datos no salen
  • Un solo archivo, sin servidor que operar
  • Texto y vectores en la misma base
  • Respaldos y copias triviales

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

8

Notas del presentador

Ventajas de esta arquitectura: es privada y puede vivir en el equipo, en una nube local o en la nube privada de la empresa, sin que los datos salgan de ese entorno; es un solo archivo, sin un servidor de base de datos que operar; guarda texto (FTS5) y vectores (sqlite-vec) en la misma base, así que la búsqueda híbrida no exige sincronizar dos sistemas; y los respaldos son triviales con VACUUM INTO. Además, como el dominio va por puertos, se puede proyectar a la nube sin cambiar a los agentes. El cerebro empresarial es memoria en grafo: qué se sabe, qué se decidió y qué ocurrió, siempre con procedencia y temporalidad. Modelo lógico (architecture/brain-data-model.md): Project, Knowledge source y revision (procedencia y digest), Document y chunk, Brain snapshot (separado de commit y dirty delta), Entity, Claim y Relation (con confianza y vigencia), Evidence (locator seguro + digest), Decision (qué, quién y con qué evidencia), Actor, Embedding profile y Vector reference. ADR-0005 (aceptado): SQLite nueva + sqlite-vec local para Brain V1; se descartan PostgreSQL y Neo4j por coste operativo prematuro y el híbrido por complejidad de sincronización. sqlite-vec sirve sólo al índice vectorial detrás de VectorIndexPort; el dominio va por BrainRepositoryPort y BrainQueryPort. node:sqlite es experimental en Node 22. Cloudflare D1/Vectorize serían una proyección Cloud futura, no la fuente de verdad. Estado ARV-US-0012: parcial. Las tareas viven en la capability Tasks (implementada) y las decisiones pendientes como entidad Brain están en el modelo, aún sin CLI de consulta. Comandos como "arvantti brain search" son diseño futuro, no existen todavía.

09 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Tres cerebros

La IA conoce tu proyecto, tus decisiones y tu código

BRAIN DE PROYECTO

Memoria del proyecto

SDDTareasDocsContextoProyecto

Cada agente arranca sabiendo dónde está el trabajo.

GRAPH BRAIN

Grafo de decisiones

QuiénCuándoEvidenciaD1D2D3?pendiente

Quién decidió qué, cuándo y con qué evidencia.

UNDERSTANDING REPO

Grafo de código

apicoredatos

Módulos, funciones y dependencias de un vistazo.

El agente consulta el mapa en vez de recorrer el repo: menos tokens, menos errores y mejores cambios.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

9

Notas del presentador

Arvantti Harness® le da a la IA tres cerebros. Uno, el brain de proyecto: la memoria del proyecto, con sus SDD, tareas, documentos y contexto, para que cada agente arranque sabiendo dónde está el trabajo. Dos, el graph brain de decisiones: un grafo de quién decidió qué, cuándo y con qué evidencia, incluidas las decisiones pendientes. Tres, understanding repo: un grafo de código con el mapa de funciones, módulos y dependencias del repositorio, para que la IA entienda el código de una pasada. En lugar de leer archivo por archivo, el agente consulta el mapa: gasta menos tokens, se equivoca menos y propone mejores cambios. Todo vive en el Brain local, con procedencia, y los agentes lo consultan por puertos y CLI.

10 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Work intake y SDD

Planear lo justo, ni más ni menos

Directo

Un paso y reversible.

Task

Rastreable sin SDD. Es el valor por defecto.

SDD Lite

4+ pasos, incertidumbre, varios actores o efecto sensible.

SDD completo

Arquitectura, 8+ pasos o 3+ señales de riesgo. Sugiere ADR.

$ arvantti plan assess "Nuevo bus de eventos" --architecture --json

→ "recommendedMethod": "sdd-full", "recommendsAdr": true

La recomendación es consultiva: decides tú con --force. SDD completo = nota primaria + 7 fases.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

10

Notas del presentador

Work Intake / SDD Resolver (src/core/work-intake.ts, ARV-US-0003) recomienda uno de cuatro métodos a partir de señales explícitas y neutrales al harness. Reglas reales: SDD completo si hay decisión de arquitectura, 8 o más pasos, o 3 o más señales entre efecto externo, sensibilidad de seguridad, incertidumbre material y múltiples actores; además recommendsAdr. SDD Lite si hay incertidumbre, varios actores, efecto externo o sensible, o 4 o más pasos. Directo sólo si es exactamente un paso y --reversible. Si no, Task. La recomendación nunca crea una Task ni un SDD, no concede permisos y no sustituye la policy; --force=direct|task|sdd-lite|sdd-full registra tu elección. Después, la creación es explícita: arvantti sdd create --level=lite|full --id=ARV-SDD-#### <slug> <title> (ARV-US-0013 y 0014). El SDD completo es una nota primaria más siete fases: brief, spec, design, tasks, execution, verify y closing. arvantti sdd inspect <bundle> detecta drift de IDs y lifecycle sin escribir Markdown, y arvantti task link conserva a Task como autoridad. Todo es Markdown Obsidian-native: frontmatter YAML, wikilinks y carpetas normales. El flujo Task ↔ SDD con receipts se verificó end-to-end (ARV-SDD-0017).

11 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Policy, grants y guardianes

Denegar por defecto

01

Ruta segura

Relativa al proyecto y sin traversal, antes de cualquier I/O.

02

Policy

Compartida + local. Lo local sólo restringe.

03

Grant

Sujeto, recurso y operación. Revocable.

04

Redacción

Secretos fuera de transcript, receipts y logs.

filesystem-read · filesystem-write · filesystem-delete · process-execute · catalog-pull · dependency-install

Bash no es sandbox: la autorización se revalida en la frontera de cada efecto.

Historia de usuario: como responsable de seguridad, quiero que si un agente intenta leer o cambiar una API key, el guardián lo bloquee y pida mi autorización, y que toda key que aparezca en la salida quede como [REDACTED], para que ningún secreto termine en transcripts, receipts ni logs.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

11

Notas del presentador

Historia de usuario de keys: si un agente intenta leer, mostrar o cambiar una API key (por ejemplo en un archivo .env), la ruta y la operación pasan por el guardián; los secretos requieren autorización humana explícita (ADR-0004), y cualquier valor con forma de secreto que aparezca en la salida se reemplaza por [REDACTED] antes de llegar a transcripts, receipts o logs. Cadena real de autorización (src/core/guardians.ts y project-policy.ts). 01 authorizeProjectPath normaliza léxicamente la ruta: debe ser relativa al proyecto y sin traversal; sólo después se evalúa policy, y el llamador sólo abre la ruta tras un allow. 02 Policy compartida (.arvantti/policy.shared.json) más override local restrictivo (policy.local.json); un override local nunca elimina restricciones. 03 Grants en .arvantti/grants.json: vinculan sujeto, proyecto, recurso y operación, y se revocan; en V1 no caducan solos. Las operaciones con efecto (EffectOperation) son las seis de la línea en monoespaciado. 04 redactOutput sanea recursivamente la salida antes de transcript, receipts o logs: literales configurados y asignaciones con forma de secreto se sustituyen por [REDACTED]; es defensa de salida, no autoriza leer un secreto. Parcial porque falta la conexión persistente completa a Room/log (ARV-US-0007). Hay además un dependency guardian para pnpm. ADR-0004: continuous safe permite editar, stage y commit dentro de una tarea y un worktree ya autorizados; la primera rama o worktree, merge, push, PR, borrados, secretos, red o MCP externo, deploy y publicación requieren autorización humana explícita.

12 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Loops de agentes

Agentes que construyen y agentes que vigilan

LOOP DE DESARROLLO

Planea con SDD

Implementa

Prueba

Revisa y corrige

LOOP DE SEGURIDAD

Vigila archivos y salidas

Detecta keys y datos sensibles

Bloquea la lectura de .env

Redacta y avisa

Mientras unos agentes programan, otros vigilan: ninguna key ni dato sensible se escapa, y la IA no lee tu .env.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

12

Notas del presentador

Arvantti Harness® trabaja con loops de agentes. El loop de desarrollo planea con SDD, implementa, prueba y revisa, y vuelve a empezar hasta cerrar la tarea. En paralelo corre el loop de seguridad: agentes que vigilan archivos y salidas, detectan keys y datos sensibles, bloquean la lectura de archivos .env y otros secretos, y redactan la salida y avisan a una persona cuando algo intenta salirse. Así, mientras unos agentes construyen, otros cuidan que ninguna key ni dato sensible se escape. Los loops se apoyan en los guardianes, la policy y los grants de la diapositiva anterior.

13 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Receipts y trazabilidad

Cada efecto deja evidencia

{ "schemaVersion": 1,

  "receiptId": "<uuid-v7>",

  "taskId": "T-12",

  "actorId": "<sujeto>",

  "action": "linked",

  "recordedAt": "<ISO-8601>" }

Forma de un task receipt (NDJSON). Valores ilustrativos.

Tasks: created, claimed, completed, linked

Pull: delivered o rejected por sesión

Auditoría CLI fuera de Git

Pensada para apoyar un sistema de gestión de IA alineado con ISO/IEC 42001. No es una certificación.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

13

Notas del presentador

Los receipts son registros append-only, independientes del TODO de cada harness. TaskReceipt (src/core/task-receipt.ts): schemaVersion, receiptId, taskId, projectId, actorId, action (created | claimed | completed | linked), status y recordedAt; se persisten como NDJSON en el local-store. PullReceipt (pull-receipt.ts): receiptId, assignmentId, sessionId, target (id y revisión), deliveredAt, outcome delivered | rejected y summary. Los IDs técnicos son UUID v7 estables, independientes de rutas y títulos. También existe un receipt de transcript redactado y observaciones de contexto; su persistencia completa sigue en curso (ARV-SDD-0007 en ejecución). En roadmap (ARV-US-0025): una CLI de auditoría liviana, append-only y filtrable para cambios que Git no cubre (SDD, Design MD, decisiones Brain, configuración agéntica), con modelo declarado, reportado o unknown; fallar un log advierte sin bloquear, y nunca se afirma un receipt que no sea durable. Sobre ISO/IEC 42001: decirlo con cuidado. La trazabilidad está pensada para apoyar prácticas de gestión de IA alineadas con la norma; Arvantti no está certificado ni certifica a nadie.

14 / 17 · Capacidades: terminales, cerebros, planificación, guardianes, loops de agentes, receipts y conectores

Conectores y MCP

MCP a través de Arvantti

CasoCómo entraCaché
MCP nativo en el harnessTools en el prefijoSe reprocesa al activar y al quitar
MCP vía ArvanttiMensaje + CLI por bashIntacto
Skill con punteroEl agente la pide por CLIIntacto

Preferimos CLI, pero también tenemos una capa MCP nativa para los clientes y harnesses que la necesitan, con la misma policy, grants y registro.

Credenciales

Viven en Arvantti, nunca en el agente.

Gate humano

Red y MCP externos piden consentimiento.

Registro

Cada llamada deja evidencia.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

14

Notas del presentador

Aunque preferimos CLI, Arvantti también tiene una capa MCP nativa: los clientes y harnesses que trabajan con MCP pueden conectarse directamente, siempre detrás de la misma policy, los mismos grants y el mismo registro. La tabla viene de la nota exploratoria (no canónica), escenario Zoho: si activas un MCP nativo a mitad de sesión, sus tools entran al prefijo y el historial se reprocesa al activar y otra vez al desactivar. Si Arvantti conecta el MCP, envía la lista de comandos como mensaje y el agente los usa por bash a través de la CLI: el caché queda intacto; al desactivarlo, Arvantti deja de aceptar esos comandos y avisa. Bonus: las credenciales viven en Arvantti y cada llamada queda registrada. Lo canónico (master plan §11 y subplan agéntico): MCP es integración/adaptador, no núcleo de orquestación; la decisión es CLI-first local y MCP queda limitado a proveedores externos futuros, detrás de adapter, policy y consentimiento; red/MCP externo es siempre human gate. Hitos: H10 (Code Intelligence, LSP y MCP local acotado) y A8 del subplan agéntico (paquetes opcionales/MCP/servicios externos con ADR, threat model, consentimiento, coste y rollback por integración).

15 / 17 · Hosts y decisiones de arquitectura

Shell y hosts · ADR-0011

Desktop primero, CLI siempre

Electron Desktop

PTY en el main process. Tabs, splits, Sessions y Projects.

TUI

Cliente ligero para SSH y headless.

Adapters

Pi, Claude Code, Antigravity, GPT Codex, OpenCode y Kimi delegan en la CLI local.

Cloudflare Web

Gobierno y Brain compartido. Sin terminal.

PTY = pseudo-terminal: una consola real que Arvantti crea y observa para cada agente.

Terminal real obligatoria (ADR-0008): nada de PTY simulado.

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

15

Notas del presentador

Los adapters conectan cada harness de código con IA (Pi, Claude Code, Antigravity, GPT Codex, OpenCode y Kimi) y delegan en la CLI local de Arvantti. Historia de la decisión: ADR-0006 proponía una Web Shell local-first como interfaz principal y la TUI como secundaria; ADR-0007 y ADR-0009 la acompañaban. Las tres quedaron sustituidas por ADR-0011: Electron Desktop es la primera Shell gráfica y la Web queda para Cloudflare, sin terminal. Desktop (apps/desktop, Electron 45 + xterm 6, preview de desarrollo, ARV-SDD-0037/0038): el PTY y los efectos privilegiados viven en el main process; el preload es mínimo y el IPC se autoriza por sender, frame y origen. Hay CSP verificada, control de flujo con ACK y watermarks (ráfagas de 270 KB y 1 MB en pruebas E2E), cierre con confirmación agregada, reattach tras recargar el renderer y un soak de 5 minutos. Tras relanzar la app se restauran metadatos y layout, nunca procesos. No hay instalador, firma ni updater. TUI: arvantti tui y arvantti shell; quedan pendientes streaming, permisos, resize y cancelación end-to-end. La lógica compartida no se duplica por plataforma. ADR-0008: toda Shell funcional debe tener un PTY real; los mocks sólo valen para diseño o tests aislados.

16 / 17 · Hosts y decisiones de arquitectura

Decisiones de arquitectura

Los ADR que importan

Cada harness es un adapter, no el Core: Pi, Claude Code, Antigravity, GPT Codex, OpenCode, Kimi

La CLI es la frontera estable para harnesses

Preservar harnesses; asignaciones por sesión

Autonomía ligera en worktrees autorizados

Brain en SQLite nueva + sqlite-vec

Terminal real (PTY) obligatoria en la Shell

Cloudflare gobierna; no ejecuta

Electron Desktop como primera Shell

Multiplataforma con adapters pequeños

ARVANTTI LABS · UNA MARCA DE SEQUOIA SPACE

16

Notas del presentador

ADR-0001: cada harness entra como adapter delgado (Pi, Claude Code, Antigravity, GPT Codex, OpenCode, Kimi), nunca como Core ni como fuente de verdad de capacidades o policy. Los ADR viven en el vault de documentación (Arvantti-Harness/adr). 0004: continuous safe dentro de tarea, worktree y rama ya autorizados; la primera creación de worktree o rama, merge, push y acciones destructivas requieren autorización. 0005: SQLite + sqlite-vec para Brain V1, con D1/Vectorize como proyección Cloud futura. 0008: una Shell gráfica sin PTY real no es entregable. 0010: Cloudflare es gestión, gobernanza y conocimiento compartido, nunca host de terminales, PTYs ni comandos. 0011: Electron Desktop primero; no se construye ahora una Web Shell local con Connector. 0012: nada de forks por sistema operativo, sólo adapters pequeños con contrato común.

17 / 17 · Contacto

Construyamos juntos

¿Qué agentes quieres poner bajo control primero?

Pide una demo técnica o propón un adapter para tu harness.

Andrés Quiceno

CTO de Ingeniería

[email protected]

Mascota satélite de Arvantti celebrando Logo Arvantti Labs

Una marca de

Logo Sequoia Space
Notas del presentador

Cierre para equipos técnicos: invitamos a una demo de la CLI, de la TUI y de la preview Desktop, o a proponer un adapter para el harness que use tu equipo. Contacto: Andrés Quiceno, CTO de Ingeniería, [email protected]. Web: arvantti.tech. LinkedIn: Arvantti Labs y Sequoia Space Latam. Arvantti Harness® es marca registrada de Arvantti Labs, una marca de Sequoia Space.