Saltar a contenido

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:

Symbiont — get started

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 ejecutar symbi init, symbi dsl o symbi --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-compiler en Ubuntu, brew install protobuf en macOS)
  • Git (para clonar el repositorio)

Opcional

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):

brew tap thirdkeyai/tap
brew install symbi

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:

symbi tools init greet
symbi tools validate
symbi tools test greet --arg target=example
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:

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:

symbi init --profile assistant --schemapin tofu --sandbox tier1 --no-interact

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

Importa agentes preconstruidos junto con los perfiles generales (el inicializador de desarrollo de solo lectura con Landlock no admite combinar importaciones del catalogo):

symbi init --profile minimal --no-interact
symbi init --catalog assistant,dev

Listar agentes disponibles en el catalogo:

symbi init --catalog list

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:

symbi run <agent-name-or-file> --input <json>

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

metadata {
    version = "1.0.0"
    author = "developer"
    description = "Agent description"
}

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

with memory = "persistent", privacy = "high" {
    // agent implementation
}

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:

cargo build --features standalone-agent
# Enables: cloud-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:

cargo build --features orga-adaptive

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:

cargo build --no-default-features --features "keychain,vector-lancedb"  # drop cedar

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-qdrant y define SYMBIONT_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:

  1. Awareness (por defecto) — registro consultivo de todas las llamadas a herramientas que modifican estado
  2. Protection — un hook de bloqueo aplica una lista local de denegacion (.symbiont/local-policy.toml)
  3. Governance — evaluacion de politicas Cedar cuando symbi esta 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

# Install extension
gemini extensions install https://github.com/thirdkeyai/symbi-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 requiere aud. (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. Consulta SECURITY_AUDIT.md C3.

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 exactamente approve <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}/approve y .../deny autenticados 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 a o d. /gate tambien 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

# Solution: Check Docker logs
docker logs <container_id>

Problemas de Construccion con Rust

Problema: La construccion de Cargo falla con errores de dependencias

# Solution: Update Rust and clean build cache
rustup update
cargo clean
cargo build

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

Soporte de la Comunidad

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:

  1. Guia DSL - Aprende funciones avanzadas del DSL
  2. Guia del Bucle de Razonamiento - Entiende el ciclo ORGA
  3. Razonamiento Avanzado (orga-adaptive) - Curacion de herramientas, deteccion de bucles atascados, pre-hidratacion
  4. Arquitectura del Runtime - Entiende los internos del sistema
  5. Modelo de Seguridad - Implementa politicas de seguridad
  6. Contribuir - Contribuye al proyecto

¿Listo para construir algo increible? Comienza con nuestros proyectos de ejemplo o sumergete en la especificacion completa.