Skip to main content
Every gaal invocation starts with gaal. Global flags can sit before or after the subcommand.

Global flags

These work with every command:
FlagDefaultDescription
-c, --config <path>gaal.yamlPath to the configuration file.
-v, --verboseoffEnable debug logging.
--no-banneroffSuppress the ASCII-art banner.
--sandbox <dir>unsetRedirect every write to this directory. See Sandbox mode.
--log-file <path>unsetWrite structured JSON logs to this file (in addition to console).
-o, --output <fmt>tableOutput format: table or json. When json, the banner is suppressed automatically.

Commands

CommandPurpose
gaal syncReconcile every resource in gaal.yaml against the filesystem.
gaal statusPrint the current state of every repo, skill, and MCP entry.
gaal agentsList registered coding agents and detection status.
gaal infoDetailed view of a single repo, skill, MCP, or agent.
gaal initBootstrap a gaal.yaml interactively or from flags.
gaal auditRead-only scan of skills and MCP entries already on the machine.
gaal doctorHealth check on configuration, sources, targets, and agents.
gaal migrateValidate and prepare configuration for Community Edition.
gaal schemaPrint or write the JSON Schema for gaal.yaml.
gaal versionPrint version and build time.
gaal completionGenerate shell completion scripts.

Exit codes

Most commands follow this convention:
CodeMeaning
0Success, nothing to do, or work completed cleanly.
1Warning, work completed but with non-fatal issues, or --dry-run reports pending changes.
2Error, operation failed.
Per-command exit-code semantics are documented on each command’s page.

Examples

# Use a config in /etc rather than the default
gaal --config /etc/gaal/team.yaml sync

# Verbose JSON output
gaal --verbose -o json status

# Sync everything into a sandbox
gaal --sandbox /tmp/gaal-test sync

# Service mode with logging
gaal --log-file /var/log/gaal.json sync --service --interval 5m