Skip to content

Configuration

Repository configuration is JSON with a plugins array. Each item has a plugin name and optional disabled boolean. maestro install writes the managed policy defaults; maestro plugin enable <name> and maestro plugin disable <name> own lifecycle changes.

This file lives inside the repository, so it states policy only and can never grant trust. Whether an external plugin may execute at all is recorded in ~/.maestro/trust.json by maestro plugin trust.

The default policy state is:

PluginState
policy-proofenabled
policy-breakdownenabled
policy-tdddisabled
policy-qadisabled
policy-researchdisabled
policy-witnessdisabled
policy-lifecycledisabled

Policy also has a machine layer, ~/.maestro/config, with the same shape. The loader reads it before the repository file, and a repository entry wins for the same plugin name. maestro install never writes the machine layer. The Hub room (~/maestro) carries no .maestro/config, so it runs the built-in defaults; those match the table above except policy-lifecycle, which is enabled there and defines no gates.

The source inventory was generated with the repository’s required exhaustive search:

Terminal window
rg -o 'process\.env\.[A-Z_]+' src/ | sort -u
VariableRuntime use
HOMEResolve user-level runtime, source, plugin, room, and registry paths.
PATHLocate installed tools and the shim directory.
SHELLChoose .zshrc or .bashrc for the one managed source line.
MAESTRO_READ_ONLYWith value 1, enable fail-closed read-only mode.
MAESTRO_AUTO_UPDATEWith value 0, suppress the source/runtime drift advisory.
MAESTRO_INSTALL_REEXECInternal guard for installer re-execution after runtime sync.
MAESTRO_SESSION_IDExplicit Maestro session identity, highest precedence.
MAESTRO_SESSION_PIDExplicit positive host PID for session liveness.
MAESTRO_SESSION_NONEWith value 1, disable session persistence for a process.
CODEX_SESSION_ID, CODEX_THREAD_IDCodex session identity candidates.
CLAUDE_CODE_SESSION_ID, CLAUDE_SESSION_IDClaude session identity candidates.
CURSOR_SESSION_IDCursor session identity candidate.
CODEX_CI, CODEX_SHELLSignals used to classify an otherwise unnamed session as Codex.

The curl installer also reads MAESTRO_SOURCE_DIR and MAESTRO_REF; those variables live in scripts/install.sh, not under src/.

PathPurpose
~/.maestro/source/Default Git checkout followed by maestro update.
~/.maestro/source.jsonRecorded source checkout metadata.
~/.maestro/runtime/Installed TypeScript runtime and install stamp.
~/.local/bin/maestroBun shim that loads the installed runtime.
~/maestro/Supervisor room.
~/maestro/SLP.mdCanonical SLP v2 Workspace Pack and model defaults.
~/maestro/.maestro/maestro.dbSupervisor room store.
~/maestro/registryRegistered repository paths read by maestro brief.
~/maestro/skills/The four managed Maestro method skills.
~/maestro/shellrcMaestro-owned shell functions sourced by one managed rc line.
<git-common-root>/.maestro/maestro.dbRepository store shared by linked worktrees.
<project>/.maestro/SLP.mdPinned managed Workspace Pack snapshot for the current or most recent team generation.

The Hub store records team identity, project path, generation, pinned pack identity, role bindings, lifecycle and minimal activity. The project store records local team binding, work, notes, returns, acceptances, decisions and minimal activity.

Herdr owns the live workspace and panes. The runtime pane’s lock and queue state are temporary and are deleted at team stop; they have no archive or evidence location. See SLP setup and storage for the complete map.