Aller au contenu

Variables d'environnement

Liste exhaustive des variables d’environnement reconnues par arka-deck. Source de vérité : .env.example à la racine, addons/cortex-lite/.env.example pour le sidecar embarqué, et la lecture effective au boot.


VariableDéfautDescription
ARKA_DECK_WEB_PORT3117Port HTTP du serveur
ARKA_DECK_WEB_HOST127.0.0.1 (ou 0.0.0.0 si --lan)Adresse de bind
ARKA_DECK_WEB_LAN0Active le mode LAN si 1, true ou yes (priorité 2, cf. CLI)
ARKA_DECK_WEB_BASE_URLdérivée du host/portOverride l’URL publique exposée par le serveur (callbacks OAuth, liens)
ARKA_DECK_LOGinfoNiveau de log Fastify (fatal/error/warn/info/debug/trace/silent)
ARKA_DECK_RATE_LIMIT_MAX300Plafond rate limit / minute
ARKA_DECK_RATE_LIMIT_WINDOW1 minuteFenêtre du rate limit (syntaxe Fastify rate-limit)

VariableDéfautDescription
ARKA_DECK_HOME~/.arka-deck/Override du dossier global utilisateur
ARKA_PLATFORM_DIRspécifique à la plateformeOverride du dossier data plateforme (avancé)

VariableDéfautDescription
ARKA_DECK_CORTEX_URLhttps://public.arkalabs.appEndpoint Cortex pour le catalogue (lecture seule)
ARKA_DECK_CORTEX_MCP_URLhttps://mcp.public.arkalabs.appEndpoint MCP Cortex pour les agents
ARKA_DECK_CORTEX_RUNTIME_URL(non défini, fallback loopback)Endpoint runtime Cortex dédié

Par défaut, les overrides ARKA_DECK_CORTEX_URL, ARKA_DECK_CORTEX_MCP_URL et ARKA_DECK_CORTEX_RUNTIME_URL n’acceptent que :

  • Le loopback (127.0.0.1, localhost) — pour Cortex Lite local
  • Les hosts HTTPS sur *.arkalabs.app

Tout autre host est refusé. Pour passer outre en développement :

Fenêtre de terminal
ARKA_DECK_CORTEX_ALLOW_UNSAFE_URL=1

Cette variable ne doit jamais être positionnée en production.

Voir ADR 0006.


Ces variables sont lues par le sidecar embarqué addons/cortex-lite (SurrealDB + Express REST + MCP stdio optionnel). Quand arka-deck lance le sidecar via Docker compose, il transmet les variables présentes dans l’environnement hôte.

Source du schéma : addons/cortex-lite/.env.example.

VariableDéfautDescription
MODEapiMode process : api (HTTP REST) ou mcp (stdio MCP)
PORT9100Port HTTP (bind loopback 127.0.0.1:${PORT}:9100 via docker-compose)
CORTEX_LITE_MCP_DISABLEDnon définiSi défini (1/true), le serveur MCP stdio n’est pas démarré même en MODE=mcp
CORTEX_LITE_COMPOSE_FILEdocker-compose.yml bundléOverride du fichier compose utilisé par le launcher
VariableDéfautDescription
SURREAL_URLhttp://127.0.0.1:8000Endpoint SurrealDB
SURREAL_USERrootUtilisateur DB
SURREAL_PASS(non défini, pas de défaut)Mot de passe DB — ne jamais réutiliser root hors sandbox éphémère
SURREAL_NScortexNamespace SurrealDB
SURREAL_DBliteDatabase SurrealDB
DB_INIT_RETRY_MS1000Délai entre tentatives de bootstrap DB (ms)
DB_INIT_MAX_ATTEMPTS30Tentatives max de bootstrap DB avant abandon
VariableDéfautDescription
API_KEYS(non défini)Tableau JSON [{ "key": "...", "role": "admin"|"readonly", "label": "..." }] — générer via openssl rand -hex 32
CORTEX_LITE_DEV_AUTHnon définiSi 1, accepte la valeur magique dev-key-lite comme clé admin. Sandbox uniquement
CORS_ORIGINloopback uniquementAllowlist séparée par virgules. * n’est accepté que si explicitement défini
ARKA_TOKEN(non défini)Token LAN partagé entre arka-deck et Cortex Lite (auto-injecté en admin)

La vérification API key utilise crypto.timingSafeEqual sur des hash SHA-256 (constant-time sur tout le cache + la branche ARKA_TOKEN).

VariableDéfautDescription
CORTEX_PUBLIC_URLhttps://public.arkalabs.appURL upstream Cortex catalogue (lecture seule)

Le sidecar applique la même policy anti-SSRF que le core arka-deck (HTTPS + arkalabs.app uniquement). L’override dev est le même ARKA_DECK_CORTEX_ALLOW_UNSAFE_URL=1 — à garder cohérent entre les deux surfaces.

L’app Express Cortex Lite n’embarque pas de middleware de rate limit. Justification :

  • le sidecar est publié en loopback uniquement (bind Docker 127.0.0.1:9100) ;
  • tout chemin de flood LAN passe par le reverse proxy Fastify arka-deck, qui applique déjà ARKA_DECK_RATE_LIMIT_MAX / ARKA_DECK_RATE_LIMIT_WINDOW ;
  • le payload est capé à 2 MB (express.json({ limit: '2mb' })).

Si Cortex Lite est un jour exposé au-delà du loopback, ajouter express-rate-limit (cible 600 req/min, allowlist 127.0.0.1) et mettre à jour cette section.

VariableDéfautDescription
INGEST_BATCH_SIZE20Atoms par batch lors du sync du catalogue public
INGEST_DELAY_MS100Délai entre batches (ms), pour ne pas saturer Cortex Public
INGEST_FETCH_CONTENTnon définiFetch du contenu complet pendant l’ingestion (1/true) ou résumé seul
SYNC_INTERVAL_HOURS24Fréquence du resync automatique
SYNC_ON_STARTtrueDéclenche un sync immédiat au démarrage

VariableDescription
ARKA_DECK_NOTION_OAUTH_CLIENT_IDOAuth client ID Notion (intégration first-party)
ARKA_DECK_NOTION_OAUTH_CLIENT_SECRETOAuth client secret Notion
ARKA_DECK_NOTION_OAUTH_REDIRECT_URIURL de callback OAuth Notion, généralement /api/connectors/installations/oauth/callback
NOTION_OAUTH_CLIENT_IDAlias legacy (déprécié ; préférer la forme ARKA_DECK_*)
NOTION_OAUTH_CLIENT_SECRETAlias legacy (déprécié ; préférer la forme ARKA_DECK_*)
NOTION_OAUTH_REDIRECT_URIAlias legacy (déprécié ; préférer la forme ARKA_DECK_*)

Les variables OAuth sont nécessaires uniquement si vous utilisez le flow OAuth navigateur Notion. Notion peut encore utiliser un token d’intégration interne.

Gmail et Google Drive n’utilisent pas de variables OAuth globales arka-deck. Leur token API/gateway et leur endpoint MCP optionnel se configurent par installation connecteur depuis l’UI.


VariableDéfautDescription
ARKA_DECK_MCP_PROBE1Si 0, la probe d’endpoint MCP n’est pas exécutée pendant les installs
ARKA_DECK_ENABLE_CUSTOM_STDIO_MCP0Active l’enregistrement de serveurs MCP STDIO personnalisés
ARKA_DECK_GOOGLE_GENAI_ALLOW_UNSAFE_BASE_URLnon définiDEV ONLY — désactive la validation anti-SSRF Google GenAI
ARKA_REFUSE_DRAFTnon définiFlag défensif pour tests : refuse l’envoi de drafts vers les connecteurs externes

VariableDescription
PLAYWRIGHT_BASE_URLURL de base pour les tests Playwright (défaut http://127.0.0.1:3117)
ARKA_E2E_PORTPort alternatif utilisé par le web server Playwright
ARKA_SMOKE_SKIP_BUILDHelper smoke : saute l’étape de build dans scripts/smoke-binary.sh

  • Mettre les overrides dans .env.local (jamais dans .env versionné).
  • Ne jamais commiter de clé API. La valeur historique dev-key-lite de Cortex Lite est refusée tant que CORTEX_LITE_DEV_AUTH=1 n’est pas explicitement positionné.
  • Pour des secrets persistents, utiliser l’UI Paramètres → Providers plutôt qu’une variable d’environnement (chiffrement AES-256-GCM).
  • Vérifier .env.example à la racine et addons/cortex-lite/.env.example pour la liste maintenue à jour.