gatelineAPI reference
interface OrchestratorOptions {
    adapters?: string[];
    budgetEnforcement?: boolean;
    frameworkPrefix?: string;
    heartbeatSeconds?: number;
    localOnly?: boolean;
    log?: (line: string) => void;
    maxConcurrentDispatches?: number;
    onSupersede?: (status: CodeTreeStatus) => void;
    push?: boolean;
    repoDir: string;
    requireBudget?: boolean;
    roleTimeoutSeconds?: number;
    runner?: { enabled: boolean };
    spendLimitUsd?: null | number;
    spendWindowHours?: number;
}

Properties

adapters?: string[]

Headless adapter names; the first is the default runner (default: claude-code).

budgetEnforcement?: boolean

Budget enforcement switch (#109), default on: false disables the DB/RB/HB pauses — for operators billed flat-rate, where dollar caps do not map to marginal cost. Metering stays unconditional.

frameworkPrefix?: string

Metadata prefix of an gateline init --prefix host, when not .gateline.

heartbeatSeconds?: number
localOnly?: boolean

Explicit local-only designator (mirrors push's explicit tier, the core resolution table's rule 2/AC1.1): unset auto-detects off a missing remote.origin.url, same trigger as loadSources. Conflicts with an explicit push: true — rejected before anything starts (AC4.1).

log?: (line: string) => void
maxConcurrentDispatches?: number

Most dispatches running at once across all runs; 0 disables (#227).

onSupersede?: (status: CodeTreeStatus) => void

Self-supersede (#141): fired exactly once, after the confirming heartbeat write, when the code tree this process's own module lives in fast-forwards past the commit it started on. Only wired when the running module resolves to a git checkout (resolveCodeRepo) — an npm-installed/viewer-only process has nothing to watch and startOrchestrator behaves exactly as it did before #141.

push?: boolean

Push every orchestrator commit to origin — origin is the record.

repoDir: string
requireBudget?: boolean

Refuse dispatch on any run missing budget.cost_limit_usd.

roleTimeoutSeconds?: number

Wall clock per dispatched role before its process group is killed (default 30 min).

runner?: { enabled: boolean }

Opt into remote dispatch (run "runner-agent", R6/R9): the engine's dispatcher becomes a RemoteDispatcher instead of the local HeadlessDispatcher(s) — dispatch requests park as promises a workstation agent claims and reports over HTTP (runner-dispatcher.ts, the server's runner-api.ts) rather than spawning a harness in this process. A configuration choice, not a routing decision: unset or false dispatches exactly as before (AC9.1).

spendLimitUsd?: null | number

Host-wide spend ceiling across active runs.

spendWindowHours?: number

The rolling window spendLimitUsd measures over, in hours (default 24, #97).