Primeros Pasos¶
Symbiont 2.0: Antes de actualizar, consulta la guía de migración y la verificación de la versión. La caché de prompts y las mejoras gobernadas siguen siendo opcionales y requieren activación explícita; no se habilitan automáticamente para los agentes existentes.
Si vas a ejecutar agentes bajo contencion, empieza por la guia de operador de contencion para conocer los requisitos de ejecucion, los cambios en las aprobaciones y la cobertura actual.
Esta guia te guiara a traves de la configuracion de Symbi y la creacion de tu primer agente de IA.
▶ Mira el tutorial de inicio:
Tabla de contenidos¶
Prerrequisitos¶
Lo que necesitas depende de como instales y ejecutes Symbi.
Para ejecutar el binario preconstruido¶
Los binarios preconstruidos ya estan compilados: no necesitas Rust, protobuf ni Git para instalarlos o ejecutarlos. Instala con Homebrew, el script de instalacion (curl) o una descarga manual desde GitHub Releases.
- Docker solo se necesita en tiempo de ejecucion si ejecutas agentes bajo el nivel de sandbox predeterminado (
tier1, respaldado por Docker). No se necesita para instalar Symbi ni para ejecutarsymbi init,symbi dslosymbi --version.
Para construir desde el codigo fuente¶
Requerido solo si instalas via cargo install o construyes el repositorio tu mismo:
- Rust 1.89+
- protobuf-compiler (
apt install protobuf-compileren Ubuntu,brew install protobufen macOS) - Git (para clonar el repositorio)
Opcional¶
- symbi-claude-code (plugin de gobernanza para Claude Code)
- symbi-gemini-cli (extension de gobernanza para Gemini CLI)
Nota: La busqueda vectorial esta integrada. Symbi incluye LanceDB como base de datos vectorial embebida -- no se necesita ningun servicio externo.
Instalacion¶
Opción 1: Binarios precompilados¶
macOS (Homebrew):
Linux / macOS (instalador del repositorio):
curl -fsSL https://raw.githubusercontent.com/ThirdKeyAI/Symbiont/main/scripts/install.sh | bash
export PATH="$HOME/.symbi/bin:$PATH"
symbi --version
El script requiere Bash, curl o wget, tar y sha256sum o shasum. Las entradas ausentes o ambiguas y los errores de suma de verificación detienen la instalación.
El instalador del repositorio verifica la suma SHA-256 del manifiesto HTTPS antes de extraer, mediante sha256sum o shasum. Instala la última versión en ~/.symbi/bin; no realiza la comprobación independiente de identidad Sigstore. Define SYMBI_INSTALL_DIR para el proceso bash si necesitas otra raíz de instalación. Usa una descarga manual para fijar una versión.
Las descargas manuales admiten Linux x86_64/ARM64, macOS ARM64 y Windows x86_64. En Windows usa el archivo ZIP. Sigue la verificación de la versión antes de añadir el binario a PATH.
Landlock se selecciona por proyecto Linux con symbi init --sandbox landlock. Requiere Landlock ABI 6+, seccomp, espacios de nombres de usuario, montaje y red sin privilegios, delegación de cgroup v2 y un gestor systemd de usuario. Consulta la configuración de Linux (en inglés).
Opcion 2: Docker (Recomendado)¶
La forma mas rapida de obtener un runtime funcionando es dejar que el contenedor cree el proyecto por ti:
# 1. Crear symbiont.toml, agents/, policies/, docker-compose.yml y
# un .env con un SYMBIONT_MASTER_KEY recien generado.
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile assistant --no-interact --dir /workspace
# 2. Iniciar el runtime. Lee .env automaticamente.
docker compose up
La API del runtime queda ahora en http://localhost:8080 y HTTP Input en http://localhost:8081.
Si prefieres trabajar desde un clon (para compilar la imagen tu mismo o ejecutar pruebas):
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont
# Build the unified symbi container
docker build -t symbi:latest .
# Run the development environment
docker run --rm -it -v $(pwd):/workspace symbi:latest bash
Opcion 3: Instalacion Local¶
Para desarrollo local:
# Clone the repository
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont
# Install Rust dependencies and build
cargo build --release
# Run tests to verify installation
cargo test
Verificar Instalacion¶
Probar que todo funciona correctamente:
# Test the DSL parser
cd crates/dsl && cargo run && cargo test
# Test the runtime system
cd ../runtime && cargo test
# Run example agents
cargo run --example basic_agent
cargo run --example full_system
# Test the unified symbi CLI
cd ../.. && cargo run -- dsl --help
cargo run -- mcp --help
# Test with Docker container
docker run --rm symbi:latest --version
docker run --rm -v $(pwd):/workspace symbi:latest dsl parse --help
docker run --rm symbi:latest mcp --help
Probarlo sin clave de API¶
Dos cosas funcionan sin conexion, antes de configurar cualquier proveedor de modelos. Ambas demuestran lo que Symbiont hace realmente — empieza aqui.
Define una herramienta y ejecutala en seco. Los tipos de argumento, los limites de alcance y las comprobaciones de inyeccion se aplican antes de ejecutar nada:
greet OK
✓ target (string): example → OK
Command: greet example
Cedar: Tool::Greet / execute_tool
[dry run — command not executed]
Ejecutar un agente requiere un proveedor de modelos — una clave en la nube o un modelo local, ambos cubiertos mas abajo.
Inicializacion de Proyecto¶
La forma mas rapida de iniciar un nuevo proyecto Symbiont es symbi init:
Esto lanza un asistente interactivo que te guia a traves de:
- Seleccion de perfil: minimal, assistant, dev-agent o multi-agent
- Modo SchemaPin: tofu (Trust-On-First-Use), strict o disabled
- Nivel de sandbox: landlock (nativo de Linux), tier0 (ninguno, solo desarrollo), tier1 (Docker), tier2 (gVisor / runsc) o tier3 (microVM Firecracker)
Con --sandbox landlock --profile dev-agent, el asistente tambien pregunta por el
repositorio de codigo fuente, el ejecutable instalado de Claude Code, la URL de
inferencia compatible con Messages, el modelo y el nombre de la variable de entorno
con la credencial. Genera una configuracion de revision de solo lectura en un
directorio de control separado y vacio. Quien lo invoque de forma no interactiva
debe proporcionar --source, --managed-executable, --inference-url,
--inference-model e --inference-key-env. Consulta
onboarding para desarrollo en Linux.
Lo que produce init¶
Cada ejecucion escribe:
| Archivo | Proposito |
|---|---|
symbiont.toml |
Configuracion del runtime y de politicas |
policies/default.cedar |
Politica Cedar deny-by-default |
agents/*.symbi |
Definiciones de agente especificas del perfil (los .dsl heredados tambien se reconocen; excepto minimal) |
AGENTS.md |
Indice autogenerado de los agentes declarados |
.symbiont/audit/ |
Directorio del registro de auditoria a prueba de manipulacion |
.gitignore |
Se anade con entradas especificas de Symbiont, incluyendo .env |
.env |
SYMBIONT_MASTER_KEY generado desde /dev/urandom (permisos 0600) |
.env.example |
Plantilla segura para commit que muestra las variables de entorno requeridas |
docker-compose.yml |
Archivo compose con los montajes de volumen y el cableado de env; se omite con Landlock |
Pase --no-docker-compose para omitir el archivo compose, y --dir <PATH> para escribir en un directorio distinto del actual (esencial dentro de un contenedor Docker — ver mas abajo).
Modo no interactivo¶
Para CI/CD o configuraciones por script:
Ejecutar init dentro de Docker¶
Como el WORKDIR de la imagen es /var/lib/symbi, use --dir para escribir en su volumen montado:
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile assistant --no-interact --dir /workspace
Eso rellena el directorio actual del host con el arbol completo del proyecto.
Perfiles¶
| Perfil | Que crea |
|---|---|
minimal |
symbiont.toml + politica Cedar por defecto |
assistant |
+ un agente asistente gobernado |
dev-agent |
+ agente de CLI administrada; con Landlock anade herramientas configuradas de lectura, listado y busqueda, politicas acotadas y DEVELOPMENT.md |
multi-agent |
+ agentes coordinador/worker con politicas inter-agente |
Importar desde el catalogo¶
Importa agentes preconstruidos junto con los perfiles generales (el inicializador de desarrollo de solo lectura con Landlock no admite combinar importaciones del catalogo):
Listar agentes disponibles en el catalogo:
Despues de la inicializacion, valida e inicia:
symbi dsl -f agents/assistant.symbi # validate your agent
symbi run assistant -i '{"query": "hello"}' # test a single agent
symbi up # start the runtime locally
docker compose up # ...or start it in Docker (reads .env)
Ejecutar un agente individual¶
Usa symbi run para ejecutar un agente sin iniciar el servidor de runtime completo:
El comando resuelve nombres de agentes buscando: ruta directa, luego el directorio agents/. Configura la inferencia en la nube desde variables de entorno (OPENROUTER_API_KEY, OPENAI_API_KEY o ANTHROPIC_API_KEY), ejecuta el bucle de razonamiento ORGA y sale.
symbi run assistant -i 'Summarize this document'
symbi run agents/recon.symbi -i '{"target": "10.0.1.5"}' --max-iterations 5
Los comandos de herramientas, los parsers y la ejecucion de MCP y PTY requieren el
backend de contenedor seleccionado, una imagen cacheada con los ejecutables
declarados y montajes de datos explicitos. Un backend no disponible no puede
recurrir a la ejecucion en el host. Los ajustes del agente seleccionados y los
valores predeterminados del proyecto se comprueban antes de la inferencia. Las
ejecuciones tambien requieren el almacenamiento protegido .symbiont/governed/ e
imprimen su referencia publica de auditoria. Consulta
configuracion de comandos y
auditoria de ejecuciones.
Usar un modelo local¶
El proveedor no tiene por que ser un servicio en la nube. Apunta OPENAI_BASE_URL a cualquier servidor compatible con OpenAI — Ollama, vLLM, LM Studio y llama.cpp exponen uno — y no interviene ninguna clave de nube:
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
export CHAT_MODEL=llama3.1
symbi run assistant -i 'hello'
Las mismas tres variables sirven para symbi up. Symbiont advierte cuando una URL base usa http:// en texto plano, porque la clave viaja con la peticion. Eso es lo esperado para un modelo en tu propia maquina.
Partir desde una plantilla (symbi new)¶
symbi init genera un proyecto generico; symbi new genera un proyecto en torno a una de varias plantillas orientadas a tareas. Es util cuando sabes que tipo de agente necesitas antes de saber cuales agentes necesitas.
symbi new --list # show available templates
symbi new <template> <project-name> # create a new project from a template
Plantillas incluidas:
| Plantilla | Que obtienes |
|---|---|
webhook-min |
Agente minimo dirigido por webhooks — configuracion de HTTP Input + un DSL manejador |
webscraper-agent |
Agente de scraping con politicas de acceso Cedar y una herramienta scraper de ToolClad |
slm-first |
Patron de router + lista blanca SLM + respaldo por confianza |
rag-lite |
Scripts de ingesta respaldados por Qdrant mas un agente de busqueda |
symbi new y symbi init son complementarios: new te da un punto de partida especifico para una tarea, init (+ --catalog) te da uno especifico para gobernanza. Tambien puedes combinar — genera el esqueleto con new y luego ejecuta symbi init --catalog ... para incorporar agentes preconstruidos adicionales desde el catalogo.
Tu Primer Agente¶
Vamos a crear un agente simple de analisis de datos para entender los conceptos basicos de Symbi.
1. Crear Definicion de Agente¶
Crear un nuevo archivo my_agent.symbi:
metadata {
version = "1.0.0"
author = "your-name"
description = "My first Symbi agent"
}
agent greet_user(name: String) -> String {
capabilities = ["greeting", "text_processing"]
policy safe_greeting {
allow: read(name) if name.length <= 100
deny: store(name) if name.contains_sensitive_data
audit: all_operations with signature
}
with memory = "ephemeral", privacy = "low" {
if (validate_name(name)) {
greeting = format_greeting(name);
audit_log("greeting_generated", greeting.metadata);
return greeting;
} else {
return "Hello, anonymous user!";
}
}
}
2. Ejecutar el Agente¶
# Parse and validate the agent definition
cargo run -- dsl parse my_agent.symbi
# Run the agent in the runtime
cd crates/runtime && cargo run --example basic_agent -- --agent ../../my_agent.symbi
Entendiendo el DSL¶
El DSL de Symbi tiene varios componentes clave:
Bloque de Metadatos¶
Proporciona informacion esencial sobre tu agente para documentacion y gestion del runtime.
Definicion de Agente¶
agent agent_name(parameter: Type) -> ReturnType {
capabilities = ["capability1", "capability2"]
// agent implementation
}
Define la interfaz, capacidades y comportamiento del agente.
Definiciones de Politicas¶
policy policy_name {
allow: action_list if condition
deny: action_list if condition
audit: operation_type with audit_method
}
Politicas de seguridad declarativas que se aplican en tiempo de ejecucion.
Contexto de Ejecucion¶
Especifica la configuracion de runtime para gestion de memoria y requisitos de privacidad.
Siguientes Pasos¶
Explorar Ejemplos¶
El repositorio incluye varios agentes de ejemplo:
# Basic agent example
cd crates/runtime && cargo run --example basic_agent
# Full system demonstration
cd crates/runtime && cargo run --example full_system
# Context and memory example
cd crates/runtime && cargo run --example context_example
# RAG-powered agent
cd crates/runtime && cargo run --example rag_example
Habilitar Funciones Avanzadas¶
API HTTP (Opcional)¶
# Enable the HTTP API feature
cd crates/runtime && cargo build --features http-api
# Run with API endpoints
cd crates/runtime && cargo run --features http-api --example full_system
Endpoints de API Principales:
- GET /api/v1/health - Verificacion de salud y estado del sistema
- GET /api/v1/agents - Listar todos los agentes activos con estado de ejecucion en tiempo real
- GET /api/v1/agents/{id}/status - Obtener metricas detalladas de ejecucion del agente
- POST /api/v1/workflows/execute - Ejecutar flujos de trabajo
Nuevas Funciones de Gestion de Agentes: - Monitoreo de procesos en tiempo real y verificaciones de salud - Capacidades de apagado gracioso para agentes en ejecucion - Metricas de ejecucion completas y seguimiento de uso de recursos - Soporte para diferentes modos de ejecucion (efimero, persistente, programado, basado en eventos)
Inferencia LLM en la Nube¶
Conecta a proveedores de LLM en la nube via OpenRouter:
# Enable cloud inference
cargo build --features cloud-llm
# Set API key and model
export OPENROUTER_API_KEY="sk-or-..."
export OPENROUTER_MODEL="google/gemini-2.0-flash-001" # optional
Modo Agente Autonomo¶
Una sola linea para agentes nativos de la nube con inferencia LLM:
Note: Composio MCP and SymbiBot integration were removed in this version due to security concerns — see SECURITY_AUDIT.md C3 for context.
Primitivas de Razonamiento Avanzado¶
Habilita curacion de herramientas, deteccion de bucles atascados, pre-carga de contexto y convenciones con alcance:
Consulta la guia de orga-adaptive para la documentacion completa.
Motor de Politicas Cedar¶
Autorizacion formal con el lenguaje de politicas Cedar. Activado por defecto desde v1.14.x: los binarios publicados de symbi (crates.io, Docker, tarballs de GitHub Release) incluyen Cedar, y symbi up / symbi run autocablean CedarPolicyGate desde los archivos policies/*.cedar al arranque; si no hay ninguno presente, el runtime recae en el DefaultPolicyGate fail-closed. Para construir sin Cedar (por ejemplo, cuando pretendes cablear OpaPolicyGateBridge o un ReasoningPolicyGate personalizado en su lugar), usa:
Base de Datos Vectorial (Integrada)¶
Symbi incluye LanceDB como base de datos vectorial embebida sin configuracion. La busqueda semantica y RAG funcionan de inmediato -- no se necesita iniciar ningun servicio separado:
# Run agent with RAG capabilities (vector search just works)
cd crates/runtime && cargo run --example rag_example
# Test context management with advanced search
cd crates/runtime && cargo run --example context_example
Compilacion minima: LanceDB se incluye por defecto, pero puede excluirse para binarios mas ligeros:
cargo build --no-default-features. El runtime recurre de forma transparente a un backend vectorial no operativo.Despliegues a escala: Qdrant esta disponible como backend opcional. Compila con
--features vector-qdranty defineSYMBIONT_VECTOR_BACKEND=qdrant.
Funciones de Gestion de Contexto: - Busqueda Multi-Modal: Modos de busqueda por palabra clave, temporal, similitud e hibrido - Calculo de Importancia: Algoritmo de puntuacion sofisticado considerando patrones de acceso, recencia y retroalimentacion del usuario - Control de Acceso: Integracion del motor de politicas con controles de acceso por agente - Archivado Automatico: Politicas de retencion con almacenamiento comprimido y limpieza - Compartir Conocimiento: Comparticion segura de conocimiento entre agentes con puntuaciones de confianza
Referencia de Feature Flags¶
| Feature | Descripcion | Por defecto |
|---|---|---|
keychain |
Integracion de llavero del SO para secretos | Si |
vector-lancedb |
Backend vectorial embebido LanceDB | Si |
vector-qdrant |
Backend vectorial distribuido Qdrant | No |
embedding-models |
Modelos de embedding locales via Candle | No |
http-api |
API REST con Swagger UI | No |
http-input |
Servidor webhook con autenticacion JWT | No |
cloud-llm |
Inferencia LLM en la nube (OpenRouter) | No |
standalone-agent |
Meta-feature Cloud LLM | No |
cedar |
Motor de politicas Cedar — autocableado desde policies/*.cedar al arranque |
Yes |
orga-adaptive |
Primitivas de razonamiento avanzado | No |
cron |
Programacion cron persistente | No |
cli-executor |
Subprocesos de CLI de IA gobernados (Claude Code, etc.) — Modo B | Yes |
native-sandbox |
Sandboxing nativo de procesos | No |
metrics |
Metricas/trazado OpenTelemetry | No |
mcp-client |
Ejecucion de herramientas ToolClad basada en MCP via stdio (verificado por SchemaPin) | No |
toolclad-browser |
Backend ToolClad de navegador (CDP) — solo un esqueleto de implementacion; devuelve un error explicito hasta que el backend CDP este disponible | No |
interactive |
Prompts interactivos para symbi init (dialoguer) |
Si |
full |
Todas las funciones opcionales de runtime, vectoriales y de politicas | No |
# Build with specific features
cargo build --features "cloud-llm,orga-adaptive,cedar"
# Build with everything
cargo build --features full
Plugins para Asistentes de IA¶
Symbiont proporciona plugins de gobernanza propios para asistentes de programacion con IA populares, con tres niveles progresivos de proteccion:
- Awareness (por defecto) — registro consultivo de todas las llamadas a herramientas que modifican estado
- Protection — un hook de bloqueo aplica una lista local de denegacion (
.symbiont/local-policy.toml) - Governance — evaluacion de politicas Cedar cuando
symbiesta en el PATH
La configuracion de la lista de denegacion es agnostica respecto a la herramienta — el mismo .symbiont/local-policy.toml funciona con ambos plugins:
[deny]
paths = [".env", ".ssh/", ".aws/"]
commands = ["rm -rf", "git push --force"]
branches = ["main", "master", "production"]
Claude Code¶
# Install from marketplace
/plugin marketplace add https://github.com/thirdkeyai/symbi-claude-code
# Available skills: /symbi-init, /symbi-policy, /symbi-verify, /symbi-audit, /symbi-dsl
Consulta symbi-claude-code para mas detalles.
Modo B: subproceso gobernado de Claude Code¶
Un agente con metadata { executor = "claude_code" } ejecuta su proceso hijo de CLI
en el contenedor Docker/gVisor seleccionado, con almacenamiento efimero y canales
privados de inferencia y herramientas del runtime. El agente code_reviewer
incluido es el agente de referencia. Configura primero una imagen cacheada de
CLI/Python, montajes explicitos del codigo fuente en el backend, herramientas
ToolClad registradas con sus politicas Cedar, y [managed_cli.inference]. Consulta
contencion de la CLI administrada para ver un ejemplo
completo.
# /srv/source must map to an explicit backend mount in the control project.
symbi run code_reviewer --target /srv/source --max-turns 12 --budget-timeout 15m
# Add operator review for tools that require approval.
symbi run code_reviewer --target /srv/source --approval-terminal
El proceso hijo no recibe ningun montaje directo del codigo fuente, ni acceso a la
red externa, ni estado de sesion del host, ni credenciales del proveedor. Las
herramientas registradas intermedian el acceso permitido a archivos y a Git. Las
herramientas integradas y el descubrimiento automatico estan desactivados. Cada
accion requiere autorizacion del runtime; aprobar el lanzamiento no autoriza las
acciones posteriores. Los plugins no se cargan y --plugin-dir se rechaza.
| Flag / ajuste | Proposito |
|---|---|
--target |
Directorio de codigo fuente asignado a un montaje explicito del backend |
--max-turns |
Limite de la conversacion; 12 por defecto |
--budget-timeout |
Limite de tiempo de reloj, incluida la inicializacion; 15m por defecto |
--budget-tokens |
Asignacion reservada de tokens de salida de inferencia; 100000 por defecto, no el total de tokens facturados |
--approval-terminal |
Revision opt-in en la terminal de control para las aprobaciones obligatorias |
[managed_cli.inference] |
Endpoint, modelo y variable de credencial explicitos del proveedor; la credencial se queda en el runtime |
Los diarios de sesion firmados que se exigen residen en el almacenamiento privado
.symbiont/governed/. El runtime imprime la clave publica de verificacion. Una
aprobacion ausente, un almacenamiento de auditoria inseguro, un backend no
disponible o una limpieza fallida no pueden reportar exito en silencio. Las
respuestas de inferencia se almacenan en bufer, incluido SSE, por lo que la salida
en streaming se retrasa.
Gemini CLI¶
La extension de Gemini CLI proporciona una defensa en profundidad adicional mediante el bloqueo del manifiesto excludeTools y la aplicacion nativa de policies/*.toml a nivel de plataforma.
Consulta symbi-gemini-cli para mas detalles.
Configuracion¶
Variables de Entorno¶
Configura tu entorno para rendimiento optimo:
# Required: 32-byte hex key used to encrypt persistent state.
# Generate with: openssl rand -hex 32
# `symbi init` writes one into .env automatically.
export SYMBIONT_MASTER_KEY="..."
# Basic configuration
export SYMBI_LOG_LEVEL=info
export SYMBI_RUNTIME_MODE=development
# La busqueda vectorial funciona de inmediato con el backend LanceDB integrado.
# Para usar Qdrant en su lugar (opcional, habilita la feature `vector-qdrant`):
# export SYMBIONT_VECTOR_BACKEND=qdrant
# export QDRANT_URL=http://localhost:6333
# MCP integration (optional)
export MCP_SERVER_URLS="http://localhost:8080"
Variables de Entorno Relacionadas con Seguridad (auditoria posterior a v1.13.0)¶
| Variable | Por defecto | Efecto |
|---|---|---|
SYMBI_INSECURE_ALLOW_ALL |
sin establecer | Cuando se establece a 1, symbi up / symbi run usan la compuerta de politicas permisiva (toda llamada a herramienta y toda delegacion se permite). Equivalente al flag --insecure-allow-all. Se imprime un banner ruidoso en stderr. Solo para desarrollo local. Sin esto, el bucle de razonamiento es fail-closed y rechaza llamadas a herramientas y delegaciones hasta que se conecte un backend de politicas explicito. |
SYMBI_REJECT_LEGACY_API_KEYS |
sin establecer | Cuando se establece a 1, el validador de claves de API corta circuito el escaneo Argon2 O(n) obsoleto para las claves sin prefijo. Uselo inmediatamente despues de reemitir cada clave en formato keyid.secret. La ruta heredada se eliminara en la proxima release menor de todos modos. |
SYMBI_UNSAFE_NATIVE_SANDBOX |
sin establecer | Requerido (ademas de SYMBI_ENV=production-no-establecido) para construir el runner de sandbox native. El feature Cargo native-sandbox ademas falla al compilar en builds release. El runner nativo no proporciona aislamiento y esta destinado unicamente a depuracion local. |
SYMBI_TRUSTED_PROXIES |
sin establecer | Lista de permitidos CIDR para proxies reversos de confianza; X-Forwarded-For solo se honra desde estas direcciones. |
Las siguientes variables de entorno fueron eliminadas:
SYMBIONT_ALLOW_NO_JWT_AUDIENCE— el verificador JWT ahora siempre requiereaud. (Eliminada en la auditoria posterior a v1.13.0; era una escotilla de escape no segura.)COMPOSIO_API_KEY,COMPOSIO_MCP_URL— la integracion de Composio MCP fue eliminada por completo. ConsultaSECURITY_AUDIT.mdC3.
Configuracion de Runtime¶
Crear un archivo de configuracion symbi.toml:
[runtime]
max_agents = 1000
memory_limit_mb = 512
execution_timeout_seconds = 300
[security]
default_sandbox_tier = "docker"
audit_enabled = true
policy_enforcement = "strict"
[vector_db]
enabled = true
backend = "lancedb" # default; also supports "qdrant"
collection_name = "symbi_knowledge"
# url = "http://localhost:6333" # only needed when backend = "qdrant"
Aprobaciones con humano en el bucle¶
Los requisitos de aprobacion del manifiesto y de los subcomandos siguen siendo obligatorios aunque Cedar permita la llamada. La cola compartida retiene cada peticion hasta que haya una decision autorizada, expire o se cancele. Un notificador atascado no puede bloquear otra superficie de aprobacion.
- CLI ordinaria o administrada: anade
--approval-terminal, opcionalmente con--approval-timeout 120(de 1 a 3600 segundos). Revisa el JSON escapado completo e introduce exactamenteapprove <request-id>en la terminal de control. Sin esa bandera, las llamadas que requieren aprobacion fallan de forma cerrada. - REST:
GET /api/v1/approvals,POST /api/v1/approvals/{id}/approvey.../denyautenticados resuelven las peticiones pendientes. - Shell: Ctrl+G abre el panel Gate incluso durante un turno ocupado. Selecciona
con ↑/↓, pulsa Enter para revisar la peticion completa, desplazate y luego pulsa
aod./gatetambien abre el panel. Una fila de la lista por si sola no aprueba. - Chat: un remitente de la lista de permitidos usa
/symbi gate show <id>y luego copia/symbi gate approve <id> <review-digest>desde la revision completa, o envia/symbi gate deny <id>. Las aprobaciones que solo indican el ID se rechazan. Los mensajes demasiado grandes necesitan otra superficie de revision conectada.
Las peticiones modificadas, expiradas o eliminadas requieren una revision nueva. La TUI reporta de forma explicita los errores de resolucion y los desenlaces desconocidos. La aprobacion es permiso para continuar a traves del gate; verifica la ejecucion real en la auditoria firmada de la ejecucion. Slack exige un signing secret no vacio y firmas de callback validas en todos los entornos. La antigua anulacion para callbacks sin firma ya no esta soportada. Consulta el ciclo de vida de aprobaciones para conocer los limites y los supuestos de confianza.
Configura el tiempo de espera y los canales de aprobacion por chat en
symbiont.toml:
[escalation]
timeout_seconds = 120
[[escalation.approval_channels]]
platform = "slack"
channel_id = "C0APPROVERS"
approvers = ["U0ALICE", "U0BOB"] # allowlisted sender ids; empty = nobody may approve via chat
Problemas Comunes¶
Problemas con Docker¶
Problema: La construccion de Docker falla con errores de permisos
# Solution: Ensure Docker daemon is running and user has permissions
sudo systemctl start docker
sudo usermod -aG docker $USER
Problema: El contenedor sale inmediatamente
Problemas de Construccion con Rust¶
Problema: La construccion de Cargo falla con errores de dependencias
Problema: Faltan dependencias del sistema
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential pkg-config libssl-dev
# macOS
brew install pkg-config openssl
Problemas de Runtime¶
Problema: El agente falla al iniciar
# Check agent definition syntax
cargo run -- dsl parse your_agent.symbi
# Enable debug logging
RUST_LOG=debug cd crates/runtime && cargo run --example basic_agent
Obtener Ayuda¶
Documentacion¶
- Guia DSL - Referencia completa del DSL
- Arquitectura del Runtime - Detalles de arquitectura del sistema
- Modelo de Seguridad - Documentacion de seguridad y politicas
Soporte de la Comunidad¶
- Issues: GitHub Issues
- Discusiones: GitHub Discussions
- Documentacion: Referencia Completa de API
Modo de Depuracion¶
Para solucion de problemas, habilitar logging detallado:
# Enable debug logging
export RUST_LOG=symbi=debug
# Run with detailed output
cd crates/runtime && cargo run --example basic_agent 2>&1 | tee debug.log
¿Que Sigue?¶
Ahora que tienes Symbi ejecutandose, explora estos temas avanzados:
- Guia DSL - Aprende funciones avanzadas del DSL
- Guia del Bucle de Razonamiento - Entiende el ciclo ORGA
- Razonamiento Avanzado (orga-adaptive) - Curacion de herramientas, deteccion de bucles atascados, pre-hidratacion
- Arquitectura del Runtime - Entiende los internos del sistema
- Modelo de Seguridad - Implementa politicas de seguridad
- Contribuir - Contribuye al proyecto
¿Listo para construir algo increible? Comienza con nuestros proyectos de ejemplo o sumergete en la especificacion completa.
