Zum Inhalt springen
Farbschema wählenSprache wählen

Server-Umgebungsvariablen (vollständig)

Alle Variablen werden beim Start aus der Prozessumgebung gelesen. Die meisten String-Booleans akzeptieren 1 | true | yes (Groß-/Kleinschreibung bei true/yes wird ignoriert) als wahr; andere Werte gelten als falsch. Einige Flags folgen einer eigenen Regel (z. B. ist SUPACLOUD_SMTP_USE_TLS aktiv, sofern nicht 0|false|no gesetzt wird). Die verkürzte Admin-Seite deckt die wesentlichen Deployment-Variablen ab – siehe Umgebungsvariablen (Admin).

Variable Standard Hinweise
MODE dev dev lockert produktionsspezifische Schutzmaßnahmen (schwächeres JWT, keine Verschlüsselungsschlüssel-Pflicht). Für die Produktion einen anderen Wert setzen – oder die Variable weglassen.
SERVER_HOST 0.0.0.0 Bind-Adresse.
SERVER_PORT 8080 Listen-Port.
PUBLIC_URL http://localhost:<port> in dev, erforderlich in Prod Kanonischer öffentlicher Ursprung. Befüllt die CORS-Allowlist und dient zur Ableitung von Callback-URLs.
CORS_ALLOWED_ORIGINS Kommagetrennte Ursprünge, die die API aufrufen dürfen. Wenn leer, enthält die Allowlist standardmäßig PUBLIC_URL (sowie die üblichen Localhost-Dev-Ursprünge im Dev-Modus).
Variable Standard Hinweise
DATABASE_URL postgresql://supacloud:supacloud@postgres:5432/supacloud libpq-Verbindungsstring. Kann auch aus dem OpenBao-Pfad supacloud/db stammen, wenn SECRET_BACKEND=openbao.
Variable Standard Hinweise
AUTH_PROVIDER builtin Eines von builtin, oidc, authelia_proxy, oidc_proxy.
SUPACLOUD_JWT_SECRET Dev-Standard Session-Signing-Secret. ≥ 32 Bytes erforderlich. Der Dev-Standard wird für jede nicht-Loopback-PUBLIC_URL abgelehnt. Wird auch als AUTH_JWT_SECRET (Legacy) akzeptiert.
SUPACLOUD_INITIAL_ADMIN_EMAILS Kommagetrennte E-Mail-Adressen, die beim ersten Start als Workspace-Eigentümer angelegt werden. In Prod erforderlich für builtin- und oidc-Provider. Wird auch als SUPACLOUD_INITIAL_ADMIN_EMAIL akzeptiert.
AUTH_SESSION_TTL_MINUTES 480 Session-Lebensdauer (8 h).
AUTH_COOKIE_SECURE true in Prod, false in Dev Für lokales HTTP auf false setzen.
OIDC_ISSUER_URL Discovery-URL des OIDC-Providers (AUTH_PROVIDER=oidc).
OIDC_CLIENT_ID OIDC-Client-ID.
OIDC_CLIENT_SECRET OIDC-Client-Secret. Wird aus supacloud/app via Vault befüllt.
OIDC_REDIRECT_URL OIDC-Callback-URL (/api/auth/oidc/callback).
OIDC_SCOPES openid email profile Leerzeichen- oder kommagetrennt. Muss openid enthalten.
OIDC_PKCE_ENABLED true Nur für Legacy-Provider, die code_verifier ablehnen, auf false setzen.
OIDC_TOKEN_AUTH_METHOD basic basic oder post (client_secret_post).
AUTH_PROXY_USER_HEADER Remote-User Trusted-Proxy-Benutzer-Header (authelia_proxy / oidc_proxy).
AUTH_PROXY_EMAIL_HEADER Remote-Email Trusted-Proxy-E-Mail-Header.
AUTH_PROXY_NAME_HEADER Remote-Name Trusted-Proxy-Anzeigename-Header.
AUTH_PROXY_REQUIRED_HEADER Erforderlich für Proxy-Modi. Name des Headers, der vorhanden sein muss.
AUTH_PROXY_REQUIRED_VALUE Erforderlich für Proxy-Modi. Erwarteter Wert des Pflicht-Headers.
AUTH_PROXY_LOGOUT_URL Abmelde-URL des vorgelagerten Proxys, die in /config ausgegeben wird. Nur in Proxy-Auth-Modi relevant.
SUPACLOUD_SSO_AUTOREDIRECT abgeleitet on erzwingt die Einzeln-IdP-Standalone-Weiterleitung; off unterdrückt sie. Wird aus Edition und SSO-Realm-Anzahl abgeleitet, wenn nicht gesetzt.
DEFAULT_SSO_ORG Reiner Org-Slug, der als Ziel der Standalone-SSO-Weiterleitung festgelegt ist.
Variable Standard Hinweise
SECRET_BACKEND auto openbao oder env. Erkennt openbao automatisch, wenn Vault-Auth vorhanden ist; andernfalls env. Ein Tippfehler führt zu einem harten Boot-Fehler.
OPENBAO_ADDR https://vault.blockworx.tech OpenBao-/Vault-Adresse. Wird auch als VAULT_ADDR akzeptiert.
VAULT_TOKEN Direktes Token-Auth.
OPENBAO_ROLE_ID AppRole-Rollen-ID (zusammen mit OPENBAO_SECRET_ID).
OPENBAO_SECRET_ID AppRole-Secret-ID.

Mit SECRET_BACKEND=openbao werden folgende Variablen aus der supacloud/app-KV2-Map gelesen (Env gewinnt; Vault füllt Lücken): SUPACLOUD_JWT_SECRET, SUPACLOUD_CREDENTIAL_ENCRYPTION_KEY, OIDC_CLIENT_SECRET, SUPACLOUD_MCP_CONFIRMATION_SECRET, DISCORD_BOT_TOKEN, SUPACLOUD_{LINEAR,NOTION}_OAUTH_CLIENT_{ID,SECRET}, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, SUPACLOUD_SMTP_PASSWORD, BW_FINTS_WORKER_API_KEY, SUPACLOUD_OPERATOR_TOKEN, SUPACLOUD_EDITION_LICENSE, SUPACLOUD_EDITION_SECRET.

Variable Standard Hinweise
SUPACLOUD_CREDENTIAL_ENCRYPTION_KEY AES-256-Schlüssel für in der Datenbank gespeicherte Zugangsdaten. Akzeptiert rohe 32 Bytes, Hex, Base64 oder das Präfix hex:/base64:. In Prod erforderlich. Wird der Schlüssel aus Vault bezogen, wird er im Prozess gehalten und nie wieder in die Umgebung exportiert.
SUPACLOUD_MCP_CONFIRMATION_SECRET HMAC-Secret für Deploy-Tier-MCP-Bestätigungstoken (app.deploy, app.migration.apply). ≥ 32 Bytes. Ohne dieses Secret schlagen die betreffenden Tools fail-closed fehl. Wird aus supacloud/app via Vault befüllt.
Variable Standard Hinweise
SUPACLOUD_EDITION_LICENSE HS256-JWT mit dem Claim edition=enterprise. Wird gegen SUPACLOUD_EDITION_SECRET validiert. Wird aus supacloud/app via Vault befüllt.
SUPACLOUD_EDITION_SECRET Signing-Secret für die Edition-Lizenz. ≥ 32 Bytes. Wird aus supacloud/app via Vault befüllt.
SUPACLOUD_EDITION Nur Dev-Bypass: zusammen mit MODE=dev auf enterprise setzen, um die Enterprise-Edition ohne Lizenztoken zu aktivieren. Niemals in der Produktion verwenden.
Variable Standard Hinweise
AGENT_NETWORK supacloud-agents Docker-Netzwerk, dem Agent-Container beitreten.
AGENT_IMAGE_PREFIX Registry-Präfix, das Agent-Image-Namen vorangestellt wird (z. B. git.blockworx.tech/blockworx/).
AGENT_MEMORY_BYTES 2147483648 Arbeitsspeicherlimit pro Agent (Bytes).
AGENT_NANO_CPUS 2000000000 CPU-Limit pro Agent (Nano-CPUs; 2 000 000 000 = 2 vCPUs).
AGENT_PIDS_LIMIT 512 PID-Limit pro Agent.
AGENT_READ_ONLY_ROOTFS true Das Root-Dateisystem des Agents schreibgeschützt einbinden.
AGENT_TMPFS_TMP_MB 512 Obergrenze des /tmp-tmpfs im Agent-Container, in MiB.
AGENT_TMPFS_RUN_MB 64 Obergrenze des /run-tmpfs, in MiB.
AGENT_TMPFS_HOME_MB 512 Obergrenze von /home/agent — Konfiguration und Zustand der CLIs sowie der npm-Zwischenspeicher.
SUPACLOUD_AGENT_TEST_DB false Wand 6 Option C — Fähigkeits-Schranke der Instanz für den flüchtigen Postgres-Sidecar je Aufgabe. Ist sie aus, wird nie ein Sidecar erstellt. Ist sie an, bekommt eine Aufgabe nur dann einen Sidecar, wenn sie ihn wählt (task.config.test_db = true); eine nicht gewählte Aufgabe bekommt keinen. Ein explizit gesetztes TEST_DATABASE_URL des Aufrufers hat Vorrang: es wird nie überschrieben und der Sidecar unterdrückt. Der Sidecar injiziert TEST_DATABASE_URL, sein Passwort (und die volle URL) wird in den Redaktionssatz des Laufs aufgenommen, und er wird mit dem Agent-Container entfernt; kann er nicht starten, wird der Agent-Container gar nicht erst erstellt (fail closed). Die Entscheidung je Lauf, das aufgelöste Image UND das Passwort reisen mit der Runner-WorkPayload, sodass ein dispatchter Lauf denselben Sidecar bereitstellt und das Relay auf dem Hub dieselben Zugangsdaten maskiert.
AGENT_TEST_DB_IMAGE postgres:18 Image für den SUPACLOUD_AGENT_TEST_DB-Sidecar.
AGENT_TASK_TIMEOUT_MINUTES 90 Hartes Timeout pro Agent-Task.
SUPACLOUD_HARNESS_FIRST_PROGRESS_SECS 600 (opencode: 90) Uhr 1 der Fortschritts-Absicherung für CLI-Harnesses (#838): wie lange ein Harness nach dem Start überhaupt keinen Fortschritt machen darf. Eine Überschreitung stoppt den Lauf; die Task endet als harness_stalled und trägt die letzte stderr-Zeile des Harness. Der Standard ist pro Adapter. codex, qwen, copilot, gemini-agy und openclaude behalten 10 Minuten, denn vor ihrer ersten Ausgabe sind „kein Fortschritt” und „kein Byte” dieselbe Aussage — ein kurzes Fenster wäre dort nur eine kürzere Lunte am alten Wächter. opencode bekommt 90 s, und nur weil es gemessen ist: mit --print-logs kam die erste strukturierte Zeile in jedem aufgezeichneten Lauf binnen ~1 s nach dem Start. 0 schaltet sie ab; ein ungültiger Wert fällt auf den 10-Minuten-Standard zurück — falsch in der Richtung, die keinen arbeitenden Lauf töten kann.
SUPACLOUD_HARNESS_IDLE_CEILING_MINS 20 Uhr 2 der Fortschritts-Absicherung (#838): wie lange ein gestarteter Harness ohne weiteren Fortschritt bleiben darf. Anders als Uhr 1 ist diese Frist rollend — jeder Fortschritt setzt sie neu —, sie begrenzt also nie einen laufenden Task; das ist Aufgabe von AGENT_TASK_TIMEOUT_MINUTES. Eine Überschreitung beendet die Task als harness_no_progress und trägt den zuletzt genannten Schritt, den Zeitpunkt des letzten Fortschritts und die letzte Zeile des Harness. Fortschritt heißt: ein Lauf-Ereignis, eine vollständige stdout-Zeile oder eine stderr-Zeile, die einen neuen Schritt benennt — nie bloß, dass ein Byte eintraf; genau das maß der Wächter vor #838, weshalb ein Harness, der erzählte und dann hängen blieb, von niemandem überwacht wurde. 0 schaltet sie ab.
SUPACLOUD_HARNESS_LIVENESS_MINS (veraltet) Der Name der Start-Frist vor #838. Wird weiter beachtet und speist beide Uhren: er setzt die Leerlauf-Obergrenze und weitet Uhr 1 (verengt sie nie), damit eine Betreiber-Erhöhung gegen einen langsam startenden Harness erhalten bleibt, statt still gegen einen kürzeren Standard getauscht zu werden. Ein ausdrückliches 0 heißt weiterhin „keine Frist”, bei beiden. Bevorzugt die zwei Namen oben.
SUPACLOUD_HARNESS_STARTUP_NOTICE_SECS 30 Die nicht tödliche Stufe zwischen den beiden Fortschritts-Uhren (#838): solange ein Harness keinen Fortschritt macht, erscheint im Task-Feed ein sichtbarer, aber nicht tödlicher Hinweis — wie lange es schon still ist, in welchem Schritt der Harness steckt, seine letzte Zeile und welche MCP-Server der Runner konfiguriert hat. Begrenzt auf drei Hinweise für den ganzen Lauf mit verdoppelter Wartezeit (30 s, 60 s, 120 s), auf der Fortschritts-Achse statt auf der Byte-Achse — ein Harness, der erzählt und dann hängen bleibt, wird also gemeldet, ein arbeitender nicht genervt. Er stoppt nie einen Lauf; das tun nur die beiden Uhren oben. 0 schaltet ihn ab; ein ungültiger Wert fällt auf den Standard zurück.
OPENCODE_LOG_LEVEL INFO --log-level für die opencode-CLI, die der Runner seit #838 immer mit --print-logs startet. Ohne diese Flags schreibt opencode bis zur Antwort des Modells auf keinen der beiden Ströme, ein langsamer Anbieter ist dann von einem toten Harness nicht zu unterscheiden. INFO enthält die Bootstrap-Schritte und die Warnung server unavailable für einen MCP-Server, der nicht startete; DEBUG, WARN und ERROR sind die weiteren zulässigen Werte. Ein unbekannter Wert fällt auf INFO zurück. Die Logs gehen ausschliesslich nach stderr — der --format json-Ereignisstrom auf stdout bleibt unberührt.
MAX_PARALLEL_TASKS_PER_WORKSPACE 3 Gleichzeitigkeitsgrenze pro Workspace.
Variable Standard Hinweise
SUPACLOUD_CONNECTOR_EXECUTOR_MODE in_process in_process, pooled oder runner_fleet.
SUPACLOUD_CONNECTOR_EXECUTOR_IMAGE Container-Image für den pooled-Modus.
SUPACLOUD_CONNECTOR_EXECUTOR_AUTH_TOKEN Gemeinsames Token (≥ 16 Zeichen) für den pooled-Modus. Wird über das executor-exklusive Netzwerk übertragen.
SUPACLOUD_CONNECTOR_EXECUTOR_NETWORK Dediziertes Docker-Netzwerk für den Hub-↔-Executor-Verkehr im pooled-Modus.
SUPACLOUD_CONNECTOR_EXECUTOR_POOL_SIZE 2 Anzahl warmer Executor-Container im pooled-Modus.
SUPACLOUD_CONNECTOR_EXECUTOR_MAX_INFLIGHT 4 Maximale Anzahl gleichzeitig laufender Runs im pooled-Modus.
SUPACLOUD_CONNECTOR_EXECUTOR_MAX_RUNS 0 Schwellenwert für das Recycling von Containern im pooled-Modus. 0 = kein Recycling nach Run-Anzahl.
SUPACLOUD_CONNECTOR_EXECUTOR_REQUEST_TIMEOUT_SECS 60 Maximale Wartezeit auf einen freien Pool-Slot.
SUPACLOUD_SCRIPT_RUNTIME_DIR Crate-Dev/Test-Assets Absoluter Pfad zu den vorkompilierten Wasm-Script-Runtime-Komponenten (js-runner, ts-runner, py-runner). Nicht bereitgestellte Sprachen degradieren graceful.
SUPACLOUD_DOCS_DIR /app/docs, sonst das repo-interne docs/ Absoluter Pfad zum Dokumentationskorpus, den die MCP-Read-Tools docs.search / docs.get / spec.get ausliefern. Ein relativer Wert wird bewusst ignoriert. Ohne Korpus antworten die Tools mit corpus_available: false.
Variable Standard Hinweise
SUPACLOUD_HUB_MODE false Aktiviert die Weiterleitung von Tasks an eine registrierte Remote-Runner-Fleet. Bei false laufen alle Tasks lokal.
SUPACLOUD_E2E_TASK_SESSION_MINT false E2E-Bench-Fähigkeit: ein Workspace-Owner/-Admin kann die Agentensitzung eines Tasks prägen (POST /api/workspaces/{id}/tasks/{task_id}/e2e-session), damit ein Bench-Treiber die Agent-MCP-Oberfläche ohne Datenbankschreibzugriff erreicht. Wird bei MODE=prod beim Start abgelehnt; ausgeschaltet antwortet die Route mit 404.
SUPACLOUD_HUB_EVENT_RELAY false Leitet Echtzeit-Hub-Events über Postgres LISTEN/NOTIFY zwischen Server-Replicas weiter (der WS-Event-Fan-out, #623 P4). Auf einer einzelnen Replica inert; für ein Multi-Replica-Deployment aktivieren.
MODEL_CATALOG_REFRESH_HOURS 24 Wie oft der Modell-Katalog aktualisiert wird (1–720).
SUPACLOUD_CALIBRATION_BOARDS agent/latest/overall,webdev/latest/overall,text/latest/overall Welche LMArena-Bretter die Tier-Ketten-Kalibrierung liest, kommasepariert, als config[/split[/category[/shape[/max_rows]]]]. shape ist rating (Elo-Bretter) oder score (die agent-Familie) und ist standardmäßig rating; * an der Kategorie-Stelle liest jede Kategorie; max_rows begrenzt die Lesetiefe (Vorgabe 600, gemessen so, dass der overall-Block jedes Standardbretts hineinpasst). Jedes Brett bekommt sein eigenes Metrik-Token, seine eigene Snapshot-Zeile und seinen eigenen Faltungsbericht. Ein fehlerhafter Eintrag ist ein harter Fehler mit Nennung des Eintrags — es gibt keinen stillen Rückfall auf die Vorgaben.
SUPACLOUD_CALIBRATION_TIER_WEIGHTS je Stufe eingebaut Achsengewichte je Stufe für die Kalibrierungs-Frontier, kommasepariert, als stufe:qualität/preis/tempo (z. B. fast:0.2/0.5/0.3). Eine nicht genannte Stufe behält ihre eingebauten Gewichte. Die Zahlen sind VERHÄLTNISSE, keine Anteile — die Frontier rebasiert sie über die Achsen, auf denen ein Modell tatsächlich gemessen ist. Instanzweit; eine Überschreibung je Arbeitsbereich gibt es nicht.
Variable Standard Hinweise
SUPACLOUD_MANAGEMENT_API_TOKEN Bearer-Token für den Zugriff auf die M2M-Management-API. Wird auch als MANAGEMENT_API_TOKEN (Legacy) akzeptiert. Wird aus supacloud/management via Vault befüllt.
Variable Standard Hinweise
TELEGRAM_BOT_TOKEN Telegram-Control-Bot-Token. Wird aus supacloud/messaging via Vault befüllt. Bot ist deaktiviert, wenn nicht gesetzt.
TELEGRAM_BOT_USERNAME Telegram-Bot-Benutzername (ohne @). Via Vault befüllt.
TELEGRAM_WEBHOOK_SECRET Webhook-Secret für die Telegram-Update-Validierung. Via Vault befüllt.
DISCORD_BOT_TOKEN Discord-Control-Bot-Token (ADR 0032). Wird aus supacloud/app via Vault befüllt. Bot ist deaktiviert, wenn nicht gesetzt. Unabhängig von workspace-spezifischen Discord-Notify/Trigger-Ressourcen.
Variable Standard Hinweise
SUPACLOUD_SMTP_HOST Hostname des SMTP-Relays. Wenn nicht gesetzt, ist der globale SMTP-Transport deaktiviert; workspace-spezifische SMTP-Ressourcen funktionieren weiterhin.
SUPACLOUD_SMTP_PORT 587 SMTP-Port.
SUPACLOUD_SMTP_USE_TLS true TLS aktivieren.
SUPACLOUD_SMTP_STARTTLS true STARTTLS verwenden.
SUPACLOUD_SMTP_USERNAME SMTP-Auth-Benutzername.
SUPACLOUD_SMTP_PASSWORD SMTP-Auth-Passwort. Wird aus supacloud/app via Vault befüllt.
Variable Standard Hinweise
SUPACLOUD_APPS_HOSTED_FRONTEND false Aktiviert die Auslieferung von erstellten React/Svelte-App-Frontends. Erfordert SUPACLOUD_APPS_BASE_DOMAIN.
SUPACLOUD_APPS_BASE_DOMAIN Bare-Domain (z. B. supacloud.net) auf einem anderen eTLD+1 als die Control-Plane. Hosted Apps werden unter <opaque-subdomain>.<apps_base_domain> ausgeliefert. Der Boot schlägt fehl, wenn diese Domain dieselbe registrierbare Domain wie PUBLIC_URL teilt.
Variable Standard Hinweise
SUPACLOUD_LINEAR_OAUTH_CLIENT_ID Client-ID der Linear-OAuth-App. Via Vault befüllt.
SUPACLOUD_LINEAR_OAUTH_CLIENT_SECRET Client-Secret der Linear-OAuth-App. Via Vault befüllt.
SUPACLOUD_NOTION_OAUTH_CLIENT_ID Client-ID der Notion-OAuth-App. Via Vault befüllt.
SUPACLOUD_NOTION_OAUTH_CLIENT_SECRET Client-Secret der Notion-OAuth-App. Via Vault befüllt.
Variable Standard Hinweise
STRIPE_SECRET_KEY Geheimer Stripe-API-Schlüssel. Wird aus supacloud/app via Vault befüllt.
STRIPE_WEBHOOK_SECRET Stripe-Webhook-Signing-Secret. Wird aus supacloud/app via Vault befüllt.
BW_FINTS_WORKER_API_KEY Interner API-Schlüssel für den Marketplace-FinTS-Auszahlungsworker. Wird aus supacloud/app via Vault befüllt.
SUPACLOUD_OPERATOR_TOKEN Operator-Bearer-Token für privilegierte interne Aufrufe. Wird aus supacloud/app via Vault befüllt.
SUPACLOUD_METRICS_TOKEN Bearer-Token zum Schutz des /metrics-Endpunkts. Wird aus supacloud/app via Vault befüllt.