Emisar

Dale a tus agentes de IA acceso a producción sin los riesgos de compartir claves SSH.

Documentación

emisar

Mantén al agente trabajando. Mantén la autoridad de producción limitada.

emisar ofrece a los agentes con capacidad MCP un catálogo de acciones de infraestructura declaradas en lugar de un shell. La política decide qué se ejecuta, qué espera a una persona y qué se deniega. Un pequeño ejecutor solo de salida verifica la acción nuevamente en el host antes de ejecutar cualquier cosa.

Comienza con el catálogo público de packs y deja que emisar sugiera los packs que coinciden con un host. Añade tus propias acciones sin agregar otro servidor MCP a cada cliente.

Comienza con un host

Necesitas una cuenta de emisar, un host Linux con systemd, y sudo. GitHub CLI con gh attestation verify --bundle verifica la firma de la versión. Sin GitHub CLI, el instalador pregunta antes de continuar solo con la suma de verificación. Con --yes, advierte y continúa. Permite HTTPS saliente a emisar.dev:443, registry.emisar.dev:443, tuf-repo-cdn.sigstore.dev:443, y tuf-repo.github.com:443. Los dos últimos sirven las raíces de confianza públicas utilizadas para autenticar las sumas de verificación de las versiones. No se requiere inicio de sesión de GitHub.

GitHub es la alternativa opcional de descarga. Si deseas esa alternativa, también permite api.github.com:443, github.com:443, y release-assets.githubusercontent.com:443.

  1. En la consola, elige Conectar un ejecutor. Copia el comando generado; contiene una clave de inscripción nueva y de un solo uso.

  2. Ejecútalo en el host:

    curl -fsSL https://emisar.dev/install.sh \
      | sudo EMISAR_ENROLLMENT_KEY=emkey-enroll-... bash
    

    El instalador autentica la suma de verificación firmada de la versión y verifica el archivo contra ella. Luego crea el servicio, instala los packs iniciales coincidentes con el host e inicia el ejecutor.

  3. Confirma que el ejecutor esté en línea en la consola y luego envía linux.uptime con un motivo. Habrás terminado cuando aparezca la salida y la ejecución esté presente en el registro de auditoría.

  4. Abre Agentes de IA y conecta tu cliente. Los clientes MCP remotos usan OAuth; los clientes stdio locales pueden usar el puente emisar-mcp y su flujo de aprobación en el navegador.

El recorrido completo, incluida la salida esperada y la resolución de problemas, está en emisar.dev/docs/quickstart. Un agente puede realizar y certificar la configuración con la habilidad pública install-emisar.

Cómo se ejecuta una acción

AI client
    |  MCP: discover actions, request one with typed arguments
    v
emisar control plane
    |  authenticate, scope, apply policy, wait for approval when required
    v
outbound-only runner
    |  verify pack hash, validate arguments, enforce local limits
    v
declared host command
       stream redacted output, journal the attempt, update fleet audit

El pack de acciones define el contrato: el ejecutable, la forma de argv, el esquema de argumentos, el riesgo, el tiempo de espera, los límites de salida, la redacción y la descripción de efectos secundarios. El modelo selecciona de ese contrato; no inventa una línea de comandos para que el ejecutor la ejecute.

Agregar un pack añade capacidades detrás de la misma superficie MCP. Los operadores no necesitan implementar otro servidor de herramientas ni reconfigurar cada agente cuando el catálogo cambia.

Qué mantiene el límite

  • El ejecutor abre un WebSocket TLS saliente y no expone ningún listener entrante. Los comandos regresan a través de esa conexión establecida.
  • La entrada en la nube se limita a acciones declaradas y argumentos tipados y limitados por esquema. El ejecutor rechaza acciones y argumentos desconocidos.
  • Los packs están direccionados por contenido: un hash de su contenido los identifica. El plano de control fija el hash de pack confiable, y el ejecutor lo recalcula desde el disco antes de la ejecución. Los packs personalizados nuevos o modificados esperan confianza.
  • El plano de control evalúa el alcance del ejecutor, la política de riesgo, las anulaciones de acciones, las concesiones permanentes y la aprobación condicional antes del envío.
  • En el host, el ejecutor limita las opciones de ejecución a los límites del pack y ejecuta el binario y argv declarados. El ejecutor redacta la salida antes de que salga del host, y Emisar mantiene la salida redactada en el historial de ejecuciones.
  • La auditoría del plano de control incluye solicitudes denegadas y pendientes. Cada ejecutor también escribe sus intentos de ejecución y rechazos locales en un diario JSONL encadenado por hash.
  • Un ejecutor puede requerir opcionalmente envío atestiguado por puente: intención firmada por el puente MCP autorizado por el cliente con una clave hoja Ed25519 o ECDSA P-256. El plano de control entonces no puede inventar ni ampliar una llamada permitida.

Lee las garantías exactas, limitaciones y modelo de amenazas en .agent/kb/specs/security-model.md.

Lo que emisar no es

  • No es un sandbox ni un aislador de procesos. Recomendamos usar uno, como coop.
  • No es una herramienta genérica de execute(command) ni un reemplazo de SSH.
  • No reemplaza el privilegio mínimo del sistema operativo, la gestión de cambios ni la gestión de configuración.
  • No hace inofensiva una acción destructiva permitida. El límite de seguridad es tan fuerte como las acciones, la confianza de packs, la política, la configuración del ejecutor y los permisos del host en uso.

El pack shell solo de staging es la excepción explícita de romper el vidrio (solo emergencia) al modelo de acciones declaradas. Es de riesgo crítico, denegado por defecto, nunca sugerido y no debe instalarse en ejecutores de producción.

Encuentra la superficie adecuada

ObjetivoComienza aquí
Instalar, actualizar, endurecer o diagnosticar un hostrunner/README.md
Conectar Claude, ChatGPT, Cursor, Codex u otro cliente MCPConectar un agente CLI
Inspeccionar o desarrollar el puente stdiomcp/README.md
Explorar, instalar o crear packs de accionespacks/README.md
Permitir que un agente instale emisar, conecte un cliente o cree un packskills/README.md
Revisar la arquitectura y los límites de confianza.agent/kb/architecture.md
Revisar los contratos de protocolo.agent/kb/specs/wire-protocol.md y .agent/kb/specs/mcp-api.md
Contribuir al plano de controlportal/README.md
Revisar la infraestructura GCP de produccióninfra/README.md

Estructura del repositorio

portal/   Elixir/Phoenix control plane, operator console, website, and MCP API
runner/   Go host runner and operator CLI
mcp/      Go stdio-to-HTTP MCP bridge
packs/    Versioned action-pack catalog
skills/   Standalone customer skills for coding agents
infra/    Production Terraform for emisar on Google Cloud
run       Root contributor command for development, tests, gates, and operations
dev/      Development Compose topologies, images, configs, and fixtures
tools/    Go implementations behind the contributor command and CI
dist/     Tracked distribution packages plus ignored generated build output
.agent/kb/ Repository architecture, specifications, runbooks, and rules

Cada proyecto de nivel superior tiene su propio AGENTS.md con su arquitectura, reglas de seguridad y puerta de verificación. Ejecuta ./run help para la lista completa de comandos para contribuidores.

Desarrollar localmente

La ruta recomendada solo necesita Coop y Docker en el host. Instala cada versión de herramienta que el repositorio fija en la imagen de proyecto aislada:

./run bootstrap             # works before Go is installed
coop build                  # build the pinned project image once
coop run -- ./run setup     # sidecars, deps, migrations, browser tooling
coop shell                  # enter the development box

Luego, dentro del shell:

./run seed        # explicit, idempotent demo data
./run serve       # live reload at the URL printed by Coop
# or: ./run serve --iex

Para desarrollo nativo, instala las versiones exactas en .tool-versions con asdf. También necesitas Git, Coop, Docker, el cliente de PostgreSQL, ShellCheck, jq, GNU Bash (con read -N), GNU coreutils, Chrome/Chromium e ImageMagick. En macOS, el Bash incluido de Apple y las utilidades BSD no pueden ejecutar todas las verificaciones de regresión de packs:

brew install bash coreutils jq
export PATH="$(brew --prefix coreutils)/libexec/gnubin:$(brew --prefix bash)/bin:$PATH"

./run setup verifica todos los requisitos previos antes de iniciar servicios; ./run doctor informa cada versión detectada y cualquier discrepancia para corregir. En macOS, ejecuta ./run certs trust una vez para este espacio de trabajo después de la configuración.

El bucle rápido ejecuta Phoenix en el entorno actual y mantiene solo PostgreSQL y Keycloak en la pila de dependencias de Coop aislada del espacio de trabajo.

./run urls imprime las URL distintas de Portal, métricas, Postgres y Keycloak de este espacio de trabajo. Las bifurcaciones de Coop heredan la misma configuración pero reciben puertos y volúmenes diferentes. La configuración, el servicio y el reinicio nunca aplican semillas a menos que las solicites.

Usa ./run status para una vista de solo lectura del espacio de trabajo actual, ./run logs [db|keycloak] para sus registros de sidecar exactos y ./run psql para su base de datos de desarrollo. Cada puerta canónica (./run gate <project>) imprime su fase actual y tiempo transcurrido; un fallo nombra la fase que lo detuvo.

El docker-compose.yml raíz sigue siendo la topología empaquetada más lenta con la imagen de Portal de versión, datos de demostración sembrados, tres ejecutores, MCP y firma. Inícialo con ./run smoke; sirve http://localhost:4010. Consulta portal/README.md y dev/README.md.

Licencia

Este repositorio tiene doble licencia:

  • runner/, mcp/ y packs/ son de código abierto bajo la Licencia Apache 2.0. Puedes inspeccionar, compilar, empaquetar y operar los componentes en el host de forma independiente.
  • Todo lo demás, incluido portal/, está disponible como fuente bajo la Licencia de Código Fuente Comercial 1.1. El uso no productivo es gratuito. El uso productivo solo se permite según sea necesario para operar los componentes con licencia Apache o el servicio alojado bajo la Concesión de Uso Adicional. Otro uso productivo requiere una licencia comercial. Cada versión se convierte a Apache 2.0 en su Fecha de Cambio.

Consulta contribuir, seguridad y el CLA. Para licencias comerciales, contacta licensing@emisar.dev.