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.
Comience con el catálogo público de packs, deje que emisar sugiera los packs que coinciden con un host, y agregue sus propias acciones sin añadir otro servidor MCP a cada cliente.
Comience con un host
Necesita una cuenta de emisar, un host Linux con
systemd y sudo, y acceso HTTPS saliente a emisar.dev:443 y
registry.emisar.dev:443. El primer host sirve el plano de control, el instalador
y los archivos de lanzamiento; el segundo sirve los packs de acciones.
GitHub es el respaldo de lanzamiento opcional. Para permitir ese respaldo, también permita
api.github.com:443, github.com:443 y
release-assets.githubusercontent.com:443.
-
En la consola, elija Conectar un ejecutor. Copie el comando generado; contiene una clave de inscripción nueva y de un solo uso.
-
Ejecútelo en el host:
curl -fsSL https://emisar.dev/install.sh \ | sudo EMISAR_ENROLLMENT_KEY=emkey-enroll-... bashEl instalador verifica la suma de verificación del lanzamiento, crea el servicio, instala los packs iniciales coincidentes con el host e inicia el ejecutor.
-
Confirme que el ejecutor esté en línea en la consola, luego envíe
linux.uptimecon un motivo. Habrá terminado cuando aparezca la salida y la ejecución esté presente en el registro de auditoría. -
Abra Agentes LLM y conecte su cliente. Los clientes MCP remotos usan OAuth; los clientes stdio locales pueden usar el puente
emisar-mcpy su flujo de aprobación mediante navegador.
El recorrido completo, incluida la salida esperada y la solució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 es el contrato. Fija 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 desde 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
- Sin listener entrante en el ejecutor. 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.
- Solo acciones declaradas. La entrada en la nube se limita a argumentos tipados y limitados por esquema. El ejecutor rechaza acciones y argumentos desconocidos.
- Packs con direccionamiento por contenido. El plano de control fija el hash de confianza del pack; el ejecutor lo recalcula desde el disco antes de la ejecución. Los packs personalizados nuevos o modificados esperan la confianza.
- Política antes de efectos secundarios. El alcance del ejecutor, la política de riesgo, las anulaciones de acciones, las concesiones permanentes y la aprobación condicional se evalúan antes del envío.
- Aplicación en el host. El ejecutor limita las opciones de ejecución a los límites del pack y ejecuta el binario y argv declarados. La salida del ejecutor se redacta antes de salir del host; Emisar conserva la salida redactada resultante en el historial de ejecuciones.
- Dos registros. 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.
- Envío opcional atestiguado por puente. Un ejecutor puede requerir una intención firmada por el puente MCP autorizado por el cliente con una clave hoja Ed25519 o ECDSA P-256, de modo que el plano de control no pueda originar ni ampliar una llamada permitida.
Lea las garantías exactas, limitaciones y modelo de amenazas en
.agent/kb/specs/security-model.md.
Qué no es emisar
- 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 que una acción destructiva permitida sea inofensiva. El límite de seguridad es tan fuerte como las acciones, la confianza de los 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 ruptura de vidrio al modelo de
acción declarada. Es de riesgo crítico, denegado por defecto, nunca sugerido
y no debe instalarse en ejecutores de producción.
Encuentre la superficie adecuada
| Objetivo | Comience aquí |
|---|---|
| Instalar, actualizar, endurecer o diagnosticar un host | runner/README.md |
| Conectar Claude, ChatGPT, Cursor, Codex u otro cliente MCP | Conectar un agente CLI |
| Inspeccionar o desarrollar el puente stdio | mcp/README.md |
| Explorar, instalar o crear packs de acciones | packs/README.md |
| Permitir que un agente instale emisar, conecte un cliente o cree un pack | skills/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 control | portal/README.md |
| Revisar la infraestructura de producción en GCP | infra/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. Ejecute ./run help para la superficie completa de comandos
para contribuyentes.
Desarrolle localmente
La ruta recomendada solo necesita Coop y Docker en el host. Instala cada pin del repositorio 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, instale las versiones exactas en .tool-versions con
asdf, además de Git, Coop, Docker, el cliente PostgreSQL, ShellCheck,
Chrome/Chromium e ImageMagick.
./run setup valida todos los requisitos previos antes de iniciar los servicios; ./run doctor informa cada versión detectada y una discrepancia accionable. En macOS,
ejecute ./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. Las semillas nunca se aplican mediante configuración, servicio o reinicio a menos que se
soliciten explícitamente.
Use ./run status para una vista de solo lectura del espacio de trabajo actual, ./run logs [db|keycloak] for its exact sidecar logs, and ./run psql para su base de datos
de desarrollo. Cada puerta canónica imprime su fase actual y el tiempo transcurrido; una
falla nombra la fase que la detuvo.
El docker-compose.yml raíz sigue siendo la topología empaquetada más lenta con la
imagen de Portal de lanzamiento, datos de demostración sembrados, tres ejecutores, MCP y firma. Inícielo
con ./run smoke; sirve http://localhost:4010. Consulte
portal/README.md y dev/README.md.
Licencia
Este repositorio tiene doble licencia:
runner/,mcp/ypacks/son de código abierto bajo la Licencia Apache 2.0. Puede 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.
Consulte contribuciones, seguridad
y el CLA. Para licencias comerciales, contacte a
licensing@emisar.dev.