Runtime Configuration
Reference Assembly Line runtime and operator environment variables.
This page lists runtime and operator environment variables. For agent authoring,
use the Declarative Reference; it is the single
source for every accepted agent.md field, default, profile, and exception.
Provider credentials are grouped in Adapters, and deployment
behavior is covered in Runtime And Deployment.
Committed Production Configuration
agent/config.production.ts holds shared non-secret runtime values:
import { defineProductionConfig } from "@assemblyline-agents/core";
export default defineProductionConfig({
SEARCH_API_URL: "https://search.example.com/v1",
ASSEMBLY_LINE_MAX_CONCURRENT_RUNS: "16"
});The default export must be one inline defineProductionConfig({...}) call.
Keys use uppercase environment syntax and values are string literals. The
compiler rejects dynamic code and secret-like fields or values, then serializes
the map into manifest.json. Local shell/host values override committed values;
framework defaults apply only when neither is set. .env is not loaded.
Configuration may be contextual. Credentials are capability-scoped. API URLs, regions, limits, and feature switches belong here. Passwords, tokens, private keys, connection strings, and authenticated webhook URLs belong in the configured secret store; bootstrap and deploy credentials remain host secrets.
Environment Variable Reference
Every ASSEMBLY_LINE_* variable read by the packages in this repo. Boolean
variables accept true/1 and false/0 unless noted. Provider-specific
non-ASSEMBLY_LINE_ env (API keys, DATABASE_URL, SLACK_*, ...) is documented in
Adapters and Runtime And Deployment.
Alphabetical index
Every variable in this reference, with the section that documents it.
ASSEMBLY_LINE_ARTIFACT_ROOT, ASSEMBLY_LINE_AGENT_REVISION, and
ASSEMBLY_LINE_MIGRATION_FILES are deploy-time outputs, not knobs; see
Build, deploy, and migrations.
Server and auth (@assemblyline-agents/node)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_ADMIN_TOKEN | unset | Bearer token for control-plane routes (/manifest, /routes, /runs*). Production boot fails without this or a host auth policy. |
ASSEMBLY_LINE_ENABLE_API_RUNS | disabled | true/1 enables authenticated POST /runs in production (always on in dev mode). |
ASSEMBLY_LINE_ENABLE_EVAL_RUNS | disabled | true/1 lets authenticated POST /runs accept the eval block (tool stubs, approval auto-resolve, record-only delivery). Advertised as the eval-runs capability on /healthz. Always on in dev mode; enable on test environments, not production. |
ASSEMBLY_LINE_SCHEDULER_SECRET | unset | Shared secret for /assembly-line/automations/tick (Authorization: Bearer or x-assembly-line-scheduler-secret, compared constant-time). Unset means dev-mode-only tick. |
ASSEMBLY_LINE_HTTP_MAX_BODY_BYTES | 10485760 (10 MiB) | Max HTTP request body size before parsing. |
ASSEMBLY_LINE_PUBLIC_URL | http://localhost | Public base URL; also the fallback for connection callbacks. |
ASSEMBLY_LINE_CONNECTION_CALLBACK_BASE_URL | falls back to ASSEMBLY_LINE_PUBLIC_URL | Base URL for OAuth/connection authorization callbacks. |
Usage accounting
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_OPENAI_ADMIN_KEY / OPENAI_ADMIN_KEY | unset | OpenAI organization Admin API key used only by authenticated POST /usage/reconcile. Never stored in the ledger. |
OPENROUTER_MANAGEMENT_KEY | unset | Imports OpenRouter completed-day activity control totals. |
ASSEMBLY_LINE_USAGE_RECONCILIATION_LAG_HOURS | 48 | OpenAI provider-settlement delay excluded from control-total imports. |
ASSEMBLY_LINE_OPENAI_USAGE_PROJECT_IDS | all accessible | Comma-separated OpenAI project filter for provider usage and cost totals. |
ASSEMBLY_LINE_OPENAI_USAGE_API_KEY_IDS | all accessible | Comma-separated OpenAI API-key ID filter for token-usage controls. OpenAI's Costs API does not expose this filter. |
ASSEMBLY_LINE_OPENAI_AGENT_BY_PROJECT_ID | unset | JSON object mapping a dedicated OpenAI project ID to a stable Assembly Line agent ID. This is the finest supported attribution for OpenAI cash controls. |
ASSEMBLY_LINE_OPENAI_AGENT_BY_API_KEY_ID | unset | JSON object mapping a dedicated OpenAI API-key ID to a stable Assembly Line agent ID for token-usage controls. API-key mapping wins over project mapping where the provider result contains both. |
ASSEMBLY_LINE_OPENROUTER_API_KEY_HASH | unset | OpenRouter activity filter for one API-key hash. |
ASSEMBLY_LINE_OPENROUTER_CONTROL_AGENT_ID | unset | Agent attribution applied to activity totals only when the configured activity filter is dedicated to that agent. |
Usage accounting is observational: it does not reserve quota, reject requests,
or estimate missing token/cash values. Provider transactions are stored in
exact integer micro-dollars when the provider reports cash; otherwise cash is
null with unavailable provenance. control_total rows are provider
aggregate evidence and are excluded from the default transaction view so they
cannot double count run receipts.
Concurrency and rate limiting
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_MAX_CONCURRENT_RUNS | unlimited (16 in production Node hosts when unset) | Max simultaneously executing brand-new runs. Accepted provider turns wait durably in their conversation mailbox; excess direct runs are rejected with RunCapacityError / HTTP 429. Resumes never queue. |
ASSEMBLY_LINE_MAX_QUEUED_RUNS | 0 | Direct brand-new runs allowed to wait in the in-process semaphore before rejection. Accepted provider turns use the durable conversation mailbox instead. |
ASSEMBLY_LINE_INGRESS_RATE_LIMIT | off | Provider-channel token bucket as capacity/refillPerSecond (e.g. 60/10). |
ASSEMBLY_LINE_RUNS_RATE_LIMIT | off | POST /runs token bucket in the same form. Also seeds the run-resume and run-control buckets unless those are configured separately through NodeRuntimeServerOptions.rateLimit. |
ASSEMBLY_LINE_TRUST_PROXY | off | true (exactly) trusts the first X-Forwarded-For hop as the client address for rate-limit keying. Set it when the host sits behind a reverse proxy or load balancer; without it, all proxied traffic shares one rate-limit bucket keyed by the proxy's address. |
Graceful shutdown
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_SHUTDOWN_TIMEOUT_MS | 30000 | Max wait for in-flight runs to drain during graceful shutdown. |
ASSEMBLY_LINE_SIGNAL_HANDLERS | on | false/0 prevents listenNodeRuntime from installing SIGTERM/SIGINT graceful-shutdown handlers. |
OTLP telemetry (@assemblyline-agents/otlp)
| Variable | Default | Effect |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | required for createOtlpSinkFromConfig | Non-secret OTLP/HTTP endpoint. |
OTEL_EXPORTER_OTLP_HEADERS | unset | Credential-scoped, comma-separated OTLP headers such as Authorization=Basic .... |
OTEL_SERVICE_NAME | instrumentation service name | Service name override for exported spans. |
OTEL_EXPORTER_OTLP_TIMEOUT | sink default | Per-export timeout in milliseconds. |
ASSEMBLY_LINE_OTLP_BATCH_MAX | sink default | Max spans batched before an OTLP flush. |
ASSEMBLY_LINE_OTLP_FLUSH_MS | sink default | Flush interval for the OTLP sink. |
Durability workers and recovery
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_DELIVERY_WORKER | on | false/0 disables the delivery queue worker. |
ASSEMBLY_LINE_SANDBOX_SYNC_WORKER | on | false/0 disables the sandbox-sync worker. |
ASSEMBLY_LINE_CONVERSATION_TURN_WORKER | on | false/0 disables periodic mailbox recovery/polling. Newly accepted and terminally settled turns still request an immediate local drain. |
ASSEMBLY_LINE_BACKGROUND_SUBAGENT_WORKER | on | false/0 disables periodic recovery/polling for queued background child runs. Newly delegated work still requests an immediate local drain. |
ASSEMBLY_LINE_BACKGROUND_REVIEW_WORKER | on | false/0 disables processing queued background learning reviews. |
ASSEMBLY_LINE_CONNECTION_EVENT_WORKER | on | false/0 disables provider event inbox delivery and periodic subscription reconciliation. Use only when another process owns that queue. |
ASSEMBLY_LINE_RUN_RECOVERY | on | false/0 disables boot recovery and the periodic orphan sweep. |
ASSEMBLY_LINE_RUN_HEARTBEAT_MS | 30000 | How often executing runs bump updatedAt to stay out of the orphan sweep. |
ASSEMBLY_LINE_RUN_RECOVERY_INTERVAL_MS | 60000 | Orphan sweep interval; runs are only candidates after max(5min, 4x heartbeat) staleness. |
ASSEMBLY_LINE_RUN_STALL_TIMEOUT_MS | 3600000 | Maximum active interval without durable progress. Persisted checkpoints, completed model responses, settled tools, and explicit ctx.reportProgress() calls renew the lease, so productive runs have no absolute duration cap. On expiry the in-flight work is aborted and the run fails with reason run.stalled. 0 disables. Paused runs start a fresh lease on resume. |
ASSEMBLY_LINE_SCHEDULE_MAX_FAILURES | 5 | Consecutive dynamic-schedule failures before the schedule is auto-disabled (escalating backoff between attempts: 5 min doubling, capped at 6 h). |
Delivery queue
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_DELIVERY_RETRY_ATTEMPTS | 2 | In-process send attempts before deferring to the durable queue. |
ASSEMBLY_LINE_DELIVERY_RETRY_MIN_MS | 250 | Min backoff between in-process retries. |
ASSEMBLY_LINE_DELIVERY_RETRY_MAX_MS | 5000 | Max backoff between in-process retries. |
ASSEMBLY_LINE_DELIVERY_QUEUE_LEASE_MS | 60000 | Lease duration for a sending delivery before it is requeued. The inline sender's own lease is max(this, 120000) so it outlives the in-process retry envelope. |
ASSEMBLY_LINE_DELIVERY_QUEUE_BATCH_SIZE | 10 | Deliveries leased per worker tick. |
ASSEMBLY_LINE_DELIVERY_QUEUE_MAX_ATTEMPTS | 5 | Total attempts before a delivery goes terminally failed. |
ASSEMBLY_LINE_DELIVERY_QUEUE_INTERVAL_MS | 15000 | Delivery worker tick interval. |
ASSEMBLY_LINE_DELIVERY_FILE_MAX_COUNT | 10 (1-100) | Max selected attachment files per delivery. Zero and other invalid values use the default. |
ASSEMBLY_LINE_DELIVERY_FILE_MAX_BYTES | 52428800 (50 MiB) | Max bytes per delivery file. |
ASSEMBLY_LINE_DELIVERY_FILE_PREPARATION_TIMEOUT_MS | 60000 | Per-operation timeout for exact-path reads, durable workspace lookup, and private blob writes needed to recover incomplete artifact selections. Clamped to 10 minutes. |
For sandbox-backed turns, only deliver_artifact selections are attached. A
response containing sandbox:/workspace/... links does not select a file. With
no selection, no workspace files are attached. Internal cache and tool
byproduct paths are never eligible. The count and byte settings limit the
selected attachment set; exceeding either limit fails delivery preparation
instead of silently omitting a requested file. deliver_artifact stores the
selected bytes as a private content-addressed blob before recording the durable
selection. Final delivery therefore reads only immutable selection metadata and
does not wait for a recursive workspace scan or asynchronous workspace sync.
Sandbox sync and hydration
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_SANDBOX_SYNC_INLINE | false | Run sandbox sync inline instead of through the background worker. |
ASSEMBLY_LINE_SANDBOX_SYNC_LEASE_MS | 300000 | Lease duration for a claimed sync job. |
ASSEMBLY_LINE_SANDBOX_SYNC_BATCH_SIZE | 10 | Sync jobs leased per worker tick. |
ASSEMBLY_LINE_SANDBOX_SYNC_MAX_ATTEMPTS | 5 | Max attempts before a job is blocked for an operator. |
ASSEMBLY_LINE_SANDBOX_SYNC_INTERVAL_MS | 30000 | Sandbox-sync worker tick interval. |
ASSEMBLY_LINE_SANDBOX_CLEANUP_TIMEOUT_MS | 30000 | Maximum wait for provider retain/dispose after terminal ownership or sync completion. Expiry records failure and releases run admission; active-run sandboxes are not cleanup targets. |
Versioned workspaces
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_WORKSPACE_MAX_FILES | 10000 | Maximum regular files accepted by sync, hydrate, checkpoint, restore, or fork. |
ASSEMBLY_LINE_WORKSPACE_MAX_FILE_BYTES | 104857600 | Maximum bytes in one workspace file. |
ASSEMBLY_LINE_WORKSPACE_MAX_TOTAL_BYTES | 1073741824 | Maximum logical bytes in one complete workspace version. |
ASSEMBLY_LINE_WORKSPACE_MAX_CHECKPOINTS | 1000 | Maximum named checkpoints in one workspace. |
ASSEMBLY_LINE_WORKSPACE_SEARCH_MAX_FILE_BYTES | 1048576 | Largest text file included in committed-workspace search. |
ASSEMBLY_LINE_WORKSPACE_SEARCH_MAX_CHUNK_CHARS | 12000 | Maximum characters in one search chunk. |
ASSEMBLY_LINE_WORKSPACE_SEARCH_CHUNK_OVERLAP_LINES | 5 | Lines repeated between adjacent search chunks. |
ASSEMBLY_LINE_WORKSPACE_SEARCH_MAX_CHUNKS | 50000 | Maximum chunks built for one indexed version. |
ASSEMBLY_LINE_WORKSPACE_RATE_WINDOW_MS | 60000 | Sliding per-runtime window for workspace operation limits. |
ASSEMBLY_LINE_WORKSPACE_CHECKPOINTS_PER_WINDOW | 60 | Checkpoint attempts per workspace and window. |
ASSEMBLY_LINE_WORKSPACE_RESTORES_PER_WINDOW | 20 | Restore attempts per workspace and window. |
ASSEMBLY_LINE_WORKSPACE_FORKS_PER_WINDOW | 20 | Fork attempts per source workspace and window. |
ASSEMBLY_LINE_WORKSPACE_HYDRATES_PER_WINDOW | 120 | Hydration attempts per workspace and window. |
ASSEMBLY_LINE_WORKSPACE_SYNCS_PER_WINDOW | 120 | Sync attempts per workspace and window. |
Workspace retention keeps the head, named checkpoints, fork sources, and a bounded automatic tail. The operator CLI uses authenticated deployed-agent routes:
| Command | Effect |
|---|---|
| `workspaces list | status |
| `workspaces checkpoint-create | checkpoint-list |
| `workspaces restore | fork |
| `workspaces verify | verify-all |
workspaces retention <id> --tail <n> | Preview retention. Add --apply to prune metadata. |
workspaces gc --min-age-ms <ms> | Preview unreachable blobs. Add --apply to delete eligible objects. |
| `workspaces repair-blob | repair-head` |
Committed search uses Postgres full-text ranking. Optional semantic search uses
the root model plugin's declared embedding implementation and optional Postgres migration
021_assembly_line_workspace_embeddings_pgvector. Without it, search remains
full-text with deterministic direct-content fallback for stale indexes.
Sandbox snapshots
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_MODE | unset (policy default never) | never, manual, on_failure, or always; overrides the declared snapshot policy. |
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_RETAIN_LAST | unset | Snapshots to retain (non-negative integer); only read when a mode is set. |
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_REASON | unset | Free-form snapshot reason label. |
Model loop, memory, and logging
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_MODEL_CREDENTIALS_FILE | <artifact>/model-credentials.enc.json | Encrypted file-backed credential store used by interactive model plugins when the selected state adapter does not supply a durable model-credential store. Production encryption uses ASSEMBLY_LINE_CONNECTION_STORE_SECRET or ASSEMBLY_LINE_SECRET. |
ASSEMBLY_LINE_CHECKPOINT_EVERY_ITERATION | true | Persist the harness continuation checkpoint after every model iteration (bounds crash loss to one in-flight model call). |
ASSEMBLY_LINE_CHECKPOINT_MAX_ACTIVE_PER_RUN_NAME | 2 | Latest overwrite-style active checkpoints retained per (run_id, name) for live/running/waiting runs. |
ASSEMBLY_LINE_CHECKPOINT_TERMINAL_TTL_MS | 604800000 (7 days) | Default TTL used by checkpoint maintenance for completed/cancelled terminal-run checkpoints. |
ASSEMBLY_LINE_CHECKPOINT_FAILED_TTL_MS | 1209600000 (14 days) | TTL used by checkpoint maintenance for failed-run checkpoints. |
ASSEMBLY_LINE_CHECKPOINT_SCHEDULED_TTL_MS | 86400000 (1 day) | Aggressive TTL used by checkpoint maintenance for terminal runs produced by schedules. |
ASSEMBLY_LINE_CHECKPOINT_BLOB_THRESHOLD_BYTES | 65536 (64 KiB) | Checkpoints at or above this serialized size are gzip-compressed into the configured blob adapter, with SQL storing a pointer/hash/size record. |
ASSEMBLY_LINE_TOOL_OUTPUT_MAX_CHARS | 8000 | Max serialized tool-output size handed back to the model before it becomes a { truncated, preview } object. |
ASSEMBLY_LINE_MAX_MODEL_ITERATIONS | 25 | Default agent-loop iteration budget. A positive integer; agent/subagent maxIterations overrides it. |
ASSEMBLY_LINE_OUTPUT_VALIDATION_MAX_RETRIES | 2 | Corrective model retries after a final response fails outputSchema. Validation retries share the active execution's iteration budget. |
ASSEMBLY_LINE_MODEL_MAX_RETRIES | 2 | Retry attempts (beyond the initial one) for a model request that fails retryably, 408/429/5xx, overload, network errors, with jittered exponential backoff. Also forwarded to provider SDK clients. Fatal errors (bad key, invalid request) never retry. |
ASSEMBLY_LINE_MODEL_TIMEOUT_MS | 600000 | HTTP request timeout per model call, forwarded to the provider SDK. |
ASSEMBLY_LINE_MODEL_MAX_RETRY_DELAY_MS | 60000 | Cap on backoff delays and server-requested (Retry-After) waits between model retries. |
ASSEMBLY_LINE_MODEL_STREAM_IDLE_TIMEOUT_MS | 300000 | Abort a model stream when no event arrives for this long (a stalled provider stream would otherwise hang the run). The aborted attempt is retried when the retry budget allows. 0 disables. |
ASSEMBLY_LINE_TOOL_TIMEOUT_MS | 600000 | Default wall-clock deadline for the full tool operation, including sandbox acquisition/hydration and output conversion; a per-tool timeoutMs overrides it. The runtime aborts cooperative work and abandons unresolved acquisitions. 0 disables. |
ASSEMBLY_LINE_BASH_TIMEOUT_MAX_MS | 600000 | Upper clamp on model-supplied bash timeouts. timeoutMs: 0/negative falls back to the 30 s default instead of disabling the timeout. |
ASSEMBLY_LINE_EVAL_JUDGE_MODEL | agent model | Default provider/model for eval cases with expect.judge; --judge-model takes precedence. |
ASSEMBLY_LINE_MEMORY_EMBEDDINGS_ENABLED | on only when an embedding provider is configured | Enables embedding-backed semantic memory search. |
ASSEMBLY_LINE_LOG_LEVEL | info | Structured log verbosity: debug, info, warn, or error. |
ASSEMBLY_LINE_BASH_TOOL_MODE | enabled | Core bash tool policy: enabled, approval, or disabled. Hosts can gate any tool by name with RuntimeOptions.coreToolPolicy (e.g. { write: "disabled" }). |
Attachments and resource projection
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_ATTACHMENT_MAX_COUNT | 20 (max 100) | Max inbound attachments per turn. |
ASSEMBLY_LINE_ATTACHMENT_MAX_BYTES | 52428800 (50 MiB) | Max bytes per attachment. |
ASSEMBLY_LINE_ATTACHMENT_FETCH_TIMEOUT_MS | 30000 (1s-120s) | Attachment download timeout. |
ASSEMBLY_LINE_MODEL_IMAGE_MAX_COUNT | 20 (max 100) | Max stored images hydrated as native model input per turn. |
ASSEMBLY_LINE_MODEL_IMAGE_MAX_BYTES | 20971520 (20 MiB) | Max decoded bytes for one native model image input. |
ASSEMBLY_LINE_MODEL_IMAGE_MAX_TOTAL_BYTES | 52428800 (50 MiB) | Max decoded image bytes supplied to one model turn. |
ASSEMBLY_LINE_MODEL_HEIC_CONVERSION_ENABLED | true | Convert stored HEIC/HEIF still images to transient JPEG model input without rewriting the source blob. |
ASSEMBLY_LINE_MODEL_HEIC_CONVERSION_TIMEOUT_MS | 30000 (1s-120s) | Worker deadline for one HEIC/HEIF conversion. |
ASSEMBLY_LINE_MODEL_HEIC_JPEG_QUALITY | 0.9 (clamped 0.1-1.0) | JPEG quality used for transient HEIC/HEIF model input. |
ASSEMBLY_LINE_MODEL_HEIC_MAX_PIXELS | 64000000 (max 100 million) | Maximum primary-image pixel count checked before full HEIC/HEIF decode. |
ASSEMBLY_LINE_MODEL_VIDEO_MAX_COUNT | 4 (max 20) | Max stored videos hydrated as native model input per turn. |
ASSEMBLY_LINE_MODEL_VIDEO_MAX_BYTES | 52428800 (50 MiB) | Max decoded bytes for one native model video input. |
ASSEMBLY_LINE_MODEL_VIDEO_MAX_TOTAL_BYTES | 104857600 (100 MiB) | Max decoded video bytes supplied to one model turn. |
ASSEMBLY_LINE_ZIP_MAX_FILES | 500 (max 10000) | Max entries when expanding a ZIP attachment. |
ASSEMBLY_LINE_ZIP_MAX_TOTAL_BYTES | 104857600 (100 MiB) | Max total uncompressed ZIP bytes. |
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_FILES | 8 | Max resources projected into a sandbox per request. |
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_BYTES | 262144 (256 KiB) | Max bytes per projected resource. |
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOWED_KINDS | all kinds | Comma-separated allowlist of projectable resource kinds. |
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOW_WRITABLE | false | Allow projecting writable resources. |
Provider channel modules own authenticated attachment resolution. If a channel
resolver declines an attachment, the runtime preserves metadata only; it does
not fetch a fallback URL. Direct runtime.run() callers must set
allowRemoteAttachments: true for a generic public HTTP(S) download. Every
download resolves and rejects private/special-use addresses, revalidates each
redirect, strips credentials on cross-origin redirects, applies byte/time
limits, and bounds ZIP inflation to declared and configured quotas. Ordinary
links in message text are unaffected.
Self-improvement, dynamic automations, dynamic connections
Runtime environment overrides for the resolved mutability policies.
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_SELF_IMPROVEMENT | true | Enable durable skill writes and background review. |
ASSEMBLY_LINE_SKILLS_WRITE_APPROVAL | false | Skill writes require approval. |
ASSEMBLY_LINE_SELF_IMPROVEMENT_REVIEW_EVERY_TURNS | 10 | Review every N completed foreground turns. |
ASSEMBLY_LINE_SELF_IMPROVEMENT_REVIEW_MIN_TOOL_CALLS | 5 | Immediately review runs with at least this many tool calls. |
ASSEMBLY_LINE_SELF_IMPROVEMENT_REVIEW_MODEL | inherit | Reviewer model selection. |
ASSEMBLY_LINE_EVOLUTION_TRACKING | true | Mirror accepted skill and memory changes into a runtime-owned Git audit repository. Requires an artifact root unless an embedder supplies a tracker. |
ASSEMBLY_LINE_EVOLUTION_ROOT | <artifactRoot>/evolution | Writable path for the Git audit repository. Put it on persistent storage when hosted history must survive replacement. |
ASSEMBLY_LINE_AUTOMATIONS_DYNAMIC | true | Agent may create dynamic time-based automations. |
ASSEMBLY_LINE_AUTOMATIONS_APPROVAL | false | Dynamic automation changes require approval. |
ASSEMBLY_LINE_CONNECTIONS_DYNAMIC | false | Agent may persist dynamic connections. |
ASSEMBLY_LINE_CONNECTIONS_APPROVAL | true | Saving a dynamic connection requires approval. |
ASSEMBLY_LINE_CONNECTIONS_ALLOWED_HOSTS | manifest allowedHosts or empty | Comma-separated dynamic-connection host allowlist. |
Scheduler
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_SCHEDULER_ENABLED | on | false/0 disables the in-process scheduler loop. |
Secrets and local store paths (@assemblyline-agents/node)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_CONNECTION_STORE_SECRET | unset | Encryption secret for file-backed connection credential stores. Must be at least 32 characters outside dev mode. |
ASSEMBLY_LINE_SECRET | unset | Fallback for ASSEMBLY_LINE_CONNECTION_STORE_SECRET; the same 32-character minimum applies. |
ASSEMBLY_LINE_CONNECTION_GRANTS_FILE | <artifactRoot>/connection-grants.enc.json | Encrypted connection-grant store path. |
ASSEMBLY_LINE_CONNECTION_AUTH_SESSIONS_FILE | <artifactRoot>/connection-auth-sessions.enc.json | Encrypted authorization-session store path. |
ASSEMBLY_LINE_CONNECTION_EVENTS_FILE | <artifactRoot>/connection-events.enc.json | Encrypted provider registration and durable inbound event inbox path. |
ASSEMBLY_LINE_CONNECTION_DEFINITIONS_FILE | <artifactRoot>/connection-definitions.json | Dynamic connection definition store path. |
ASSEMBLY_LINE_SKILLS_FILE | <artifactRoot>/skills-store.json | Durable skill store path (file-backed state). |
ASSEMBLY_LINE_LEARNING_FILE | <artifactRoot>/learning-store.json | Skill revision, pending-change, and background-review queue path. |
ASSEMBLY_LINE_SCHEDULES_FILE | <artifactRoot>/dynamic-schedules.json | Dynamic schedule store path (file-backed state). |
ASSEMBLY_LINE_STATE_FILE | <artifactRoot>/runtime-state.json | File-backed runtime state path. |
ASSEMBLY_LINE_BLOB_ROOT | <artifactRoot>/blobs | Local blob storage root. |
ASSEMBLY_LINE_SANDBOX_ROOT | <artifactRoot>/sandbox | Local sandbox root. |
Build, deploy, and migrations (CLI and compiler)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_ARTIFACT_PACKAGE_MODE | local | release makes build artifacts reference published @assemblyline-agents/* versions instead of vendored workspace copies. |
ASSEMBLY_LINE_DOCKER_IMAGE | assembly-line:<buildRevision[0:12]> | Docker deploy image tag after deploy.docker.image. |
ASSEMBLY_LINE_DEPLOY_ENV | development | Deployment environment after --env and before the resolved gateway profile option/default. |
ASSEMBLY_LINE_MIGRATION_COMMAND | unset | Migration runner executable for hosted deploys (after --migration-command). |
ASSEMBLY_LINE_URL | unset | Default deployed-agent base URL for runs and agent CLI commands when --url is omitted. |
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_IN_PRODUCTION | off | true (exactly) acknowledges and permits an unconfined local sandbox on a non-local deploy target; otherwise planning fails before publish. |
Built-in deploy options use the same precedence everywhere: CLI flag, environment variable, resolved gateway profile option, then provider default. A hosted plan warns when local state or local blob storage is selected because those files may disappear when a container is replaced.
During a hosted deploy the CLI sets these in the migration process
environment (they are outputs, not knobs): ASSEMBLY_LINE_ARTIFACT_ROOT,
ASSEMBLY_LINE_AGENT_REVISION, ASSEMBLY_LINE_DEPLOY_ENV, ASSEMBLY_LINE_MIGRATION_FILES.
Provider: Postgres (@assemblyline-agents/postgres)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_POSTGRES_CONNECTION_ENV | DATABASE_URL | Name of the env var holding the connection string. |
ASSEMBLY_LINE_POSTGRES_SSL_REJECT_UNAUTHORIZED | true (Railway preset: false) | Certificate verification is on by default when SSL is used; Railway's generated certificate is self-signed. |
ASSEMBLY_LINE_AUTO_MIGRATE | on | false (exactly) skips running Assembly Line migrations at provider construction. |
The neon, railway, and supabase state profiles all read DATABASE_URL by
default and use the same Assembly Line schema and migrations. The railway
profile additionally accepts databaseService (default Postgres) and
provision (default true). During a Railway deploy, those options create
or reuse that Railway database service and wire a private DATABASE_URL
reference onto the application service. Named non-default services must already
exist and use provision: false. The preset also defaults
sslRejectUnauthorized to false for Railway's generated Postgres certificate;
TLS remains enabled. For Supabase, use the direct URL on an IPv6-capable
persistent host or the session-pooler URL when IPv4 is required.
Provider: Docker (@assemblyline-agents/docker)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_DOCKER_NETWORK | none | Container network for sandbox containers. |
ASSEMBLY_LINE_DOCKER_CPUS | unset | CPU limit passed to docker run. |
ASSEMBLY_LINE_DOCKER_MEMORY | unset | Memory limit passed to docker run. |
ASSEMBLY_LINE_DOCKER_PULL_POLICY | unset (Docker default) | never, missing, or always. |
ASSEMBLY_LINE_DOCKER_COMMAND_TIMEOUT_MS | unset | Timeout for Docker CLI commands. |
Provider: Hetzner VPS (@assemblyline-agents/vps)
Supported.
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_HETZNER_HOST | unset | Named inventory host; deploy.hetzner.host takes precedence. |
ASSEMBLY_LINE_HETZNER_HOSTS_FILE | nearest assembly-line.hosts.json | Explicit versioned named-host inventory path; deploy.hetzner.hostsFile takes precedence. |
Inventory identityFileEnv variable | required | Local path to the SSH private key for that named host. The variable name is inventory-defined. |
ASSEMBLY_LINE_VPS_BACKUP_BUCKET | required in host Postgres mode | S3-compatible database-backup bucket. |
ASSEMBLY_LINE_VPS_BACKUP_REGION | required in host Postgres mode | Backup bucket region. |
ASSEMBLY_LINE_VPS_BACKUP_ACCESS_KEY_ID | required in host Postgres mode | Backup-only S3 access key. |
ASSEMBLY_LINE_VPS_BACKUP_SECRET_ACCESS_KEY | required in host Postgres mode | Backup-only S3 secret key. |
ASSEMBLY_LINE_VPS_BACKUP_ENDPOINT | provider default | Optional custom S3-compatible endpoint. |
ASSEMBLY_LINE_VPS_BACKUP_RETENTION_DAYS | 30 | Number of days retained by the daily S3-compatible backup job. |
ASSEMBLY_LINE_VPS_ALERT_WEBHOOK_URL | unset | Optional webhook receiving five-minute runtime, public readiness, Postgres, backup-verification, timer, and disk alerts. Checks still run and record failures in systemd/journald when unset. |
The deploy.hetzner options are:
| Option | Default | Effect |
|---|---|---|
host | required | Named host from the versioned inventory. |
ingress: { visibility } | host default | "public" derives a hostname from the agent ID, environment, and host namespace; "private" creates no public route. |
expectedRegion | unset | Emits a latency warning when inventory reports a different provider region. |
hostsFile | inventory discovery | Explicit inventory path. |
resources: { cpus, memory, pids } | { cpus: 1, memory: "1g", pids: 256 } | Runtime container limits. |
database: { mode } | "external" | "external" uses DATABASE_URL; "host" provisions an isolated database and role in managed host Postgres. |
monitoring: { enabled, diskFreeMinimumMb } | { enabled: true, diskFreeMinimumMb: 5120 } | Installs the deployment health timer. A configured alert webhook receives failures; local checks do not depend on it. |
caddyImage | caddy:2.10.0-alpine | Explicit non-latest edge image. |
postgresImage | postgres:17.10-alpine | Explicit numeric-major Postgres image. An image mismatch requires the VPS plugin's reviewed hostPostgresUpgradeScript() workflow. |
awsCliImage | amazon/aws-cli:2.17.57 | Explicit non-latest backup client image. |
Each host inventory entry requires
ingress: { baseDomain, defaultVisibility }. Create one wildcard DNS record for
*.<baseDomain> pointing at the host. The default environment receives
<agent-id>.<baseDomain>; alternate environments receive
<agent-id>-<environment>.<baseDomain>.
Lifecycle commands add deploy --prepare-only, deploy --activate,
deploy --rollback, and deploy --ingress-only. Operational commands are
secrets diff and agent quiesce|resume|status; host bootstrap and database
transfer/upgrade are package-owned operator APIs, not framework CLI branches.
Provider: E2B (@assemblyline-agents/e2b)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_E2B_TIMEOUT_MS | SDK default | Sandbox lifetime timeout. |
ASSEMBLY_LINE_E2B_RETAIN_TIMEOUT_MS | SDK default | Retain/pause timeout for dirty sandboxes. |
ASSEMBLY_LINE_E2B_REQUEST_TIMEOUT_MS | SDK default | Per-request timeout. |
ASSEMBLY_LINE_E2B_PAUSE_KEEP_MEMORY | SDK default | Keep memory when pausing. |
ASSEMBLY_LINE_E2B_ALLOW_INTERNET_ACCESS | false | Set to true to allow sandbox internet egress by default. An explicit agent profile overrides it. |
sandbox/*.yaml env arrays are global passthrough variables. Validation and
the Node runtime reject host/control-plane credentials such as database URLs,
Railway/Hetzner credentials, E2B control keys, R2 secret keys, Photon tokens,
admin tokens, and OTLP auth headers in this list. Supply capability
credentials through typed connections or the per-command shell(..., { env })
scope.
Provider: Modal (@assemblyline-agents/modal)
Preview: this surface may change without notice.
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_MODAL_TIMEOUT_MS | SDK default | Sandbox timeout. |
ASSEMBLY_LINE_MODAL_WAIT_READY | SDK default | Wait for the sandbox to be ready before use. |
Provider: Daytona (@assemblyline-agents/daytona)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_DAYTONA_CREATE_TIMEOUT_SECONDS | SDK default | Sandbox creation timeout. |
ASSEMBLY_LINE_DAYTONA_LIFECYCLE_TIMEOUT_SECONDS | SDK default | Lifecycle operation timeout. |
ASSEMBLY_LINE_DAYTONA_AUTO_STOP_MINUTES | SDK default | Auto-stop interval. |
ASSEMBLY_LINE_DAYTONA_AUTO_ARCHIVE_MINUTES | SDK default | Auto-archive interval. |
ASSEMBLY_LINE_DAYTONA_AUTO_DELETE_MINUTES | SDK default | Auto-delete interval. |
ASSEMBLY_LINE_DAYTONA_EPHEMERAL | true | Only the literal string false disables ephemeral sandboxes. |
ASSEMBLY_LINE_DAYTONA_NETWORK_BLOCK_ALL | SDK default | Block all sandbox network egress. |
ASSEMBLY_LINE_DAYTONA_NETWORK_ALLOW_LIST | unset | Network allowlist. |
ASSEMBLY_LINE_DAYTONA_DOMAIN_ALLOW_LIST | unset | Domain allowlist. |
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_FALLBACK | off | true (exactly) allows local fallback when the Daytona client is absent (dev/test only). |
Computer Use Relay (@assemblyline-agents/computer-use)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_COMPUTER_USE_BINDING | required | Device-scoped encrypted binding generated when the Mac host pairs with the deployment. Keep it in the runtime secret store. |
ASSEMBLY_LINE_COMPUTER_USE_RELAY_URL | https://computer-use.artificialillumination.co/v1 | Relay base URL. Set it only for a self-hosted relay. |
See Remote Computer Use for pairing, write policy, and relay trust boundaries.
Provider: Microsoft Teams (@assemblyline-agents/teams)
| Variable | Default | Effect |
|---|---|---|
ASSEMBLY_LINE_TEAMS_ALLOWED_TENANTS | all tenants | Comma-separated tenant ID allowlist. |
ASSEMBLY_LINE_TEAMS_ALLOWED_SERVICE_URLS | all URLs | Comma-separated service-URL prefix allowlist. |
ASSEMBLY_LINE_TEAMS_OPENID_METADATA_URL | Bot Framework default | Override for the OpenID metadata URL used in JWT verification. |