Erste Schritte¶
Symbiont 2.0: Lesen Sie vor dem Upgrade die Migrationsanleitung und Release-Verifizierung. Prompt-Caching und gesteuerte Verbesserungen bleiben ausdrücklich optional; bestehende Agenten werden nicht automatisch umgestellt.
Fuehren Sie Agenten unter Containment aus? Beginnen Sie mit dem Containment-Betreiberleitfaden fuer Ausfuehrungsvoraussetzungen, Aenderungen bei Genehmigungen und die aktuelle Abdeckung.
Dieser Leitfaden fuehrt Sie durch die Einrichtung von Symbi und die Erstellung Ihres ersten KI-Agenten.
▶ Zum Einstieg das Walkthrough-Video ansehen:
Inhaltsverzeichnis¶
Voraussetzungen¶
Was Sie benoetigen, haengt davon ab, wie Sie Symbi installieren und ausfuehren.
Zur Ausfuehrung der vorkompilierten Binaerdatei¶
Die vorkompilierten Binaerdateien sind bereits fertig kompiliert -- Sie benoetigen kein Rust, protobuf oder Git, um sie zu installieren oder auszufuehren. Installieren Sie sie mit Homebrew, dem Installationsskript (curl) oder per manuellem Download von GitHub Releases.
- Docker wird nur zur Laufzeit benoetigt, wenn Sie Agenten in der Standard-Sandbox-Stufe (
tier1, Docker-basiert) ausfuehren. Es wird nicht benoetigt, um Symbi zu installieren oder umsymbi init,symbi dslodersymbi --versionauszufuehren.
Zum Erstellen aus dem Quellcode¶
Nur erforderlich, wenn Sie ueber cargo install installieren oder das Repository selbst bauen:
- Rust 1.89+
- protobuf-compiler (
apt install protobuf-compilerunter Ubuntu,brew install protobufunter macOS) - Git (zum Klonen des Repositories)
Optional¶
- symbi-claude-code (Claude Code Governance-Plugin)
- symbi-gemini-cli (Gemini CLI Governance-Erweiterung)
Hinweis: Vektorsuche ist integriert. Symbi wird mit LanceDB als eingebetteter Vektordatenbank ausgeliefert -- kein externer Dienst erforderlich.
Installation¶
Option 1: Vorgefertigte Binärdateien¶
macOS (Homebrew):
Linux / macOS (Repository-Installer):
curl -fsSL https://raw.githubusercontent.com/ThirdKeyAI/Symbiont/main/scripts/install.sh | bash
export PATH="$HOME/.symbi/bin:$PATH"
symbi --version
Das Skript benötigt Bash, curl oder wget, tar sowie sha256sum oder shasum. Fehlende oder mehrdeutige Manifesteinträge und falsche Prüfsummen brechen die Installation ab.
Der Repository-Installer prüft die SHA-256-Prüfsumme aus dem HTTPS-Release-Manifest vor dem Entpacken mit sha256sum oder shasum. Er installiert die neueste Version unter ~/.symbi/bin und führt keine unabhängige Sigstore-Identitätsprüfung durch. Setzen Sie SYMBI_INSTALL_DIR für den bash-Prozess, um ein anderes Stammverzeichnis zu wählen. Für eine feste Version verwenden Sie einen manuellen Download.
Manuelle Downloads unterstützen Linux x86_64/ARM64, macOS ARM64 und Windows x86_64. Verwenden Sie unter Windows das ZIP-Archiv. Folgen Sie der Release-Verifizierung, bevor Sie die Binärdatei in PATH aufnehmen.
Landlock wird pro Linux-Projekt mit symbi init --sandbox landlock gewählt. Erforderlich sind Landlock ABI 6+, seccomp, unprivilegierte Benutzer-, Mount- und Netzwerk-Namespaces, delegierte cgroup v2 und ein systemd-Benutzermanager. Siehe Linux-Einrichtung (Englisch).
Option 2: Docker (Empfohlen)¶
Der schnellste Weg zu einem lauffaehigen Runtime ist, den Container das Projekt fuer Sie erstellen zu lassen:
# 1. symbiont.toml, agents/, policies/, docker-compose.yml und
# eine .env mit einem frisch generierten SYMBIONT_MASTER_KEY erzeugen.
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile assistant --no-interact --dir /workspace
# 2. Runtime starten. Liest .env automatisch.
docker compose up
Die Runtime-API ist jetzt unter http://localhost:8080 und HTTP Input unter http://localhost:8081 erreichbar.
Wenn Sie lieber aus einem Klon arbeiten moechten (um das Image selbst zu bauen oder Tests auszufuehren):
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont
# Einheitlichen symbi-Container erstellen
docker build -t symbi:latest .
# Entwicklungsumgebung ausfuehren
docker run --rm -it -v $(pwd):/workspace symbi:latest bash
Option 3: Lokale Installation¶
Fuer lokale Entwicklung:
# Repository klonen
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont
# Rust-Abhaengigkeiten installieren und kompilieren
cargo build --release
# Tests ausfuehren, um die Installation zu ueberpruefen
cargo test
Installation ueberpruefen¶
Testen Sie, ob alles korrekt funktioniert:
# DSL-Parser testen
cd crates/dsl && cargo run && cargo test
# Laufzeitsystem testen
cd ../runtime && cargo test
# Beispiel-Agenten ausfuehren
cargo run --example basic_agent
cargo run --example full_system
# Einheitliche symbi CLI testen
cd ../.. && cargo run -- dsl --help
cargo run -- mcp --help
# Mit Docker-Container testen
docker run --rm symbi:latest --version
docker run --rm -v $(pwd):/workspace symbi:latest dsl parse --help
docker run --rm symbi:latest mcp --help
Ohne API-Schluessel ausprobieren¶
Zwei Dinge funktionieren offline, bevor Sie einen Modellanbieter konfigurieren. Beide zeigen, was Symbiont tatsaechlich tut — beginnen Sie hier.
Ein Tool definieren und im Trockenlauf pruefen. Argumenttypen, Scope-Grenzen und Injection-Pruefungen werden erzwungen, bevor irgendetwas ausgefuehrt wird:
greet OK
✓ target (string): example → OK
Command: greet example
Cedar: Tool::Greet / execute_tool
[dry run — command not executed]
Einen Agenten auszufuehren erfordert einen Modellanbieter — entweder einen Cloud-Schluessel oder ein lokales Modell, beides unten beschrieben.
Projektinitialisierung¶
Der schnellste Weg, ein neues Symbiont-Projekt zu starten, ist symbi init:
Dies startet einen interaktiven Assistenten, der Sie durch Folgendes fuehrt:
- Profilauswahl: minimal, assistant, dev-agent oder multi-agent
- SchemaPin-Modus: tofu (Trust-On-First-Use), strict oder disabled
- Sandbox-Stufe: landlock (natives Linux), tier0 (keine, nur Entwicklung), tier1 (Docker), tier2 (gVisor / runsc) oder tier3 (Firecracker microVM)
Mit --sandbox landlock --profile dev-agent fragt der Assistent zusaetzlich nach
dem Quell-Repository, der installierten Claude-Code-Binaerdatei, der
Messages-kompatiblen Inferenz-URL, dem Modell und dem Namen der
Anmeldedaten-Umgebungsvariablen. Er erzeugt ein schreibgeschuetztes Review-Setup in
einem separaten, leeren Steuerverzeichnis. Nichtinteraktive Aufrufer muessen
--source, --managed-executable, --inference-url, --inference-model und
--inference-key-env angeben. Siehe Linux-Entwickler-Onboarding.
Was init erzeugt¶
Jeder Durchlauf schreibt:
| Datei | Zweck |
|---|---|
symbiont.toml |
Runtime- und Richtlinienkonfiguration |
policies/default.cedar |
Cedar-Richtlinie nach dem Deny-by-default-Prinzip |
agents/*.symbi |
Profilspezifische Agentendefinitionen (das Legacy-Format .dsl wird ebenfalls erkannt; ausser bei minimal) |
AGENTS.md |
Automatisch generierter Index der deklarierten Agenten |
.symbiont/audit/ |
Verzeichnis fuer manipulationssichere Audit-Logs |
.gitignore |
Ergaenzt um Symbiont-spezifische Eintraege, einschliesslich .env |
.env |
SYMBIONT_MASTER_KEY aus /dev/urandom generiert (0600-Berechtigungen) |
.env.example |
Zum Commit geeignete Vorlage mit den benoetigten Umgebungsvariablen |
docker-compose.yml |
Compose-Datei mit Volume-Mounts und Env-Verdrahtung; entfaellt bei Landlock |
Mit --no-docker-compose ueberspringen Sie die Compose-Datei, und mit --dir <PATH> schreiben Sie in ein anderes als das aktuelle Verzeichnis (unverzichtbar innerhalb eines Docker-Containers — siehe unten).
Nicht-interaktiver Modus¶
Fuer CI/CD oder skriptbasierte Setups:
init innerhalb von Docker ausfuehren¶
Da das WORKDIR des Images /var/lib/symbi ist, verwenden Sie --dir, um in Ihr gemountetes Volume zu schreiben:
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile assistant --no-interact --dir /workspace
Das fuellt das aktuelle Verzeichnis des Hosts mit dem vollstaendigen Projektbaum.
Profile¶
| Profil | Was erstellt wird |
|---|---|
minimal |
symbiont.toml + Standard-Cedar-Richtlinie |
assistant |
+ einzelner verwalteter Assistenten-Agent |
dev-agent |
+ verwalteter CLI-Agent; Landlock ergaenzt konfigurierte Lese-, Listen- und Suchwerkzeuge, eingegrenzte Richtlinien und DEVELOPMENT.md |
multi-agent |
+ Koordinator-/Worker-Agenten mit Inter-Agent-Richtlinien |
Aus dem Katalog importieren¶
Vorgefertigte Agenten neben allgemeinen Profilen importieren (der schreibgeschuetzte Landlock-Entwicklungsinitialisierer kombiniert keine Katalogimporte):
Verfuegbare Katalog-Agenten auflisten:
Nach der Initialisierung validieren und starten:
symbi dsl -f agents/assistant.symbi # Ihren Agenten validieren
symbi run assistant -i '{"query": "hello"}' # Einen einzelnen Agenten testen
symbi up # Runtime lokal starten
docker compose up # ...oder in Docker starten (liest .env)
Einen einzelnen Agenten ausfuehren¶
Verwenden Sie symbi run, um einen Agenten auszufuehren, ohne den vollstaendigen Laufzeit-Server zu starten:
Der Befehl loest Agentennamen auf, indem er zuerst den direkten Pfad und dann das agents/-Verzeichnis durchsucht. Er richtet Cloud-Inferenz ueber Umgebungsvariablen (OPENROUTER_API_KEY, OPENAI_API_KEY oder ANTHROPIC_API_KEY) ein, fuehrt die ORGA-Reasoning-Schleife aus und beendet sich.
symbi run assistant -i 'Summarize this document'
symbi run agents/recon.symbi -i '{"target": "10.0.1.5"}' --max-iterations 5
Tool-Befehle, Parser, MCP und PTY-Ausfuehrung erfordern das ausgewaehlte
Container-Backend, ein zwischengespeichertes Image mit den deklarierten
Binaerdateien sowie explizite Daten-Mounts. Nicht verfuegbare Backends koennen
nicht auf Host-Ausfuehrung zurueckfallen. Ausgewaehlte Agenteneinstellungen und
Projektstandards werden vor der Inferenz geprueft. Durchlaeufe benoetigen zudem
geschuetzten .symbiont/governed/-Speicher und geben ihre oeffentliche
Audit-Referenz aus. Siehe Befehlskonfiguration und
Durchlauf-Audit.
Ein lokales Modell verwenden¶
Der Anbieter muss kein Cloud-Dienst sein. Richten Sie OPENAI_BASE_URL auf einen beliebigen OpenAI-kompatiblen Server — Ollama, vLLM, LM Studio und llama.cpp bieten alle einen an — und es ist kein Cloud-Schluessel beteiligt:
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
export CHAT_MODEL=llama3.1
symbi run assistant -i 'hello'
Dieselben drei Variablen gelten fuer symbi up. Symbiont warnt, wenn eine Basis-URL unverschluesseltes http:// verwendet, da der Schluessel mitgesendet wird. Bei einem Modell auf dem eigenen Rechner ist das erwartet.
Aus einer Vorlage starten (symbi new)¶
symbi init erstellt ein generisches Projekt; symbi new erstellt ein Projekt rund um eine von mehreren aufgabenorientierten Vorlagen. Nuetzlich, wenn Sie die Art des benoetigten Agenten kennen, bevor Sie wissen, welche Agenten Sie brauchen.
symbi new --list # verfuegbare Vorlagen anzeigen
symbi new <template> <project-name> # neues Projekt aus einer Vorlage erstellen
Mitgelieferte Vorlagen:
| Vorlage | Was Sie erhalten |
|---|---|
webhook-min |
Minimaler Webhook-gesteuerter Agent -- HTTP-Input-Konfiguration + Handler-DSL |
webscraper-agent |
Scraping-Agent mit Cedar-Zugriffsrichtlinien und einem ToolClad-Scraper-Tool |
slm-first |
Router + SLM-Allowlist + Confidence-Fallback-Muster |
rag-lite |
Qdrant-gestuetzte Ingestion-Skripte plus ein Such-Agent |
symbi new und symbi init ergaenzen sich: new liefert einen aufgabenspezifischen Ausgangspunkt, init (+ --catalog) einen governance-spezifischen. Sie koennen beides kombinieren -- mit new einsteigen und anschliessend symbi init --catalog ... verwenden, um zusaetzliche vorgefertigte Agenten aus dem Katalog einzubinden.
Ihr erster Agent¶
Lassen Sie uns einen einfachen Datenanalyse-Agenten erstellen, um die Grundlagen von Symbi zu verstehen.
1. Agenten-Definition erstellen¶
Erstellen Sie eine neue Datei 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. Agent ausfuehren¶
# Agenten-Definition parsen und validieren
cargo run -- dsl parse my_agent.symbi
# Agent in der Laufzeitumgebung ausfuehren
cd crates/runtime && cargo run --example basic_agent -- --agent ../../my_agent.symbi
Die DSL verstehen¶
Die Symbi DSL hat mehrere Hauptkomponenten:
Metadaten-Block¶
Stellt wesentliche Informationen ueber Ihren Agenten fuer Dokumentation und Laufzeitverwaltung bereit.
Agenten-Definition¶
agent agent_name(parameter: Type) -> ReturnType {
capabilities = ["capability1", "capability2"]
// Agenten-Implementierung
}
Definiert die Schnittstelle, Faehigkeiten und das Verhalten des Agenten.
Richtlinien-Definitionen¶
policy policy_name {
allow: action_list if condition
deny: action_list if condition
audit: operation_type with audit_method
}
Deklarative Sicherheitsrichtlinien, die zur Laufzeit durchgesetzt werden.
Ausfuehrungskontext¶
Spezifiziert Laufzeitkonfiguration fuer Speicherverwaltung und Datenschutzanforderungen.
Naechste Schritte¶
Beispiele erkunden¶
Das Repository enthaelt mehrere Beispiel-Agenten:
# Grundlegender Agent-Beispiel
cd crates/runtime && cargo run --example basic_agent
# Vollstaendige Systemdemonstration
cd crates/runtime && cargo run --example full_system
# Kontext- und Speicher-Beispiel
cd crates/runtime && cargo run --example context_example
# RAG-verstaerkter Agent
cd crates/runtime && cargo run --example rag_example
Erweiterte Funktionen aktivieren¶
HTTP API (Optional)¶
# HTTP API-Funktion aktivieren
cd crates/runtime && cargo build --features http-api
# Mit API-Endpunkten ausfuehren
cd crates/runtime && cargo run --features http-api --example full_system
Wichtige API-Endpunkte:
- GET /api/v1/health - Gesundheitspruefung und Systemstatus
- GET /api/v1/agents - Alle aktiven Agenten mit Echtzeit-Ausfuehrungsstatus auflisten
- GET /api/v1/agents/{id}/status - Detaillierte Agent-Ausfuehrungsmetriken abrufen
- POST /api/v1/workflows/execute - Workflows ausfuehren
Neue Agent-Management-Funktionen: - Echtzeit-Prozessueberwachung und Gesundheitspruefungen - Ordnungsgemaesse Shutdown-Faehigkeiten fuer laufende Agenten - Umfassende Ausfuehrungsmetriken und Ressourcennutzungsverfolgung - Unterstuetzung verschiedener Ausfuehrungsmodi (ephemer, persistent, geplant, ereignisgesteuert)
Cloud-LLM-Inferenz¶
Verbindung zu Cloud-LLM-Anbietern ueber OpenRouter:
# Cloud-Inferenz aktivieren
cargo build --features cloud-llm
# API-Schluessel und Modell festlegen
export OPENROUTER_API_KEY="sk-or-..."
export OPENROUTER_MODEL="google/gemini-2.0-flash-001" # optional
Standalone Agent-Modus¶
Einzeiler fuer Cloud-native Agenten mit LLM-Inferenz:
Hinweis: Die Composio-MCP- und SymbiBot-Integration wurden in dieser Version aus Sicherheitsgruenden entfernt -- siehe SECURITY_AUDIT.md C3 fuer den Hintergrund.
Erweiterte Reasoning-Primitiven¶
Tool-Kuratierung, Stuck-Loop-Erkennung, Kontext-Pre-Fetch und verzeichnisspezifische Konventionen aktivieren:
Siehe den orga-adaptive-Leitfaden fuer die vollstaendige Dokumentation.
Cedar Policy Engine¶
Formale Autorisierung mit der Cedar-Richtliniensprache. Standardmaessig aktiv seit v1.14.x: Veroeffentlichte symbi-Binaries (crates.io, Docker, GitHub-Release-Tarballs) enthalten Cedar, und symbi up / symbi run verdrahten CedarPolicyGate beim Start automatisch aus policies/*.cedar-Dateien; sind keine vorhanden, faellt die Runtime auf den fail-closed DefaultPolicyGate zurueck. Um ohne Cedar zu bauen (z. B. wenn Sie stattdessen OpaPolicyGateBridge oder ein eigenes ReasoningPolicyGate anbinden moechten), verwenden Sie:
Vektordatenbank (integriert)¶
Symbi enthaelt LanceDB als konfigurationsfreie eingebettete Vektordatenbank. Semantische Suche und RAG funktionieren sofort -- kein separater Dienst erforderlich:
# Agent mit RAG-Funktionen ausfuehren (Vektorsuche funktioniert sofort)
cd crates/runtime && cargo run --example rag_example
# Kontextverwaltung mit erweiterter Suche testen
cd crates/runtime && cargo run --example context_example
Minimaler Build: LanceDB ist standardmaessig enthalten, kann aber fuer schlankere Binaries ausgeschlossen werden:
cargo build --no-default-features. Die Runtime faellt sauber auf ein No-op-Vektor-Backend zurueck.Skalierte Deployments: Qdrant ist als optionales Backend verfuegbar. Bauen Sie mit
--features vector-qdrantund setzen SieSYMBIONT_VECTOR_BACKEND=qdrant.
Kontextverwaltungsfunktionen: - Multi-modale Suche: Schluesselwort-, zeitliche, Aehnlichkeits- und Hybrid-Suchmodi - Wichtigkeitsberechnung: Ausgefeilter Bewertungsalgorithmus unter Beruecksichtigung von Zugriffsmustern, Aktualitaet und Benutzerfeedback - Zugriffskontrolle: Integration der Richtlinien-Engine mit agentenspezifischen Zugriffskontrollen - Automatische Archivierung: Aufbewahrungsrichtlinien mit komprimiertem Speicher und Bereinigung - Wissensaustausch: Sicherer agentenuebergreifender Wissensaustausch mit Vertrauensbewertungen
Feature Flags Referenz¶
| Feature | Beschreibung | Standard |
|---|---|---|
keychain |
OS-Keychain-Integration fuer Geheimnisse | Ja |
vector-lancedb |
LanceDB eingebettetes Vektor-Backend | Ja |
vector-qdrant |
Qdrant verteiltes Vektor-Backend | Nein |
embedding-models |
Lokale Embedding-Modelle ueber Candle | Nein |
http-api |
REST API mit Swagger UI | Nein |
http-input |
Webhook-Server mit JWT-Authentifizierung | Nein |
cloud-llm |
Cloud-LLM-Inferenz (OpenRouter) | Nein |
standalone-agent |
Cloud LLM Meta-Feature | Nein |
cedar |
Cedar Policy Engine — verdrahtet sich beim Start automatisch aus policies/*.cedar |
Yes |
orga-adaptive |
Erweiterte Reasoning-Primitiven | Nein |
cron |
Persistentes Cron-Scheduling | Nein |
cli-executor |
Verwaltete KI-CLI-Subprozesse (Claude Code etc.) — Mode B | Yes |
native-sandbox |
Native Prozess-Sandbox | Nein |
metrics |
OpenTelemetry Metriken/Tracing | Nein |
mcp-client |
MCP-gestuetzte ToolClad-Tool-Ausfuehrung ueber stdio (SchemaPin-verifiziert) | No |
toolclad-browser |
Browser-ToolClad-Backend (CDP) — nur ein Platzhalter; liefert einen expliziten Fehler, bis das CDP-Backend verfuegbar ist | No |
interactive |
Interaktive Eingabeaufforderungen fuer symbi init (dialoguer) |
Standard |
full |
Alle optionalen Runtime-, Vektor- und Policy-Features | Nein |
# Mit bestimmten Features kompilieren
cargo build --features "cloud-llm,orga-adaptive,cedar"
# Mit allem kompilieren
cargo build --features full
KI-Assistenten-Plugins¶
Symbiont bietet First-Party-Governance-Plugins fuer gaengige KI-Coding-Assistenten mit drei progressiven Schutzstufen:
- Awareness (Standard) — beratende Protokollierung aller zustandsaendernden Tool-Aufrufe
- Protection — ein blockierender Hook setzt eine lokale Deny-Liste durch (
.symbiont/local-policy.toml) - Governance — Cedar-Richtlinienauswertung, wenn
symbiim PATH liegt
Die Deny-Listen-Konfiguration ist tool-unabhaengig — dieselbe .symbiont/local-policy.toml funktioniert mit beiden 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
Siehe symbi-claude-code fuer Details.
Mode B: verwalteter Claude-Code-Subprozess¶
Ein Agent mit metadata { executor = "claude_code" } fuehrt sein CLI-Kindprozess
im ausgewaehlten Docker-/gVisor-Container mit Scratch-Speicher und privaten
Inferenz- und Tool-Kanaelen der Runtime aus. Der mitgelieferte code_reviewer ist
der Referenzagent. Konfigurieren Sie zuerst ein zwischengespeichertes
CLI-/Python-Image, explizite Backend-Quell-Mounts, registrierte ToolClad-Tools und
Cedar-Richtlinien sowie [managed_cli.inference]. Siehe
Managed-CLI-Containment fuer ein vollstaendiges Beispiel.
# /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
Der Kindprozess erhaelt keinen direkten Quell-Mount, keinen externen
Netzwerkzugriff, keinen Host-Anmeldezustand und keine Anbieter-Anmeldedaten.
Registrierte Tools vermitteln den erlaubten Datei- und Git-Zugriff. Eingebaute
Tools und automatische Erkennung sind deaktiviert. Jede Aktion erfordert eine
Autorisierung durch die Runtime; eine Start-Genehmigung autorisiert keine
nachfolgenden Aktionen. Plugins werden nicht geladen und --plugin-dir wird
abgelehnt.
| Flag / Einstellung | Zweck |
|---|---|
--target |
Quellverzeichnis, das auf einen expliziten Backend-Mount abgebildet wird |
--max-turns |
Schranke fuer den Dialog; Standard 12 |
--budget-timeout |
Wall-clock-Schranke einschliesslich Initialisierung; Standard 15m |
--budget-tokens |
Reserviertes Kontingent an Inferenz-Ausgabetokens; Standard 100000, nicht die insgesamt abgerechneten Tokens |
--approval-terminal |
Optionale Pruefung ueber das steuernde Terminal fuer verpflichtende Genehmigungen |
[managed_cli.inference] |
Expliziter Anbieter-Endpunkt, Modell und Anmeldedaten-Variable; die Anmeldedaten verbleiben in der Runtime |
Erforderliche signierte Sitzungsjournale liegen im privaten
.symbiont/governed/-Speicher. Die Runtime gibt den oeffentlichen
Verifizierungsschluessel aus. Eine fehlende Genehmigung, unsicherer Audit-Speicher,
ein nicht verfuegbares Backend oder eine fehlgeschlagene Bereinigung koennen
keinen stillen Erfolg melden. Inferenz-Antworten werden gepuffert, auch SSE,
sodass sich gestreamte Ausgabe verzoegert.
Gemini CLI¶
Die Gemini-CLI-Erweiterung bietet zusaetzliche Defense-in-Depth durch excludeTools-Manifest-Blockierung und native policies/*.toml-Durchsetzung auf Plattformebene.
Siehe symbi-gemini-cli fuer Details.
Konfiguration¶
Umgebungsvariablen¶
Richten Sie Ihre Umgebung fuer optimale Leistung ein:
# Erforderlich: 32-Byte-Hex-Schluessel zum Verschluesseln persistenter Zustaende.
# Generieren mit: openssl rand -hex 32
# `symbi init` schreibt automatisch einen in .env.
export SYMBIONT_MASTER_KEY="..."
# Grundkonfiguration
export SYMBI_LOG_LEVEL=info
export SYMBI_RUNTIME_MODE=development
# Vektorsuche funktioniert sofort mit dem integrierten LanceDB-Backend.
# Um stattdessen Qdrant zu verwenden (optional, aktiviert das `vector-qdrant`-Feature):
# export SYMBIONT_VECTOR_BACKEND=qdrant
# export QDRANT_URL=http://localhost:6333
# MCP-Integration (optional)
export MCP_SERVER_URLS="http://localhost:8080"
Sicherheitsrelevante Umgebungsvariablen (nach dem v1.13.0-Audit)¶
| Variable | Standard | Wirkung |
|---|---|---|
SYMBI_INSECURE_ALLOW_ALL |
nicht gesetzt | Wenn auf 1 gesetzt, verwenden symbi up / symbi run das permissive Policy-Gate (jeder Tool-Aufruf und jede Delegation ist erlaubt). Entspricht dem Flag --insecure-allow-all. Ein deutlicher stderr-Banner wird ausgegeben. Nur fuer lokale Entwicklung. Ohne diese Variable ist die Reasoning-Schleife fail-closed und lehnt Tool-Aufrufe sowie Delegationen ab, bis ein explizites Policy-Backend angebunden ist. |
SYMBI_REJECT_LEGACY_API_KEYS |
nicht gesetzt | Wenn auf 1 gesetzt, ueberspringt der API-Key-Validator den veralteten O(n)-Argon2-Scan fuer Schluessel ohne Praefix. Setzen Sie diese Variable unmittelbar nach der Neuausgabe aller Schluessel im Format keyid.secret. Der Legacy-Pfad wird im naechsten Minor-Release ohnehin entfernt. |
SYMBI_UNSAFE_NATIVE_SANDBOX |
nicht gesetzt | Erforderlich (zusaetzlich dazu, dass SYMBI_ENV=production nicht gesetzt ist), um den native-Sandbox-Runner zu konstruieren. Das Cargo-Feature native-sandbox schlaegt in Release-Builds zudem beim Kompilieren fehl. Der native Runner bietet keinerlei Isolation und ist ausschliesslich fuer lokales Debugging gedacht. |
SYMBI_TRUSTED_PROXIES |
nicht gesetzt | CIDR-Allowlist fuer vertrauenswuerdige Reverse-Proxies; X-Forwarded-For wird nur von diesen Adressen akzeptiert. |
Folgende Umgebungsvariablen wurden entfernt:
SYMBIONT_ALLOW_NO_JWT_AUDIENCE-- der JWT-Verifizierer verlangt jetzt immeraud. (Im Audit nach v1.13.0 entfernt; war ein unsicherer Notausgang.)COMPOSIO_API_KEY,COMPOSIO_MCP_URL-- die Composio-MCP-Integration wurde vollstaendig entfernt. SieheSECURITY_AUDIT.mdC3.
Laufzeitkonfiguration¶
Erstellen Sie eine symbi.toml-Konfigurationsdatei:
[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" # Standard; unterstuetzt auch "qdrant"
collection_name = "symbi_knowledge"
# url = "http://localhost:6333" # nur erforderlich bei backend = "qdrant"
Human-in-the-Loop-Genehmigungen¶
Genehmigungspflichten aus Manifest und Subcommand bleiben verbindlich, auch wenn Cedar einen Aufruf erlaubt. Die gemeinsame Warteschlange haelt jede Anfrage bis zu einer autorisierten Entscheidung, zum Ablauf oder zum Abbruch. Ein blockierter Notifier kann keine andere Genehmigungsoberflaeche blockieren.
- Gewoehnliche/verwaltete CLI: Fuegen Sie
--approval-terminalhinzu, optional mit--approval-timeout 120(1–3600 Sekunden). Pruefen Sie das vollstaendige escapte JSON und geben Sieapprove <request-id>exakt auf dem steuernden Terminal ein. Ohne das Flag schlagen genehmigungspflichtige Aufrufe fail-closed fehl. - REST: Authentifiziertes
GET /api/v1/approvals,POST /api/v1/approvals/{id}/approveund.../denyloesen ausstehende Anfragen auf. - Shell: Ctrl+G oeffnet das Gate-Panel auch waehrend eines laufenden Turns.
Waehlen Sie mit ↑/↓, druecken Sie Enter, um die vollstaendige Anfrage zu pruefen,
scrollen Sie, und druecken Sie dann
aoderd./gateoeffnet das Panel ebenfalls. Eine Listenzeile allein kann nicht genehmigen. - Chat: Ein auf der Allowlist stehender Absender verwendet
/symbi gate show <id>und kopiert dann/symbi gate approve <id> <review-digest>aus der vollstaendigen Pruefung, oder sendet/symbi gate deny <id>. Genehmigungen nur per ID werden abgelehnt. Uebergrosse Nachrichten benoetigen eine weitere angebundene Pruefoberflaeche.
Geaenderte, abgelaufene oder entfernte Anfragen erfordern eine neue Pruefung. Die TUI meldet Aufloesungsfehler und unbekannte Ergebnisse explizit. Eine Genehmigung ist die Erlaubnis, das Gate zu passieren; pruefen Sie die tatsaechliche Ausfuehrung im signierten Durchlauf-Audit. Slack erfordert in jeder Umgebung ein nicht leeres Signing Secret und gueltige Callback-Signaturen. Die frueher moegliche Umgehung unsignierter Callbacks wird nicht mehr unterstuetzt. Siehe Genehmigungslebenszyklus fuer Grenzen und Vertrauensannahmen.
Konfigurieren Sie das Timeout und die Chat-Genehmigungskanaele in 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
Haeufige Probleme¶
Docker-Probleme¶
Problem: Docker-Build schlaegt mit Berechtigungsfehlern fehl
# Loesung: Sicherstellen, dass Docker-Daemon laeuft und Benutzer Berechtigungen hat
sudo systemctl start docker
sudo usermod -aG docker $USER
Problem: Container beendet sich sofort
Rust-Build-Probleme¶
Problem: Cargo-Build schlaegt mit Abhaengigkeitsfehlern fehl
Problem: Fehlende Systemabhaengigkeiten
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential pkg-config libssl-dev
# macOS
brew install pkg-config openssl
Laufzeit-Probleme¶
Problem: Agent startet nicht
# Agenten-Definitionssyntax ueberpruefen
cargo run -- dsl parse your_agent.symbi
# Debug-Protokollierung aktivieren
RUST_LOG=debug cd crates/runtime && cargo run --example basic_agent
Hilfe erhalten¶
Dokumentation¶
- DSL-Leitfaden - Vollstaendige DSL-Referenz
- Laufzeit-Architektur - Details zur Systemarchitektur
- Sicherheitsmodell - Sicherheits- und Richtliniendokumentation
Community-Support¶
- Issues: GitHub Issues
- Diskussionen: GitHub Discussions
- Dokumentation: Vollstaendige API-Referenz
Debug-Modus¶
Fuer die Fehlerbehebung detaillierte Protokollierung aktivieren:
# Debug-Protokollierung aktivieren
export RUST_LOG=symbi=debug
# Mit detaillierter Ausgabe ausfuehren
cd crates/runtime && cargo run --example basic_agent 2>&1 | tee debug.log
Was kommt als naechstes?¶
Jetzt, da Sie Symbi zum Laufen gebracht haben, erkunden Sie diese fortgeschrittenen Themen:
- DSL-Leitfaden - Erweiterte DSL-Funktionen lernen
- Reasoning-Loop-Leitfaden - Den ORGA-Zyklus verstehen
- Erweitertes Reasoning (orga-adaptive) - Tool-Kuratierung, Stuck-Loop-Erkennung, Pre-Hydration
- Laufzeit-Architektur - Systeminternas verstehen
- Sicherheitsmodell - Sicherheitsrichtlinien implementieren
- Beitragen - Zum Projekt beitragen
Bereit, etwas Grossartiges zu bauen? Beginnen Sie mit unseren Beispielprojekten oder tauchen Sie in die vollstaendige Spezifikation ein.
