Skip to content

gaia conductor

The node agent: registers this machine's conductor for a project checkout, claims tickets, runs agents on them, and scaffolds a project's configuration. The operating guide is Run a conductor.

Synopsis

gaia [--conductor <name>] conductor [--log-level <level>] [--log-sink <sink>] <subcommand>

Global flags

FlagWhereEffect
--conductor <name>before conductorselect a conductor config by file stem: conductorconductor.config.js, else <name>.conductor.config.js. Env: $GAIA_CONDUCTOR. Flag wins over env.
--log-level <level>after conductordebug · info (default) · warn · error. Env fallback GAIA_LOG_LEVEL. debug shows per-poll ticks, claims and idle cycles.
--log-sink <sink>after conductorstdout · file · both. Default both on a terminal, file otherwise. file/both write log.txt in the checkout's .gaia/ workspace root. Env fallback GAIA_CONDUCTOR_LOG.

Subcommands

SubcommandOptionsWhat it does
start--foreground run the loop in this process (default: herdr-hosted) · --no-update-check skip the daily CLI update checkstart the conductor loop
pollrun one conductor cycle, then exit
statusone line for this checkout's conductor
lsone line per conductor the control plane holds for the current user — on any machine
stop--now hard-kill via the host and let the server-side reaper mark it offline (default: graceful offline)stop the conductor
reaptear down herdr worktrees of finished-but-uncleaned tickets (orphans a live tick missed: conductor down at done, restarted, or reassigned)
initsee belowscaffold the project's engine config and the machine's context

The status line

status and ls print tab-separated columns:

<machine_id>	<liveness>	<project>	<label>	<workspace_root>
pg-Mac.fritz.box-gaia	online	gaia	pg-Mac.fritz.box-gaia	/Users/pascal/Projects/gaia

Liveness is derived, and it is the same three words the cockpit and the control plane use: online (heartbeating within its lease) · stale (registered as online but the heartbeat is old or the lease has lapsed) · offline (stopped or never reported).

init options

OptionMeaning
--base-url <url>control-plane base URL (site.base_url) — required only when onboarding this machine
--project <name>GAIA project name — required only to scaffold the committed repository config; omit for machine-only onboarding
--secret-env <VAR>environment variable holding the OAuth client secret (else a terminal prompt)
--client-id <id>OAuth consumer id (default gaia-agent)
--machine-id <id>machine host token for the context (default: the hostname)
--user-id <id>the developer's short id for the user-global context
--machine-path <path>user-global machine context path (default ~/.gaia/machine.config.js)
--config <path>target committed engine config path (default ./.gaia/conductor.config.js)
--forceoverwrite an existing committed config
--reonboardredo machine-context onboarding even if a context file exists

init is idempotent: an existing engine config is kept unless --force; the machine context is fill-only-missing — existing values always win, and --reonboard only reruns the onboarding questions on a machine that already has a context, still filling absent or blank keys only; outside a terminal, --secret-env and --user-id must be passed. It writes ./.gaia/conductor.config.js (committed; states: ['spec', 'diagnose', 'coding', 'review'], max_parallel: 5, DDEV worktree hooks, Claude Code as the agent), seeds ~/.gaia/gaia.config.js, and writes ~/.gaia/machine.config.js (mode 0600). See Connect a repository.

Files

PathRole
./.gaia/conductor.config.jsthe engine config — project, machine_id, states, max_parallel, worktree hooks, addons. Variants: ./.gaia/<name>.conductor.config.js.
./.gaia/conductor.config.local.jsoptional, uncommitted local override (for example max_parallel)
~/.gaia/gaia.config.jsthe default connection every repository inherits
~/.gaia/machine.config.jsidentity and the client secret
<workspace_root>/.gaia/log.txtthe conductor log (file/both sinks)
.gaia-worktrees/<branch>the per-ticket worktrees

Environment

VariableEffect
GAIA_CONDUCTORdefault value for --conductor
GAIA_CONDUCTOR_CONFIGexplicit engine config path; wins over discovery
GAIA_LOG_LEVELdefault value for --log-level
GAIA_CONDUCTOR_LOGdefault value for --log-sink

Next