Skip to main content

Configuration Reference

This page is the single reference for agent-folder configuration shapes and every ASSEMBLY_LINE_* environment variable. The guides explain when and why to use these settings:

All define* helpers are identity functions from @assemblyline-agents/core: they give you type checking, and the compiler reads the declarations statically from the TypeScript AST. Manifest-affecting values must be statically readable; the compiler never executes config code.

Contents:

defineAgent (agent.ts)

agent.ts default-exports defineAgent({ ... }). model is the only required field.

FieldTypeRequiredMeaning
modelstringyesprovider/model spec. The prefix decides provider auth: for example, openai/* needs OPENAI_API_KEY, while the preview openai-codex/* route uses the Codex CLI's active ChatGPT or API-key session. assembly-line models lists the local catalog.
idstringnoStable logical agent identity. Keeps learned skills, usage attribution, and durable state attached to the agent across revisions and redeploys.
reasoning"off" | "minimal" | "low" | "medium" | "high" | "xhigh"noReasoning effort. The runtime defaults to "medium" when omitted.
namestringnoDisplay name.
descriptionstringnoShort description recorded in the manifest.
contextContextPolicynoContext policy from defaultContext(...) or defineContext(...). The compiler stamps defaultContext() when omitted.
defaultToolsstring[]noAuthored tool names that are visible up front instead of deferred behind tool_search.
outputSchemaJsonSchemanoJSON Schema for the final answer. The schema must be statically readable; the runtime validates the final response, performs bounded corrective retries, and exposes the parsed value as RunAgentResult.output.
maxIterationspositive integernoAgent-loop iteration budget for one active execution. Overrides ASSEMBLY_LINE_MAX_MODEL_ITERATIONS; a cap hit fails the run instead of delivering a partial response.
selfImprovementobjectnoSkill authoring config; see below.
dynamicAutomationsobjectnoRuntime-created automation config; see below.
dynamicConnectionsobjectnoRuntime-created connection config; see below.
metadataJSON objectnoFree-form metadata recorded in the manifest.

Pi is the default primary engine; agent.ts has no harness: slot (declaring one fails validation with harness-not-configurable). The Node host's openai-codex/* route is selected by model prefix rather than a public harness field. Subagents use Pi as well; they do not expose a harness slot.

Sub-config blocks (all fields optional):

BlockFieldDefaultMeaning
selfImprovementwritabletrueAgent may author and edit its own skills under /skills.
selfImprovementwriteApprovalfalseSkill writes require approval.
selfImprovementexternalDirs-Extra directories treated as skill sources.
dynamicAutomationsdynamictrueAgent may create/manage time-based automations through ctx.automationManager.
dynamicAutomationsapprovalfalseDynamic automation changes require approval.
dynamicConnectionsdynamicfalseAgent may persist runtime-provided MCP/OpenAPI/HTTP connections.
dynamicConnectionsapprovaltrueSaving a dynamic connection requires approval.
dynamicConnectionsallowedHosts[]Host allowlist; required non-empty when dynamic is enabled.

defineSubagent (subagents/<name>/agent.ts)

SubagentDefinition accepts every optional AgentDefinition field plus:

FieldTypeMeaning
modelstring?Optional (unlike agents). Defaults to the primary agent's model and uses the same built-in provider-prefix route, including the host's active Codex CLI authentication for openai-codex/*.
workspaceAdapterDefinition?Sandbox/workspace adapter for the subagent (compiled with role sandbox).
connectionsstring[]?Connection names the subagent may use.

The compiler also records what the subagent inherits: skills, tools (declared tools plus defaultTools), and context (context: true). All subagents run through Pi. harness and the retired engineConnection field fail validation so child execution stays on one durable code path.

defineGateway (gateway.ts) and adapter()

Every gateway slot is an optional AdapterDefinition. Compiler defaults are all adapter("local") except runtime, which defaults to adapter("node").

SlotChoosesDefault
deployWhere the compiled runtime service runs.adapter("local")
runtimeRuntime host.adapter("node")
stateDurable state adapter.adapter("local")
blobBlob storage adapter.adapter("local")
sandboxDefault sandbox adapter.adapter("local")
schedulerWhere the schedule clock lives (local, gateway, postgres).adapter("local")

Telemetry is not a gateway slot — configure it in instrumentation.ts (see defineInstrumentation).

adapter() builds an AdapterDefinition:

adapter(kind: string, options?: JsonObject, extras?: { package?: string })
  • kind: adapter kind, e.g. "postgres", "railway", "pi".
  • options: JSON options merged with host-supplied extras at construction.
  • extras.package: npm plugin package name that exports openeveProvider; it is stored as packageName on the definition. This is how community plugin providers plug in with zero core edits:
state: adapter("neon-state", { pool: 4 }, { package: "@acme/openeve-neon" })

AdapterRole values: deploy, runtime, state, blob, sandbox, scheduler, channel, and connection. A subagent workspace adapter compiles with role sandbox. See Plugins for the extension model, Authoring Plugin Providers for the provider contract, and Adapters for the built-in matrix.

Runtime state facets

RuntimeOptions.state may be a full StateAdapter or a StateStores object. runs is required. Optional facets are conversations, schedules, files, usage, sandboxSessions, memory, and settings. The settings (RuntimeSettingsStore) facet holds stable-agent operator settings and their control-plane audit events. Omitted facets use in-memory fallbacks and produce one state.degraded warning; in particular, an ingress kill switch backed by the fallback does not survive process restart. File and Postgres state adapters implement the durable settings facet.

defineInstrumentation (instrumentation.ts)

agent/instrumentation.ts is the single home for telemetry. It is auto-discovered and run once at startup; its presence enables telemetry (no separate toggle). Wire a sink in the setup callback and set capture preferences as sibling fields.

FieldTypeMeaning
serviceNamestring?service.name on spans; defaults to the agent name.
functionIdstring?Overrides the function id on spans.
setup(ctx) => sink | voidRuns before the first turn with { agentName, manifest, env }; return a TelemetrySink to export spans.
recordInputs / recordOutputsboolean?Legacy capture flags. Default false.
captureContentContentCaptureLevel | ContentCapturePolicy?Content detail (see below). Default usage.

@assemblyline-agents/otlp supplies createOtlpSink(options) / createOtlpSinkFromEnv(env) for the setup callback; see Customizing Agents → Observability for the full example and the Langfuse recipe.

Capture detail (captureContent). Controls how much of each model call is recorded, so a developer decides per environment how verbose logging is:

LevelRecords
offNo span content.
usage (default)Token usage, cost, model, provider, finish reason, tool-call spans. No message bodies.
contentAdds prompt + completion text and tool input/output, truncated and key-redacted.
fullSame coverage as content with truncation relaxed; redaction stays on unless explicitly disabled.

A ContentCapturePolicy object also accepts maxChars, redact, redactKeys, sampleRate, and includeToolIO. Prompt/completion bodies can contain secrets and PII and increase telemetry storage/cardinality — treat full as trusted-operator-only, and prefer usage in production.

defineContext / defaultContext (context.ts)

context.ts is optional; without it the compiler stamps defaultContext().

  • defaultContext(options?: JsonObject) returns { kind: "default", name: "defaultContext", options }. Options tune the default bundle, for example recentHistory: { maxMessages: 12 } or files: { includeManifest: true }.
  • defineContext(policy) declares a custom ContextPolicy:
FieldTypeMeaning
kindstringPolicy kind, e.g. "custom".
namestring?Policy name recorded in the manifest.
optionsJSON object?Policy options.
extendsContextPolicy?Base policy, usually defaultContext(...).
sourcePathstring?Set by the compiler for attribution.

transcript options

options.transcript tunes conversation transcript resume and trimming (see Framework — conversation transcript resume):

OptionDefaultMeaning
resumetrueResume conversation follow-ups from the stored harness transcript; false always rebuilds from flattened recent history.
reserveTokens16384Tokens reserved below the model context window before compaction triggers.
keepRecentTokens20000Approximate recent-transcript tokens kept verbatim through trimming and compaction.
toolResultCapChars2000Character cap applied to tool-result bodies outside the recent tail at resume time.

Per-File Contracts The Compiler Validates

Allowed top-level entries in an agent folder: instructions.md, agent.ts, context.ts, gateway.ts, skills/, tools/, channels/, automations/, automation-handlers/, connections/, evals/, sandbox/, subagents/, hooks/, resolvers.ts, instrumentation.ts. Anything else produces an unknown-top-level warning. evals/**/*.json holds golden eval cases for assembly-line eval (discovered recursively; evals/evaluators/ holds custom evaluator modules); see Evals.

tools/*.ts

The filename is the tool name ([A-Za-z0-9_-], unique). The default export must declare description and inputSchema (errors: invalid-tool-name, duplicate-tool-name, missing-tool-export, missing-tool-description, missing-tool-schema). Optional fields: outputSchema, needsApproval, toModelOutput, defaultEnabled, sideEffect ("none" | "idempotent" | "external", the tool's declared side-effect class; approvalRequired() stamps external and approvalNever() stamps none on the approval policy), and a capability block with visibility (auto/always/deferred/skill/hidden) and execution (auto/direct/sandbox/both) plus namespace, tags[], aliases[]. auto (the implicit default) uses inference: visibility is inferred as always for defaultTools members and deferred otherwise unless declared.

A file named after a built-in harness tool overrides that built-in (the description/schema checks are skipped so overrides can spread builtInToolDefaults from @assemblyline-agents/runtime), and it keeps the built-in slot's always-on visibility. A disableTool() default export (from @assemblyline-agents/core) removes the built-in of that name; a filename matching no built-in raises invalid-disable-tool. See Customizing Agents.

hooks/*.ts

Observe-only event subscribers. The default export must declare an events map keyed by event type (* matches every event); errors: missing-hook-export, missing-hook-events. Handlers fire after each durable event is persisted, cannot alter execution, and thrown errors are logged and swallowed. See Customizing Agents.

resolvers.ts

Per-run capability resolver. The default export is a function (defineRunResolver) returning { model?, instructions?, defaultTools? } or null; error: missing-resolver-export. The declaration is recorded as a run.capabilities_resolved event before it is applied. See Customizing Agents.

skills/<name>/SKILL.md

Markdown with YAML frontmatter. allowed-tools entries must name an authored tool or a core tool (read, write, edit, delete, list, grep, bash, ask_question, spawn_subagent, load_skill, tool_search, tool_describe, tool_call), else unknown-skill-tool. Frontmatter description, tags, and aliases feed the skill catalog.

channels/*.ts

Fields: transport (http/local/webhook/queue), route, methods[], requiredEnv[], description, connection, metadata, and ingress. Custom HTTP channels must declare a route (missing-channel-route), and channels with production requiredEnv must export send() (missing-channel-send). Provider helpers (defineSlackChannel, defineDiscordChannel, defineTelegramChannel, defineTeamsChannel, definePhotonChannel) stamp kind, route, requiredEnv, and ingress automatically.

ingress declares production ingress-auth secrets as any-of groups:

ingress: { requiredSecretEnv: [["MY_WEBHOOK_SECRET"], ["MY_BEARER_TOKEN"]] }

Production boot succeeds when every var in at least one group is set; dev mode logs a warning instead. The compiler stamps the declaration into CompiledChannel.metadata.ingress.

automations/*.ts

defineAutomation() requires a trigger. Schedule triggers declare { type: "schedule", cron, timezone? } and require a top-level idempotencyKey. Event triggers declare { type: "event", source, event, connection?, filter? }; filter is a recursive JSON subset matched against the normalized provider payload. Optional fields are description, message, target, lifecycle, enabled, and metadata.

automation-handlers/*.ts

The filename is the lifecycle handler name. defineAutomationHandler({ description?, prepare?(ctx), finalize?(ctx, result), metadata? }). A handler named in lifecycle.handler runs around either a schedule- or event-triggered model turn.

The legacy schedules/ and triggers/ contracts remain accepted with deprecation warnings.

connections/*.ts

Protocol is inferred from the helper (defineMcpClientConnection, defineMcpStdioConnection, or defineMcpRelayConnection -> mcp, defineOpenAPIConnection -> openapi, defineHttpApiConnection -> http, defineSandboxCliConnection -> cli, otherwise declaration). Fields: subject (user/workspace/installation/environment, default user), provider, scopes[], capabilities[], binding (adapter), url/baseUrl/spec, description, required (default true). Provider helpers (defineGitHubConnection, defineTeamsConnection, defineLiveKitConnection) stamp provider, binding, and subject.

Live MCP, OpenAPI, HTTP, and sandbox CLI definitions require access. The generic form is { read: { tools: string[] }, write: false | { tools: string[], approval } }. Tool entries accept exact names, * globs, or regex: patterns. A remote tool that matches neither class is hidden; a write match wins over a read match. Official provider helpers expose the simpler author choice { read: true, write: false | { approval } } and apply their packaged tool classifiers. CLI-generated provider files default to write: false.

MCP definitions discriminate on transport. The existing HTTP shape keeps url and may omit transport (equivalent to "http"). The stdio shape uses transport: "stdio", command, optional args, cwd, and string-valued env overrides. The relay shape uses transport: "relay", an HTTPS url, a fixed credentialEnv, and an optional bounded timeoutMs. Relay and stdio definitions are static-file-only; dynamic connection definitions are URL-only and reject process-backed or device-relay transports.

Sandbox CLI definitions use transport: "sandbox", a trusted command, and reviewed static tool builders. The runtime hydrates declared logical paths and executes each built argument inside the active run sandbox, not the gateway host. Dynamic connections cannot select this transport.

Connection plugins may use MCP, OpenAPI, HTTP, or sandbox CLI. OpenAPI helpers can package a stable remote specification and base URL, while keeping the generated access policy visible in connections/*.ts. OAuth definitions accept tokenType when a provider requires an authorization scheme other than Bearer; SoundCloud, for example, uses tokenType: "OAuth".

Process-backed media helpers can package their own stdio MCP bridge while leaving external executables as trusted host dependencies. The FFmpeg and Remotion helpers fix the Node bridge path, child executable/prefix arguments, working directory, and workspace root in source. Their remote tool schemas do not accept arbitrary shell commands or CLI flags, and output paths cannot escape the configured root.

Platform-specific connection plugins may publish hostRequirements metadata with deployTargets, Node platforms, and an actionable message. These constraints are compiler-owned metadata rather than model input. Validation warns when the default gateway target is incompatible, deployment planning marks the constraint as a required missing item, and the runtime checks the platform before loading the connection definition. Peekaboo uses deployTargets: ["local"] and platforms: ["darwin"].

sandbox/*.ts

defineSandbox({ adapter, image?, workingDirectory?, env?, snapshot? }) or a provider helper (dockerSandbox(), e2bSandbox(), modalSandbox(), ...). snapshot is { mode: "never" | "manual" | "on_failure" | "always", retainLast?, reason? } and defaults to never. workingDirectory defaults to /workspace and may only be /workspace. Hosted adapters establish it as a physical shell directory and validate it after create/connect/wake; arbitrary aliases are rejected because they cannot make absolute paths inside shell commands portable. /runtime is retired and rejected. The Local adapter is a trusted dev/test emulation over a temporary host directory; use Docker for exact local namespace parity.

instrumentation.ts

defineInstrumentation({ serviceName?, recordInputs?, recordOutputs?, captureContent?, functionId?, metadata?, setup? }). If setup() returns a telemetry sink, the runtime uses it unless the host supplied telemetry directly.

Community plugin provider stamping

When gateway slots or subagent harness/workspace definitions carry a packageName that is not in the built-in registry, the compiler imports that package from the agent root, reads openeveProvider.providers[].metadata, records it in manifest.providerMetadata, and emits the provider's requiredEnv and setup entries into manifest.preflight. Unresolvable packages produce a provider-package-unresolved warning (never a build failure) and keep a generic role-based requirement; the Node host re-validates at boot.

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.

Every ASSEMBLY_LINE_* variable also accepts its legacy OPENEVE_* spelling during the rename compatibility window. The new name wins, setting both to the same value is fine, and conflicting values fail at startup.

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.

VariableSection
CODEX_ACCESS_TOKENModel loop, memory, and logging
CODEX_HOMEModel loop, memory, and logging
OPENAI_ADMIN_KEYUsage accounting
ASSEMBLY_LINE_ADMIN_TOKENServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_FALLBACKProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_IN_PRODUCTIONBuild, deploy, and migrations (CLI and compiler)
ASSEMBLY_LINE_ARTIFACT_PACKAGE_MODEBuild, deploy, and migrations (CLI and compiler)
ASSEMBLY_LINE_ATTACHMENT_FETCH_TIMEOUT_MSAttachments and resource projection
ASSEMBLY_LINE_ATTACHMENT_MAX_BYTESAttachments and resource projection
ASSEMBLY_LINE_ATTACHMENT_MAX_COUNTAttachments and resource projection
ASSEMBLY_LINE_AUTOMATIONS_APPROVALSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_AUTOMATIONS_DYNAMICSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_AUTO_MIGRATEProvider: Postgres (@assemblyline-agents/postgres)
ASSEMBLY_LINE_BASH_TIMEOUT_MAX_MSModel loop, memory, and logging
ASSEMBLY_LINE_BASH_TOOL_MODEModel loop, memory, and logging
ASSEMBLY_LINE_BLOB_ROOTSecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_CHECKPOINT_BLOB_THRESHOLD_BYTESModel loop, memory, and logging
ASSEMBLY_LINE_CHECKPOINT_EVERY_ITERATIONModel loop, memory, and logging
ASSEMBLY_LINE_CHECKPOINT_FAILED_TTL_MSModel loop, memory, and logging
ASSEMBLY_LINE_CHECKPOINT_MAX_ACTIVE_PER_RUN_NAMEModel loop, memory, and logging
ASSEMBLY_LINE_CHECKPOINT_SCHEDULED_TTL_MSModel loop, memory, and logging
ASSEMBLY_LINE_CHECKPOINT_TERMINAL_TTL_MSModel loop, memory, and logging
ASSEMBLY_LINE_CONNECTIONS_ALLOWED_HOSTSSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_CONNECTIONS_APPROVALSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_CONNECTIONS_DYNAMICSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_CONNECTION_AUTH_SESSIONS_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_CONNECTION_CALLBACK_BASE_URLServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_CONNECTION_DEFINITIONS_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_CONNECTION_GRANTS_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_CONNECTION_STORE_SECRETSecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_CONVERSATION_TURN_WORKERDurability workers and recovery
ASSEMBLY_LINE_DAYTONA_AUTO_ARCHIVE_MINUTESProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_AUTO_DELETE_MINUTESProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_AUTO_STOP_MINUTESProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_CREATE_TIMEOUT_SECONDSProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_DOMAIN_ALLOW_LISTProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_EPHEMERALProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_LIFECYCLE_TIMEOUT_SECONDSProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_NETWORK_ALLOW_LISTProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DAYTONA_NETWORK_BLOCK_ALLProvider: Daytona (@assemblyline-agents/daytona)
ASSEMBLY_LINE_DELIVERY_FILE_MAX_BYTESDelivery queue
ASSEMBLY_LINE_DELIVERY_FILE_MAX_COUNTDelivery queue
ASSEMBLY_LINE_DELIVERY_QUEUE_BATCH_SIZEDelivery queue
ASSEMBLY_LINE_DELIVERY_QUEUE_INTERVAL_MSDelivery queue
ASSEMBLY_LINE_DELIVERY_QUEUE_LEASE_MSDelivery queue
ASSEMBLY_LINE_DELIVERY_QUEUE_MAX_ATTEMPTSDelivery queue
ASSEMBLY_LINE_DELIVERY_RETRY_ATTEMPTSDelivery queue
ASSEMBLY_LINE_DELIVERY_RETRY_MAX_MSDelivery queue
ASSEMBLY_LINE_DELIVERY_RETRY_MIN_MSDelivery queue
ASSEMBLY_LINE_DELIVERY_WORKERDurability workers and recovery
ASSEMBLY_LINE_DEPLOY_ENVBuild, deploy, and migrations (CLI and compiler)
ASSEMBLY_LINE_DOCKER_COMMAND_TIMEOUT_MSProvider: Docker (@assemblyline-agents/docker)
ASSEMBLY_LINE_DOCKER_CPUSProvider: Docker (@assemblyline-agents/docker)
ASSEMBLY_LINE_DOCKER_IMAGEBuild, deploy, and migrations (CLI and compiler)
ASSEMBLY_LINE_DOCKER_MEMORYProvider: Docker (@assemblyline-agents/docker)
ASSEMBLY_LINE_DOCKER_NETWORKProvider: Docker (@assemblyline-agents/docker)
ASSEMBLY_LINE_DOCKER_PULL_POLICYProvider: Docker (@assemblyline-agents/docker)
ASSEMBLY_LINE_E2B_ALLOW_INTERNET_ACCESSProvider: E2B (@assemblyline-agents/e2b)
ASSEMBLY_LINE_E2B_PAUSE_KEEP_MEMORYProvider: E2B (@assemblyline-agents/e2b)
ASSEMBLY_LINE_E2B_REQUEST_TIMEOUT_MSProvider: E2B (@assemblyline-agents/e2b)
ASSEMBLY_LINE_E2B_RETAIN_TIMEOUT_MSProvider: E2B (@assemblyline-agents/e2b)
ASSEMBLY_LINE_E2B_TIMEOUT_MSProvider: E2B (@assemblyline-agents/e2b)
ASSEMBLY_LINE_ENABLE_API_RUNSServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_ENABLE_EVAL_RUNSServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_EVAL_JUDGE_MODELModel loop, memory, and logging
ASSEMBLY_LINE_HTTP_MAX_BODY_BYTESServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_INGRESS_RATE_LIMITConcurrency and rate limiting
ASSEMBLY_LINE_LEGACY_FULL_SANDBOX_HYDRATIONSandbox sync and hydration
ASSEMBLY_LINE_LOG_LEVELModel loop, memory, and logging
ASSEMBLY_LINE_MAX_CONCURRENT_RUNSConcurrency and rate limiting
ASSEMBLY_LINE_MAX_MODEL_ITERATIONSModel loop, memory, and logging
ASSEMBLY_LINE_MAX_QUEUED_RUNSConcurrency and rate limiting
ASSEMBLY_LINE_MAX_RUN_DURATION_MSDurability workers and recovery
ASSEMBLY_LINE_MEMORY_EMBEDDINGS_ENABLEDModel loop, memory, and logging
ASSEMBLY_LINE_MIGRATION_COMMANDBuild, deploy, and migrations (CLI and compiler)
ASSEMBLY_LINE_MODAL_TIMEOUT_MSProvider: Modal (@assemblyline-agents/modal)
ASSEMBLY_LINE_MODAL_WAIT_READYProvider: Modal (@assemblyline-agents/modal)
ASSEMBLY_LINE_MODEL_IMAGE_MAX_BYTESAttachments and resource projection
ASSEMBLY_LINE_MODEL_IMAGE_MAX_COUNTAttachments and resource projection
ASSEMBLY_LINE_MODEL_IMAGE_MAX_TOTAL_BYTESAttachments and resource projection
ASSEMBLY_LINE_MODEL_MAX_RETRIESModel loop, memory, and logging
ASSEMBLY_LINE_MODEL_MAX_RETRY_DELAY_MSModel loop, memory, and logging
ASSEMBLY_LINE_MODEL_STREAM_IDLE_TIMEOUT_MSModel loop, memory, and logging
ASSEMBLY_LINE_MODEL_TIMEOUT_MSModel loop, memory, and logging
ASSEMBLY_LINE_MODEL_VIDEO_MAX_BYTESAttachments and resource projection
ASSEMBLY_LINE_MODEL_VIDEO_MAX_COUNTAttachments and resource projection
ASSEMBLY_LINE_MODEL_VIDEO_MAX_TOTAL_BYTESAttachments and resource projection
ASSEMBLY_LINE_OPENAI_ADMIN_KEYUsage accounting
ASSEMBLY_LINE_OPENAI_AGENT_BY_API_KEY_IDUsage accounting
ASSEMBLY_LINE_OPENAI_AGENT_BY_PROJECT_IDUsage accounting
ASSEMBLY_LINE_OPENAI_USAGE_API_KEY_IDSUsage accounting
ASSEMBLY_LINE_OPENAI_USAGE_PROJECT_IDSUsage accounting
ASSEMBLY_LINE_OPENROUTER_API_KEY_HASHUsage accounting
ASSEMBLY_LINE_OPENROUTER_CONTROL_AGENT_IDUsage accounting
ASSEMBLY_LINE_OTLP_BATCH_MAXOTLP telemetry (@assemblyline-agents/otlp)
ASSEMBLY_LINE_OTLP_FLUSH_MSOTLP telemetry (@assemblyline-agents/otlp)
ASSEMBLY_LINE_OUTPUT_VALIDATION_MAX_RETRIESModel loop, memory, and logging
ASSEMBLY_LINE_POSTGRES_CONNECTION_ENVProvider: Postgres (@assemblyline-agents/postgres)
ASSEMBLY_LINE_POSTGRES_SSL_REJECT_UNAUTHORIZEDProvider: Postgres (@assemblyline-agents/postgres)
ASSEMBLY_LINE_PUBLIC_URLServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOWED_KINDSAttachments and resource projection
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOW_WRITABLEAttachments and resource projection
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_BYTESAttachments and resource projection
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_FILESAttachments and resource projection
ASSEMBLY_LINE_RUNS_RATE_LIMITConcurrency and rate limiting
ASSEMBLY_LINE_RUN_HEARTBEAT_MSDurability workers and recovery
ASSEMBLY_LINE_RUN_RECOVERYDurability workers and recovery
ASSEMBLY_LINE_RUN_RECOVERY_INTERVAL_MSDurability workers and recovery
ASSEMBLY_LINE_SANDBOX_ROOTSecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_MODESandbox snapshots
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_REASONSandbox snapshots
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_RETAIN_LASTSandbox snapshots
ASSEMBLY_LINE_SANDBOX_SYNC_BATCH_SIZESandbox sync and hydration
ASSEMBLY_LINE_SANDBOX_SYNC_INLINESandbox sync and hydration
ASSEMBLY_LINE_SANDBOX_SYNC_INTERVAL_MSSandbox sync and hydration
ASSEMBLY_LINE_SANDBOX_SYNC_LEASE_MSSandbox sync and hydration
ASSEMBLY_LINE_SANDBOX_SYNC_MAX_ATTEMPTSSandbox sync and hydration
ASSEMBLY_LINE_SANDBOX_SYNC_WORKERDurability workers and recovery
ASSEMBLY_LINE_SCHEDULER_ENABLEDScheduler
ASSEMBLY_LINE_SCHEDULER_SECRETServer and auth (@assemblyline-agents/node)
ASSEMBLY_LINE_SCHEDULE_MAX_FAILURESDurability workers and recovery
ASSEMBLY_LINE_TOOL_TIMEOUT_MSModel loop, memory, and logging
ASSEMBLY_LINE_USAGE_RECONCILIATION_LAG_HOURSUsage accounting
ASSEMBLY_LINE_VPS_ALERT_WEBHOOK_URLProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_ACCESS_KEY_IDProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_BUCKETProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_ENDPOINTProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_REGIONProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_RETENTION_DAYSProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_BACKUP_SECRET_ACCESS_KEYProvider: VPS (@assemblyline-agents/vps)
ASSEMBLY_LINE_VPS_HOSTS_FILEProvider: VPS (@assemblyline-agents/vps)
OPENROUTER_MANAGEMENT_KEYUsage accounting
ASSEMBLY_LINE_SCHEDULES_APPROVALLegacy alias for ASSEMBLY_LINE_AUTOMATIONS_APPROVAL.
ASSEMBLY_LINE_SCHEDULES_DYNAMICLegacy alias for ASSEMBLY_LINE_AUTOMATIONS_DYNAMIC.
ASSEMBLY_LINE_SCHEDULES_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_SECRETSecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_SHUTDOWN_TIMEOUT_MSGraceful shutdown
ASSEMBLY_LINE_SIGNAL_HANDLERSGraceful shutdown
ASSEMBLY_LINE_SKILLS_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_SKILLS_WRITABLESelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_SKILLS_WRITE_APPROVALSelf-improvement, dynamic automations, dynamic connections
ASSEMBLY_LINE_STATE_FILESecrets and local store paths (@assemblyline-agents/node)
ASSEMBLY_LINE_TEAMS_ALLOWED_SERVICE_URLSProvider: Microsoft Teams (@assemblyline-agents/teams)
ASSEMBLY_LINE_TEAMS_ALLOWED_TENANTSProvider: Microsoft Teams (@assemblyline-agents/teams)
ASSEMBLY_LINE_TEAMS_OPENID_METADATA_URLProvider: Microsoft Teams (@assemblyline-agents/teams)
ASSEMBLY_LINE_TOOL_OUTPUT_MAX_CHARSModel loop, memory, and logging
ASSEMBLY_LINE_TRUST_PROXYConcurrency and rate limiting
ASSEMBLY_LINE_ZIP_MAX_FILESAttachments and resource projection
ASSEMBLY_LINE_ZIP_MAX_TOTAL_BYTESAttachments and resource projection
OTEL_EXPORTER_OTLP_ENDPOINTOTLP telemetry (@assemblyline-agents/otlp)
OTEL_EXPORTER_OTLP_HEADERSOTLP telemetry (@assemblyline-agents/otlp)
OTEL_EXPORTER_OTLP_TIMEOUTOTLP telemetry (@assemblyline-agents/otlp)
OTEL_SERVICE_NAMEOTLP telemetry (@assemblyline-agents/otlp)

Server and auth (@assemblyline-agents/node)

VariableDefaultEffect
ASSEMBLY_LINE_ADMIN_TOKENunsetBearer token for control-plane routes (/manifest, /routes, /runs*). Production boot fails without this or a host auth policy.
ASSEMBLY_LINE_ENABLE_API_RUNSdisabledtrue/1 enables authenticated POST /runs in production (always on in dev mode).
ASSEMBLY_LINE_ENABLE_EVAL_RUNSdisabledtrue/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_SECRETunsetShared secret for /assembly-line/automations/tick and its deprecated scheduler alias (Authorization: Bearer or x-assembly-line-scheduler-secret, compared constant-time). Unset means dev-mode-only tick.
ASSEMBLY_LINE_HTTP_MAX_BODY_BYTES10485760 (10 MiB)Max HTTP request body size before parsing.
ASSEMBLY_LINE_PUBLIC_URLhttp://localhostPublic base URL; also the fallback for connection callbacks.
ASSEMBLY_LINE_CONNECTION_CALLBACK_BASE_URLfalls back to ASSEMBLY_LINE_PUBLIC_URLBase URL for OAuth/connection authorization callbacks.

Usage accounting

VariableDefaultEffect
ASSEMBLY_LINE_OPENAI_ADMIN_KEY / OPENAI_ADMIN_KEYunsetOpenAI organization Admin API key used only by authenticated POST /usage/reconcile. Never stored in the ledger.
OPENROUTER_MANAGEMENT_KEYunsetImports OpenRouter completed-day activity control totals.
ASSEMBLY_LINE_USAGE_RECONCILIATION_LAG_HOURS48OpenAI provider-settlement delay excluded from control-total imports.
ASSEMBLY_LINE_OPENAI_USAGE_PROJECT_IDSall accessibleComma-separated OpenAI project filter for provider usage and cost totals.
ASSEMBLY_LINE_OPENAI_USAGE_API_KEY_IDSall accessibleComma-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_IDunsetJSON 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_IDunsetJSON 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_HASHunsetOpenRouter activity filter for one API-key hash.
ASSEMBLY_LINE_OPENROUTER_CONTROL_AGENT_IDunsetAgent 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

VariableDefaultEffect
ASSEMBLY_LINE_MAX_CONCURRENT_RUNSunlimited (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_RUNS0Direct 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_LIMIToffProvider-channel token bucket as capacity/refillPerSecond (e.g. 60/10).
ASSEMBLY_LINE_RUNS_RATE_LIMIToffPOST /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_PROXYofftrue (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

VariableDefaultEffect
ASSEMBLY_LINE_SHUTDOWN_TIMEOUT_MS30000Max wait for in-flight runs to drain during graceful shutdown.
ASSEMBLY_LINE_SIGNAL_HANDLERSonfalse/0 prevents listenNodeRuntime from installing SIGTERM/SIGINT graceful-shutdown handlers.

OTLP telemetry (@assemblyline-agents/otlp)

VariableDefaultEffect
OTEL_EXPORTER_OTLP_ENDPOINTrequired for createOtlpSinkFromEnvOTLP/HTTP endpoint.
OTEL_EXPORTER_OTLP_HEADERSunsetComma-separated OTLP headers such as Authorization=Basic ....
OTEL_SERVICE_NAMEinstrumentation service nameService name override for exported spans.
OTEL_EXPORTER_OTLP_TIMEOUTsink defaultPer-export timeout in milliseconds.
ASSEMBLY_LINE_OTLP_BATCH_MAXsink defaultMax spans batched before an OTLP flush.
ASSEMBLY_LINE_OTLP_FLUSH_MSsink defaultFlush interval for the OTLP sink.

Durability workers and recovery

VariableDefaultEffect
ASSEMBLY_LINE_DELIVERY_WORKERonfalse/0 disables the delivery queue worker.
ASSEMBLY_LINE_SANDBOX_SYNC_WORKERonfalse/0 disables the sandbox-sync worker.
ASSEMBLY_LINE_CONVERSATION_TURN_WORKERonfalse/0 disables periodic mailbox recovery/polling. Newly accepted and terminally settled turns still request an immediate local drain.
ASSEMBLY_LINE_RUN_RECOVERYonfalse/0 disables boot recovery and the periodic orphan sweep.
ASSEMBLY_LINE_RUN_HEARTBEAT_MS30000How often executing runs bump updatedAt to stay out of the orphan sweep.
ASSEMBLY_LINE_RUN_RECOVERY_INTERVAL_MS60000Orphan sweep interval; runs are only candidates after max(5min, 4x heartbeat) staleness.
ASSEMBLY_LINE_MAX_RUN_DURATION_MS3600000Wall-clock cap per active run execution segment, enforced by the heartbeat: on expiry the in-flight model request is aborted and the run fails with reason run.max_duration_exceeded. 0 disables. Paused (approval/input) runs do not consume budget.
ASSEMBLY_LINE_SCHEDULE_MAX_FAILURES5Consecutive dynamic-schedule failures before the schedule is auto-disabled (escalating backoff between attempts: 5 min doubling, capped at 6 h).

Delivery queue

VariableDefaultEffect
ASSEMBLY_LINE_DELIVERY_RETRY_ATTEMPTS2In-process send attempts before deferring to the durable queue.
ASSEMBLY_LINE_DELIVERY_RETRY_MIN_MS250Min backoff between in-process retries.
ASSEMBLY_LINE_DELIVERY_RETRY_MAX_MS5000Max backoff between in-process retries.
ASSEMBLY_LINE_DELIVERY_QUEUE_LEASE_MS60000Lease 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_SIZE10Deliveries leased per worker tick.
ASSEMBLY_LINE_DELIVERY_QUEUE_MAX_ATTEMPTS5Total attempts before a delivery goes terminally failed.
ASSEMBLY_LINE_DELIVERY_QUEUE_INTERVAL_MS15000Delivery worker tick interval.
ASSEMBLY_LINE_DELIVERY_FILE_MAX_COUNT10 (max 100)Max attachment files per delivery.
ASSEMBLY_LINE_DELIVERY_FILE_MAX_BYTES52428800 (50 MiB)Max bytes per delivery file.

Sandbox sync and hydration

VariableDefaultEffect
ASSEMBLY_LINE_SANDBOX_SYNC_INLINEfalseRun sandbox sync inline instead of through the background worker.
ASSEMBLY_LINE_SANDBOX_SYNC_LEASE_MS300000Lease duration for a claimed sync job.
ASSEMBLY_LINE_SANDBOX_SYNC_BATCH_SIZE10Sync jobs leased per worker tick.
ASSEMBLY_LINE_SANDBOX_SYNC_MAX_ATTEMPTS5Max attempts before a job is blocked for an operator.
ASSEMBLY_LINE_SANDBOX_SYNC_INTERVAL_MS30000Sandbox-sync worker tick interval.
ASSEMBLY_LINE_LEGACY_FULL_SANDBOX_HYDRATIONofftrue/1 forces legacy full hydration instead of minimal per-path hydration.

Sandbox snapshots

VariableDefaultEffect
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_MODEunset (policy default never)never, manual, on_failure, or always; overrides the declared snapshot policy.
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_RETAIN_LASTunsetSnapshots to retain (non-negative integer); only read when a mode is set.
ASSEMBLY_LINE_SANDBOX_SNAPSHOT_REASONunsetFree-form snapshot reason label.

Model loop, memory, and logging

VariableDefaultEffect
CODEX_HOMECodex CLI defaultLocation of the Codex CLI config, login cache, and persisted app-server threads used by openai-codex/*. Assembly Line never reads the OAuth cache directly.
CODEX_ACCESS_TOKENunsetInput for `printenv CODEX_ACCESS_TOKEN
ASSEMBLY_LINE_CHECKPOINT_EVERY_ITERATIONtruePersist the harness continuation checkpoint after every model iteration (bounds crash loss to one in-flight model call).
ASSEMBLY_LINE_CHECKPOINT_MAX_ACTIVE_PER_RUN_NAME2Latest overwrite-style active checkpoints retained per (run_id, name) for live/running/waiting runs.
ASSEMBLY_LINE_CHECKPOINT_TERMINAL_TTL_MS604800000 (7 days)Default TTL used by checkpoint maintenance for completed/cancelled terminal-run checkpoints.
ASSEMBLY_LINE_CHECKPOINT_FAILED_TTL_MS1209600000 (14 days)TTL used by checkpoint maintenance for failed-run checkpoints.
ASSEMBLY_LINE_CHECKPOINT_SCHEDULED_TTL_MS86400000 (1 day)Aggressive TTL used by checkpoint maintenance for terminal runs produced by schedules.
ASSEMBLY_LINE_CHECKPOINT_BLOB_THRESHOLD_BYTES65536 (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_CHARS8000Max serialized tool-output size handed back to the model before it becomes a { truncated, preview } object.
ASSEMBLY_LINE_MAX_MODEL_ITERATIONS25Default agent-loop iteration budget. A positive integer; agent/subagent maxIterations overrides it.
ASSEMBLY_LINE_OUTPUT_VALIDATION_MAX_RETRIES2Corrective model retries after a final response fails outputSchema. Validation retries share the active execution's iteration budget.
ASSEMBLY_LINE_MODEL_MAX_RETRIES2Retry 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_MS600000HTTP request timeout per model call, forwarded to the provider SDK.
ASSEMBLY_LINE_MODEL_MAX_RETRY_DELAY_MS60000Cap on backoff delays and server-requested (Retry-After) waits between model retries.
ASSEMBLY_LINE_MODEL_STREAM_IDLE_TIMEOUT_MS300000Abort 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_MS600000Default wall-clock deadline for tool execute calls; a per-tool timeoutMs on the tool definition overrides it. The promise is raced, not cancelled. 0 disables.
ASSEMBLY_LINE_BASH_TIMEOUT_MAX_MS600000Upper 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_MODELagent modelDefault provider/model for eval cases with expect.judge; --judge-model takes precedence.
ASSEMBLY_LINE_MEMORY_EMBEDDINGS_ENABLEDon only when an embedding provider is configuredEnables embedding-backed semantic memory search.
ASSEMBLY_LINE_LOG_LEVELinfoStructured log verbosity: debug, info, warn, or error.
ASSEMBLY_LINE_BASH_TOOL_MODEenabledCore 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

VariableDefaultEffect
ASSEMBLY_LINE_ATTACHMENT_MAX_COUNT20 (max 100)Max inbound attachments per turn.
ASSEMBLY_LINE_ATTACHMENT_MAX_BYTES52428800 (50 MiB)Max bytes per attachment.
ASSEMBLY_LINE_ATTACHMENT_FETCH_TIMEOUT_MS30000 (1s-120s)Attachment download timeout.
ASSEMBLY_LINE_MODEL_IMAGE_MAX_COUNT20 (max 100)Max stored images hydrated as native model input per turn.
ASSEMBLY_LINE_MODEL_IMAGE_MAX_BYTES20971520 (20 MiB)Max decoded bytes for one native model image input.
ASSEMBLY_LINE_MODEL_IMAGE_MAX_TOTAL_BYTES52428800 (50 MiB)Max decoded image bytes supplied to one model turn.
ASSEMBLY_LINE_MODEL_VIDEO_MAX_COUNT4 (max 20)Max stored videos hydrated as native model input per turn.
ASSEMBLY_LINE_MODEL_VIDEO_MAX_BYTES52428800 (50 MiB)Max decoded bytes for one native model video input.
ASSEMBLY_LINE_MODEL_VIDEO_MAX_TOTAL_BYTES104857600 (100 MiB)Max decoded video bytes supplied to one model turn.
ASSEMBLY_LINE_ZIP_MAX_FILES500 (max 10000)Max entries when expanding a ZIP attachment.
ASSEMBLY_LINE_ZIP_MAX_TOTAL_BYTES104857600 (100 MiB)Max total uncompressed ZIP bytes.
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_FILES8Max resources projected into a sandbox per request.
ASSEMBLY_LINE_RESOURCE_PROJECTION_MAX_BYTES262144 (256 KiB)Max bytes per projected resource.
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOWED_KINDSall kindsComma-separated allowlist of projectable resource kinds.
ASSEMBLY_LINE_RESOURCE_PROJECTION_ALLOW_WRITABLEfalseAllow projecting writable resources.

Self-improvement, dynamic automations, dynamic connections

Env overrides for the agent.ts blocks of the same names.

VariableDefaultEffect
ASSEMBLY_LINE_SKILLS_WRITABLEtrueAgent may author/edit its own skills.
ASSEMBLY_LINE_SKILLS_WRITE_APPROVALfalseSkill writes require approval.
ASSEMBLY_LINE_AUTOMATIONS_DYNAMICtrueAgent may create dynamic time-based automations.
ASSEMBLY_LINE_AUTOMATIONS_APPROVALfalseDynamic automation changes require approval.
ASSEMBLY_LINE_SCHEDULES_DYNAMICDeprecated alias for ASSEMBLY_LINE_AUTOMATIONS_DYNAMIC.
ASSEMBLY_LINE_SCHEDULES_APPROVALDeprecated alias for ASSEMBLY_LINE_AUTOMATIONS_APPROVAL.
ASSEMBLY_LINE_CONNECTIONS_DYNAMICfalseAgent may persist dynamic connections.
ASSEMBLY_LINE_CONNECTIONS_APPROVALtrueSaving a dynamic connection requires approval.
ASSEMBLY_LINE_CONNECTIONS_ALLOWED_HOSTSmanifest allowedHosts or emptyComma-separated dynamic-connection host allowlist.

Scheduler

VariableDefaultEffect
ASSEMBLY_LINE_SCHEDULER_ENABLEDonfalse/0 disables the in-process scheduler loop.

Secrets and local store paths (@assemblyline-agents/node)

VariableDefaultEffect
ASSEMBLY_LINE_CONNECTION_STORE_SECRETunsetEncryption secret for file-backed connection credential stores. Must be at least 32 characters outside dev mode.
ASSEMBLY_LINE_SECRETunsetFallback for ASSEMBLY_LINE_CONNECTION_STORE_SECRET; the same 32-character minimum applies.
ASSEMBLY_LINE_CONNECTION_GRANTS_FILE<artifactRoot>/connection-grants.enc.jsonEncrypted connection-grant store path.
ASSEMBLY_LINE_CONNECTION_AUTH_SESSIONS_FILE<artifactRoot>/connection-auth-sessions.enc.jsonEncrypted authorization-session store path.
ASSEMBLY_LINE_CONNECTION_DEFINITIONS_FILE<artifactRoot>/connection-definitions.jsonDynamic connection definition store path.
ASSEMBLY_LINE_SKILLS_FILE<artifactRoot>/skills-store.jsonDurable skill store path (file-backed state).
ASSEMBLY_LINE_SCHEDULES_FILE<artifactRoot>/dynamic-schedules.jsonDynamic schedule store path (file-backed state).
ASSEMBLY_LINE_STATE_FILE<artifactRoot>/runtime-state.jsonFile-backed runtime state path.
ASSEMBLY_LINE_BLOB_ROOT<artifactRoot>/blobsLocal blob storage root.
ASSEMBLY_LINE_SANDBOX_ROOT<artifactRoot>/sandboxLocal sandbox root.

Build, deploy, and migrations (CLI and compiler)

VariableDefaultEffect
ASSEMBLY_LINE_ARTIFACT_PACKAGE_MODElocalrelease makes build artifacts reference published @assemblyline-agents/* versions instead of vendored workspace copies.
ASSEMBLY_LINE_DOCKER_IMAGEopeneve:<agentRevision[0:12]>Docker deploy image tag (after --docker-image).
ASSEMBLY_LINE_DEPLOY_ENVdevelopmentDeployment environment after --env and before the gateway.ts option/default.
ASSEMBLY_LINE_MIGRATION_COMMANDunsetMigration runner executable for hosted deploys (after --migration-command).
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_IN_PRODUCTIONofftrue (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, static gateway.ts 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)

VariableDefaultEffect
ASSEMBLY_LINE_POSTGRES_CONNECTION_ENVDATABASE_URLName of the env var holding the connection string.
ASSEMBLY_LINE_POSTGRES_SSL_REJECT_UNAUTHORIZEDtrue (Railway preset: false)Certificate verification is on by default when SSL is used; Railway's generated certificate is self-signed.
ASSEMBLY_LINE_AUTO_MIGRATEonfalse (exactly) skips running Assembly Line migrations at provider construction.

neonPostgres(), railwayPostgres(), and supabasePostgres() all read DATABASE_URL by default and use the same Assembly Line schema and migrations. railwayPostgres() 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)

VariableDefaultEffect
ASSEMBLY_LINE_DOCKER_NETWORKnoneContainer network for sandbox containers.
ASSEMBLY_LINE_DOCKER_CPUSunsetCPU limit passed to docker run.
ASSEMBLY_LINE_DOCKER_MEMORYunsetMemory limit passed to docker run.
ASSEMBLY_LINE_DOCKER_PULL_POLICYunset (Docker default)never, missing, or always.
ASSEMBLY_LINE_DOCKER_COMMAND_TIMEOUT_MSunsetTimeout for Docker CLI commands.

Provider: VPS (@assemblyline-agents/vps)

Preview — this surface may change without notice.

VariableDefaultEffect
ASSEMBLY_LINE_VPS_HOSTS_FILEnearest assembly-line.hosts.jsonExplicit versioned named-host inventory path; --vps-hosts-file takes precedence.
Inventory identityFileEnv variablerequiredLocal path to the SSH private key for that named host. The variable name is inventory-defined.
ASSEMBLY_LINE_VPS_BACKUP_BUCKETrequired in host Postgres modeS3-compatible database-backup bucket.
ASSEMBLY_LINE_VPS_BACKUP_REGIONrequired in host Postgres modeBackup bucket region.
ASSEMBLY_LINE_VPS_BACKUP_ACCESS_KEY_IDrequired in host Postgres modeBackup-only S3 access key.
ASSEMBLY_LINE_VPS_BACKUP_SECRET_ACCESS_KEYrequired in host Postgres modeBackup-only S3 secret key.
ASSEMBLY_LINE_VPS_BACKUP_ENDPOINTprovider defaultOptional custom S3-compatible endpoint.
ASSEMBLY_LINE_VPS_BACKUP_RETENTION_DAYS30Number of days retained by the daily S3-compatible backup job.
ASSEMBLY_LINE_VPS_ALERT_WEBHOOK_URLunsetOptional 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 vpsDeploy() options are:

OptionDefaultEffect
hostrequiredNamed host from the versioned inventory.
domainrequiredPrimary public hostname.
aliases[]Additional hostnames claimed and routed transactionally with the primary domain.
expectedRegionunsetEmits a latency warning when inventory reports a different provider region.
hostsFileinventory discoveryExplicit 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.
caddyImagecaddy:2.10.0-alpineExplicit non-latest edge image.
postgresImagepostgres:17.10-alpineExplicit numeric-major Postgres image. An image mismatch requires state upgrade-postgres.
awsCliImageamazon/aws-cli:2.17.57Explicit non-latest backup client image.

CLI overrides are --vps-host, --vps-domain, and --vps-hosts-file. Lifecycle commands add deploy --prepare-only, deploy --activate, deploy --rollback, and deploy --domains-only. Operational commands are hosts bootstrap, state migrate-postgres, state upgrade-postgres, secrets diff, and agent quiesce|resume|status.

Provider: E2B (@assemblyline-agents/e2b)

VariableDefaultEffect
ASSEMBLY_LINE_E2B_TIMEOUT_MSSDK defaultSandbox lifetime timeout.
ASSEMBLY_LINE_E2B_RETAIN_TIMEOUT_MSSDK defaultRetain/pause timeout for dirty sandboxes.
ASSEMBLY_LINE_E2B_REQUEST_TIMEOUT_MSSDK defaultPer-request timeout.
ASSEMBLY_LINE_E2B_PAUSE_KEEP_MEMORYSDK defaultKeep memory when pausing.
ASSEMBLY_LINE_E2B_ALLOW_INTERNET_ACCESSSDK defaultSandbox internet egress.

sandbox/*.ts 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.

VariableDefaultEffect
ASSEMBLY_LINE_MODAL_TIMEOUT_MSSDK defaultSandbox timeout.
ASSEMBLY_LINE_MODAL_WAIT_READYSDK defaultWait for the sandbox to be ready before use.

Provider: Daytona (@assemblyline-agents/daytona)

VariableDefaultEffect
ASSEMBLY_LINE_DAYTONA_CREATE_TIMEOUT_SECONDSSDK defaultSandbox creation timeout.
ASSEMBLY_LINE_DAYTONA_LIFECYCLE_TIMEOUT_SECONDSSDK defaultLifecycle operation timeout.
ASSEMBLY_LINE_DAYTONA_AUTO_STOP_MINUTESSDK defaultAuto-stop interval.
ASSEMBLY_LINE_DAYTONA_AUTO_ARCHIVE_MINUTESSDK defaultAuto-archive interval.
ASSEMBLY_LINE_DAYTONA_AUTO_DELETE_MINUTESSDK defaultAuto-delete interval.
ASSEMBLY_LINE_DAYTONA_EPHEMERALtrueOnly the literal string false disables ephemeral sandboxes.
ASSEMBLY_LINE_DAYTONA_NETWORK_BLOCK_ALLSDK defaultBlock all sandbox network egress.
ASSEMBLY_LINE_DAYTONA_NETWORK_ALLOW_LISTunsetNetwork allowlist.
ASSEMBLY_LINE_DAYTONA_DOMAIN_ALLOW_LISTunsetDomain allowlist.
ASSEMBLY_LINE_ALLOW_LOCAL_SANDBOX_FALLBACKofftrue (exactly) allows local fallback when the Daytona client is absent (dev/test only).

Provider: Microsoft Teams (@assemblyline-agents/teams)

VariableDefaultEffect
ASSEMBLY_LINE_TEAMS_ALLOWED_TENANTSall tenantsComma-separated tenant ID allowlist.
ASSEMBLY_LINE_TEAMS_ALLOWED_SERVICE_URLSall URLsComma-separated service-URL prefix allowlist.
ASSEMBLY_LINE_TEAMS_OPENID_METADATA_URLBot Framework defaultOverride for the OpenID metadata URL used in JWT verification.