Configuration

OpenFleet uses a layered configuration model with multiple sources. Higher-priority sources override lower ones. There are 200+ configuration variables across 30+ categories — all of them optional unless marked [REQUIRED].

Load Order (Highest Priority First)

  1. CLI flags — --arg value
  2. Environment variables — export VAR=value
  3. .env file — dotenv format in your project root
  4. openfleet.config.json — structured JSON config
  5. Built-in defaults — sensible zero-config values

Configuration Files

.env — Environment Settings

The primary configuration file. Generated by openfleet --setup with inline documentation. All variables are optional unless marked [REQUIRED].

💡

Boolean flags accept true/false (preferred). Legacy 1/0 is still supported.

openfleet.config.json — Structured Config

For complex executor routing, failover, and multi-repo setups:

{
  "$schema": "./openfleet.schema.json",
  "projectName": "my-project",
  "executors": [
    {
      "name": "copilot-claude",
      "executor": "COPILOT",
      "variant": "CLAUDE_OPUS_4_6",
      "weight": 50,
      "role": "primary",
      "enabled": true
    },
    {
      "name": "codex-default",
      "executor": "CODEX",
      "variant": "DEFAULT",
      "weight": 50,
      "role": "backup",
      "enabled": true
    }
  ],
  "failover": {
    "strategy": "next-in-line",
    "maxRetries": 3,
    "cooldownMinutes": 5,
    "disableOnConsecutiveFailures": 3
  },
  "distribution": "weighted"
}

Task Claims & Coordination

Shared state enables distributed task coordination across multiple agents and workstations with atomic claims, heartbeat liveness, and conflict resolution.

VariableDefaultDescription
SHARED_STATE_ENABLEDtrueEnable distributed task coordination
SHARED_STATE_HEARTBEAT_INTERVAL_MS60000Heartbeat renewal interval (1 min)
SHARED_STATE_STALE_THRESHOLD_MS300000When to consider claims stale (5 min)
SHARED_STATE_MAX_RETRIES3Max retries before permanently ignoring a task
TASK_CLAIM_OWNER_STALE_TTL_MS600000Stale local claim detection threshold (10 min)
TASK_CLAIM_RENEW_INTERVAL_MS300000Renew active claim while agent is running

Project Identity

VariableDefaultDescription
PROJECT_NAMEauto-detectedProject name shown in logs and Telegram
GITHUB_REPOauto-detectedGitHub repo in owner/repo format
REPO_ROOTauto-detectedRepository root path (written by setup)

Executor Configuration

VariableDefaultDescription
EXECUTORS—Shorthand: ENGINE:VARIANT:WEIGHT,...
EXECUTOR_MODEvkvk, internal, or hybrid
EXECUTOR_DISTRIBUTIONweightedweighted, round-robin, or primary-only
MAX_PARALLEL6Max concurrent agent executions
PRIMARY_AGENTautoOverride primary: codex-sdk, copilot-sdk, or claude-sdk
PRIMARY_AGENT_DISABLEDfalseDisable the primary agent adapter

Executor Shorthand Syntax

EXECUTORS=ENGINE:VARIANT:WEIGHT,ENGINE:VARIANT:WEIGHT

# Examples:
EXECUTORS=COPILOT:CLAUDE_OPUS_4_6:50,CODEX:DEFAULT:50
EXECUTORS=CODEX:DEFAULT:100
EXECUTORS=COPILOT:GPT_4_1:30,COPILOT:CLAUDE_OPUS_4_6:40,CODEX:DEFAULT:30

Failover Configuration

Controls what happens when an executor fails repeatedly.

VariableDefaultDescription
FAILOVER_STRATEGYnext-in-linenext-in-line, weighted-random, or round-robin
FAILOVER_MAX_RETRIES3Max retries before switching executor
FAILOVER_COOLDOWN_MIN5Minutes to disable an executor after failure
FAILOVER_DISABLE_AFTER3Disable executor after N consecutive failures

Internal Executor

Controls local task execution via agent-pool instead of (or alongside) VK's cloud executor.

VariableDefaultDescription
INTERNAL_EXECUTOR_PARALLEL3Max concurrent agent slots
INTERNAL_EXECUTOR_POLL_MS30000How often to poll kanban for new tasks
INTERNAL_EXECUTOR_SDKautoSDK: auto, codex, copilot, or claude
INTERNAL_EXECUTOR_TIMEOUT_MS5400000Timeout per task execution (90 min)
INTERNAL_EXECUTOR_MAX_RETRIES2Max retries per task
INTERNAL_EXECUTOR_REVIEW_AGENT_ENABLEDtrueEnable review handoff agent for completed PRs
INTERNAL_EXECUTOR_REVIEW_MAX_CONCURRENT2Max concurrent reviews
INTERNAL_EXECUTOR_REVIEW_TIMEOUT_MS300000Review timeout per run (5 min)
INTERNAL_EXECUTOR_REPLENISH_ENABLEDfalseAuto-create new tasks when backlog is low
INTERNAL_EXECUTOR_REPLENISH_MIN_NEW_TASKS1Minimum tasks to generate per cycle
INTERNAL_EXECUTOR_REPLENISH_MAX_NEW_TASKS2Maximum tasks to generate per cycle
PROJECT_REQUIREMENTS_PROFILE—simple-feature, feature, large-feature, system, multi-system

SDK Transport

VariableDefaultDescription
CODEX_TRANSPORTsdksdk, auto, or cli
COPILOT_TRANSPORTsdksdk, auto, cli, or url
CLAUDE_TRANSPORTsdksdk, auto, or cli

Kanban / Task Board

Task-board backend selection and sync policy. Supports internal store, GitHub Issues, GitHub Projects v2, and Jira.

VariableDefaultDescription
KANBAN_BACKENDinternalinternal, vk, github, or jira
KANBAN_SYNC_POLICYinternal-primaryinternal-primary or bidirectional
KANBAN_PROJECT_ID—Explicit kanban project ID (overrides auto-detection)

GitHub Issues Backend

VariableDefaultDescription
GITHUB_PROJECT_MODEissuesissues or kanban (Projects v2)
GITHUB_PROJECT_OWNER—Org or user for Projects v2
GITHUB_PROJECT_NUMBER—Project board number
GITHUB_PROJECT_TITLE—Project title for display
GITHUB_PROJECT_AUTO_SYNCtrueAuto-sync task status to project board
GITHUB_DEFAULT_ASSIGNEE—Default assignee for new tasks
GITHUB_AUTO_ASSIGN_CREATORtrueAuto-assign task creator when creating issues
OPENFLEET_TASK_LABELopenfleetLabel used to scope tasks (only matching labels picked up)
OPENFLEET_ENFORCE_TASK_LABELtrueOnly process issues with the scoping label
GITHUB_ISSUES_LIST_LIMIT1000Max issues per sync/poll cycle

GitHub Projects v2 Status Mapping

GITHUB_PROJECT_STATUS_TODO=Todo
GITHUB_PROJECT_STATUS_INPROGRESS=In Progress
GITHUB_PROJECT_STATUS_INREVIEW=In Review
GITHUB_PROJECT_STATUS_DONE=Done
GITHUB_PROJECT_STATUS_CANCELLED=Cancelled

GitHub Projects v2 Webhooks

VariableDefaultDescription
GITHUB_PROJECT_WEBHOOK_PATH/api/webhooks/github/project-syncWebhook endpoint served by ui-server
GITHUB_PROJECT_WEBHOOK_SECRET—Secret for X-Hub-Signature-256 validation
GITHUB_PROJECT_WEBHOOK_REQUIRE_SIGNATUREtrueRequire webhook signature validation

Jira Backend

Full Jira Cloud integration with status mapping, custom fields, and ADF comments.

VariableDefaultDescription
JIRA_BASE_URL—Jira Cloud site URL (no trailing slash)
JIRA_EMAIL—Jira user email for Basic auth
JIRA_API_TOKEN—Jira API token
JIRA_PROJECT_KEY—Default project key (e.g., ENG)
JIRA_ISSUE_TYPETaskIssue type for task creation
JIRA_DEFAULT_ASSIGNEE—Default assignee account ID
JIRA_USE_ADF_COMMENTStrueUse Atlassian Document Format for comments
JIRA_ENFORCE_TASK_LABELtrueOnly process issues with scoping labels
JIRA_ISSUES_LIST_LIMIT250Max issues per sync/poll cycle

Jira Status Mapping

JIRA_STATUS_TODO=To Do
JIRA_STATUS_INPROGRESS=In Progress
JIRA_STATUS_INREVIEW=In Review
JIRA_STATUS_DONE=Done
JIRA_STATUS_CANCELLED=Cancelled

Telegram Bot

Full bot with 30+ commands, inline keyboards, and rich notification system.

VariableDefaultDescription
TELEGRAM_BOT_TOKEN—Bot token from @BotFather
TELEGRAM_CHAT_ID—Your chat ID (use openfleet-chat-id)
TELEGRAM_ALLOWED_CHAT_IDS—Additional allow-list entries (comma-separated)
TELEGRAM_INTERVAL_MIN10Status summary interval in minutes
TELEGRAM_COMMAND_POLL_TIMEOUT_SEC20Long-poll timeout for getUpdates
TELEGRAM_AGENT_TIMEOUT_MS5400000Agent timeout for Telegram-triggered runs (90 min)
TELEGRAM_COMMAND_CONCURRENCY2Max concurrent command handlers
TELEGRAM_API_BASE_URL—Override API base URL for proxy/gateway
TELEGRAM_HTTP_TIMEOUT_MS15000HTTP timeout per request
TELEGRAM_RETRY_ATTEMPTS4Max retries for transient failures
TELEGRAM_RETRY_BASE_MS600Base retry backoff (exponential with jitter)
TELEGRAM_CURL_FALLBACKtrueCurl fallback when Node fetch fails (Linux/macOS)

Notification Batching

VariableDefaultDescription
TELEGRAM_BATCH_NOTIFICATIONStrueBatch into periodic summaries
TELEGRAM_BATCH_INTERVAL_SEC300Batch summary interval (5 min)
TELEGRAM_BATCH_MAX_SIZE50Max messages before forcing a flush
TELEGRAM_IMMEDIATE_PRIORITY1Priority threshold for immediate delivery (1=critical)
TELEGRAM_VERBOSITYsummaryminimal, summary, or detailed

Telegram Mini App

7-tab web dashboard: Dashboard, Tasks, Agents, Infra, Control, Logs, Settings.

VariableDefaultDescription
TELEGRAM_MINIAPP_ENABLEDfalseEnable the Mini App server
TELEGRAM_UI_PORT—HTTP port for Mini App (required when enabled)
TELEGRAM_UI_HOST0.0.0.0Bind address
TELEGRAM_UI_PUBLIC_HOSTauto-detectPublic hostname override (for tunnels)
TELEGRAM_UI_BASE_URL—Full public URL override (HTTPS)
TELEGRAM_UI_ALLOW_UNSAFEfalseSkip initData auth (local testing only)
TELEGRAM_UI_AUTH_MAX_AGE_SEC86400Auth token max age (24h)

Cloudflare Tunnel

Provides persistent HTTPS for the Mini App. Two modes:

VariableDefaultDescription
TELEGRAM_UI_TUNNELautoauto, cloudflared, or disabled
CLOUDFLARE_TUNNEL_NAME—Named tunnel name (leave blank for quick)
CLOUDFLARE_TUNNEL_CREDENTIALS—Path to tunnel credentials JSON

Telegram Sentinel

Independent watchdog that maintains Telegram command availability even when openfleet is down. Can auto-restart, detect crash loops, and run repair-agent.

VariableDefaultDescription
OPENFLEET_SENTINEL_AUTO_STARTfalseAuto-start sentinel with openfleet
SENTINEL_AUTO_RESTART_MONITORtrueAuto-restart monitor when down
SENTINEL_CRASH_LOOP_THRESHOLD3Crash-loop threshold
SENTINEL_CRASH_LOOP_WINDOW_MIN10Crash-loop rolling window (min)
SENTINEL_REPAIR_AGENT_ENABLEDtrueRun repair-agent on crash-loop
SENTINEL_REPAIR_COOLDOWN_MIN15Cooldown between repair runs
SENTINEL_REPAIR_TIMEOUT_MIN20Repair agent timeout
SENTINEL_PRIMARY_AGENT_FALLBACK_ENABLEDtrueFallback to primary agent while monitor is down
SENTINEL_RESTART_BACKOFF_SEC5Backoff before restart attempts
SENTINEL_MANUAL_STOP_HOLD_MIN10Suppress auto-restart after manual /stop

Presence & Multi-Instance

Discover multiple openfleet instances across machines.

VariableDefaultDescription
TELEGRAM_PRESENCE_INTERVAL_SEC60Heartbeat interval
TELEGRAM_PRESENCE_TTL_SEC180Offline threshold
TELEGRAM_PRESENCE_DISABLEDfalseDisable heartbeats entirely
VE_INSTANCE_IDauto-generatedStable instance ID across restarts
VE_INSTANCE_LABELworkspace nameHuman-friendly label in /presence
VE_COORDINATOR_PRIORITY10/100Election priority (lower wins)
VE_COORDINATOR_ELIGIBLEtrueOpt into coordinator election

WhatsApp Channel

Optional notification/command channel using @whiskeysockets/baileys.

VariableDefaultDescription
WHATSAPP_ENABLEDfalseEnable WhatsApp channel
WHATSAPP_CHAT_ID—Restrict to a specific chat JID
WHATSAPP_ASSISTANT_NAMEproject nameBot name prefix for outbound messages
WHATSAPP_STORE_DIR.cache/whatsapp-storeAuth/session data directory
WHATSAPP_PHONE_NUMBER—Phone number for pairing code auth

Container Isolation

Run agent tasks inside Docker, Podman, or Apple Container for security isolation.

VariableDefaultDescription
CONTAINER_ENABLEDfalseEnable container isolation
CONTAINER_RUNTIMEdockerdocker, podman, or container (macOS)
CONTAINER_IMAGEnode:22-slimContainer image for execution
CONTAINER_TIMEOUT_MS1800000Timeout per container (30 min)
CONTAINER_MAX_OUTPUT_SIZE10485760Max output size (10 MB)
MAX_CONCURRENT_CONTAINERS3Max concurrent containers
CONTAINER_MEMORY_LIMIT—Docker/Podman memory limit (e.g., 4g)
CONTAINER_CPU_LIMIT—Docker/Podman CPU limit (e.g., 2)

Codex SDK

Sandbox Policy

VariableDefaultDescription
CODEX_SANDBOXworkspace-writeworkspace-write, danger-full-access, or read-only
CODEX_SANDBOX_PERMISSIONSdisk-full-write-accessComma-separated sandbox permission entries
CODEX_SANDBOX_WRITABLE_ROOTSrepo rootComma-separated writable root paths
CODEX_SHELL_ENV_POLICYallall, none, or custom policy
CODEX_AGENT_MAX_THREADS6Max concurrent agent threads per session

Feature Flags

VariableDefaultDescription
CODEX_FEATURES_CHILD_AGENTS_MDtrueSub-agent discovery via CODEX.md
CODEX_FEATURES_MEMORY_TOOLtruePersistent memory across sessions
CODEX_FEATURES_UNDOtrueUndo/rollback support
CODEX_FEATURES_COLLABtrueCollaboration mode
CODEX_FEATURES_BWRAPtrueBubblewrap sandbox (disable if userns blocked)
CODEX_FEATURES_SHELL_TOOLtrueShell tool access
CODEX_SDK_DISABLEDfalseDisable all Codex/AI features

AI Provider / Model

VariableDefaultDescription
OPENAI_API_KEY—OpenAI API key
OPENAI_BASE_URLhttps://api.openai.com/v1API base URL
CODEX_MODELgpt-4oDefault Codex model
CODEX_SUBAGENT_MODEL—Model for sub-agents
CODEX_MODEL_PROFILE—Named profile for model switching

Copilot SDK

GitHub Copilot CLI integration with full model access, MCP tools, and sub-agents.

VariableDefaultDescription
COPILOT_SDK_DISABLEDfalseDisable Copilot SDK usage
COPILOT_MODEL—Model override (e.g., gpt-5)
COPILOT_SESSION_MODElocallocal, remote, or auto
COPILOT_AUTO_APPROVE_PERMISSIONStrueAuto-approve SDK permission requests
COPILOT_ALLOW_ALLtrueAllow all tools/paths/URLs
COPILOT_CLI_PATHcopilotPath to Copilot CLI binary
COPILOT_MCP_CONFIG—MCP server config path (e.g., .vscode/mcp.json)
COPILOT_REASONING_EFFORThighlow, medium, high, or xhigh
COPILOT_AGENT_MAX_REQUESTS500Max requests per agent session
COPILOT_NO_EXPERIMENTALfalseDisable experimental features (/fleet, autopilot)
COPILOT_ENABLE_ASK_USERfalseRe-enable ask_user tool (blocks for input)
COPILOT_DISABLE_PARALLEL_TOOLSfalseDisable parallel tool execution

Claude SDK

Claude Code integration for autonomous agent operations.

VariableDefaultDescription
CLAUDE_SDK_DISABLEDfalseDisable Claude SDK features
CLAUDE_MODELclaude-opus-4-6Claude model
CLAUDE_PERMISSION_MODEbypassPermissionsPermission handling mode
CLAUDE_MAX_TURNS0Max turns (0 = unlimited)
CLAUDE_ALLOWED_TOOLSallComma-separated allowed tools
ANTHROPIC_API_KEY—Anthropic API key

Agent Pool

Ephemeral agent pool for concurrent operations.

VariableDefaultDescription
AGENT_POOL_SDKautocodex, copilot, or claude
AGENT_POOL_MODEL—Default model for agent pool threads

Agent Hooks

Lifecycle hooks scaffolded across Codex, Claude, and Copilot agents. Configured in .codex/hooks.json, .claude/settings.local.json, and .github/hooks/openfleet.hooks.json.

VariableDefaultDescription
OPENFLEET_HOOK_PROFILEstrictstrict, balanced, lightweight, or none
OPENFLEET_HOOK_TARGETScodex,claude,copilotWhich agents receive hook files
OPENFLEET_HOOKS_ENABLEDtrueEnable hook scaffolding during setup
OPENFLEET_HOOKS_OVERWRITEfalseOverwrite existing hook files
OPENFLEET_HOOKS_BUILTINS_MODEforceforce, auto, or off

Per-Event Command Overrides

OPENFLEET_HOOK_PREPUSH=go vet ./...;;go build ./...
OPENFLEET_HOOK_PRECOMMIT=gofmt -l .
OPENFLEET_HOOK_TASK_COMPLETE=echo "task completed"
OPENFLEET_HOOK_SESSION_START=echo "session start"
OPENFLEET_HOOK_SESSION_STOP=echo "session stop"

Daemon Mode

Run openfleet as a background daemon with crash supervision.

VariableDefaultDescription
OPENFLEET_DAEMON_RESTART_DELAY_MS5000Delay before child restart
OPENFLEET_DAEMON_MAX_RESTARTS0Max restarts (0 = unlimited)
OPENFLEET_DAEMON_INSTANT_CRASH_WINDOW_MS15000Instant startup failure window
OPENFLEET_DAEMON_MAX_INSTANT_RESTARTS3Stop after N instant failures

Vibe-Kanban

VariableDefaultDescription
VK_BASE_URLhttp://127.0.0.1:54089VK API base URL
VK_RECOVERY_PORT54089VK recovery port
VK_NO_SPAWNfalsePrevent auto-spawning VK
VK_RECOVERY_COOLDOWN_MIN10Cooldown between recovery attempts
VK_ENSURE_INTERVAL60000VK health check interval (ms)
VK_PUBLIC_URL—Public URL shown in Telegram links

GitHub

VariableDefaultDescription
GITHUB_REPOauto-detectedowner/repo slug
GITHUB_TOKEN—GitHub API token for PR lookups
GH_TOKEN—Alternative token env var
OPENfleet_TASK_UPSTREAM—Default base branch for tasks
VK_TARGET_BRANCHorigin/mainTarget branch for PR checks/merge

Merge Strategy

Codex-powered PR decision engine analyzing agent output to decide: merge, prompt, close, re-attempt, review, or wait.

VariableDefaultDescription
CODEX_ANALYZE_MERGE_STRATEGYtrueEnable merge strategy analysis
MERGE_STRATEGY_TIMEOUT_MS600000Analysis timeout (10 min)
MERGE_STRATEGY_MODEsmartsmart or smart+codexsdk
MERGE_CONFLICT_RESOLUTION_TIMEOUT_MS600000Conflict resolution timeout

Autofix Mode

VariableDefaultDescription
AUTOFIX_MODEautoauto (detect), execute (apply fixes), or analyze (suggestions only)

Task Planner

VariableDefaultDescription
TASK_PLANNER_MODEkanbankanban, codex-sdk, or disabled
TASK_PLANNER_PER_CAPITA_THRESHOLD1Trigger planner when backlog-per-slot drops below
TASK_PLANNER_IDLE_SLOT_THRESHOLD1Trigger when idle slots meet threshold
TASK_PLANNER_DEDUP_HOURS6De-duplication window

Complexity Routing

Automatically select AI models based on task size labels: [xs], [s], [m], [l], [xl], [xxl].

VariableDefaultDescription
COMPLEXITY_ROUTING_ENABLEDtrueEnable size-based model selection
COMPLEXITY_ROUTING_CODEX_LOW_MODEL—Codex model for [xs]/[s] tasks
COMPLEXITY_ROUTING_CODEX_MEDIUM_MODEL—Codex model for [m] tasks
COMPLEXITY_ROUTING_CODEX_HIGH_MODEL—Codex model for [l]/[xl]/[xxl] tasks
COMPLEXITY_ROUTING_COPILOT_LOW_MODEL—Copilot model for small tasks
COMPLEXITY_ROUTING_COPILOT_MEDIUM_MODEL—Copilot model for medium tasks
COMPLEXITY_ROUTING_COPILOT_HIGH_MODEL—Copilot model for large tasks

CI Sweep

VariableDefaultDescription
VE_CI_SWEEP_EVERY15Trigger CI sweep after N completed tasks (0 disables)
VE_CI_SWEEP_PR_EVERY15Backup trigger after N merged PRs
VE_CI_SWEEP_PR_BACKUPtrueEnable PR-based backup trigger
COPILOT_CLOUD_DISABLEDtrueDisable Copilot cloud triggers (PR comments)
COPILOT_LOCAL_RESOLUTIONagentagent or codex when cloud is disabled

Dependabot Auto-Merge

VariableDefaultDescription
DEPENDABOT_AUTO_MERGEtrueAuto-merge bot PRs after CI passes
DEPENDABOT_AUTO_MERGE_INTERVAL_MIN10Check frequency (minutes)
DEPENDABOT_MERGE_METHODsquashsquash, merge, or rebase
DEPENDABOT_AUTHORSdependabot[bot],app/dependabotComma-separated PR authors to auto-merge

Stale Task Recovery

VariableDefaultDescription
STALE_TASK_AGE_HOURS3Immediate recovery threshold (hours)
RECOVERY_CACHE_ENABLEDtruePersistent recovery cache (reduce scan spam)
RECOVERY_CACHE_MAX2000Max entries per cache section
RECOVERY_LOG_DEDUP_MINUTES30Suppress repeated "no attempt" logs (min)

GitHub Issue Reconciler

Periodically reconciles open GitHub issues against open/merged PRs with hybrid close policy.

VariableDefaultDescription
GH_RECONCILE_ENABLEDtrueEnable reconciliation
GH_RECONCILE_INTERVAL_MS300000Reconciliation interval (5 min)
GH_RECONCILE_MERGED_LOOKBACK_HOURS72Merged PR lookback window
GH_RECONCILE_TRACKING_LABELStrackingLabels for tracking/meta issues (kept open)

Completed Task Archive

VariableDefaultDescription
VE_COMPLETED_TASK_ARCHIVE_ENABLEDtrueEnable automatic archival
VE_COMPLETED_TASK_ARCHIVE_AGE_HOURS24Only archive tasks older than (hours)
VE_COMPLETED_TASK_ARCHIVE_INTERVAL_MIN30Min minutes between archive runs
VE_COMPLETED_TASK_ARCHIVE_MAX200Max tasks per run

Git Identity

VariableDefaultDescription
VE_GIT_AUTHOR_NAME—Override git author name for automated commits
VE_GIT_AUTHOR_EMAIL—Override git author email for automated commits

Agent Work Logging & Analytics

Structured logging for real-time monitoring and offline analysis, with error loop detection and stuck agent alerts.

VariableDefaultDescription
AGENT_WORK_LOGGING_ENABLEDtrueEnable agent work logging
AGENT_WORK_ANALYZER_ENABLEDtrueEnable live stream analyzer
AGENT_WORK_LOG_DIR.cache/agent-work-logsLog directory
AGENT_SESSION_LOG_RETENTION100Keep last N session transcripts
AGENT_WORK_LOG_MAX_SIZE_MB500Max log size before rotation

Detection Thresholds

VariableDefaultDescription
AGENT_ERROR_LOOP_THRESHOLD4Alert after N repeated errors in 10-min window
AGENT_TOOL_LOOP_THRESHOLD10Alert after N rapid tool calls in 1-min window
AGENT_STUCK_THRESHOLD_MS300000Idle agent alert threshold (5 min)
AGENT_COST_ANOMALY_THRESHOLD1.0Alert if session costs more than $N

Prompt Overrides

OpenFleet scaffolds generic prompt templates under .openfleet/agents/*.md. Override paths:

VariableDefaultDescription
OPENFLEET_PROMPT_PLANNER.openfleet/agents/task-planner.mdTask planner prompt
OPENFLEET_PROMPT_MONITOR_MONITOR.openfleet/agents/monitor-monitor.mdMonitor-monitor prompt
OPENFLEET_PROMPT_TASK_EXECUTOR.openfleet/agents/task-executor.mdTask executor prompt
OPENFLEET_PROMPT_REVIEWER.openfleet/agents/reviewer.mdPR reviewer prompt

Advanced Settings

VariableDefaultDescription
OPENFLEET_DIRauto-detectedConfig directory path
MAX_RESTARTS0Max orchestrator restarts (0 = unlimited)
RESTART_DELAY_MS10000Delay before restart
LOG_DIR./logsLog directory
LOG_MAX_SIZE_MB500Max log folder size (MB). 0 = unlimited
LOG_CLEANUP_INTERVAL_MIN30How often to check folder size
SELF_RESTART_WATCH_ENABLEDdevmodeMonitor source hot-reload watcher
DEVMODEfalseEnable development mode

Recommended Profiles

Local Development

DEVMODE=true
DEVMODE_MONITOR_MONITOR_ENABLED=true
CODEX_TRANSPORT=sdk
COPILOT_TRANSPORT=sdk
CLAUDE_TRANSPORT=sdk
EXECUTOR_MODE=internal
KANBAN_BACKEND=internal

Production / End-User

DEVMODE=false
DEVMODE_MONITOR_MONITOR_ENABLED=false
CODEX_TRANSPORT=sdk
COPILOT_TRANSPORT=sdk
CLAUDE_TRANSPORT=sdk
EXECUTOR_MODE=internal
KANBAN_BACKEND=github
KANBAN_SYNC_POLICY=bidirectional
â„šī¸

See .env.example in the repository for the complete list of all documented variables with inline comments.