CLI Reference

The CLI is available as both meriadoc and merry. All commands work from any directory — Meriadoc finds your projects via the configured discovery roots.

Global flags

FlagDescription
--jsonOutput as JSON (for scripts and tooling)
--config <path>Use a specific config file instead of the default
--versionPrint version and exit
--helpPrint help

Discovery & listing

meriadoc ls                    # List all registered projects
meriadoc ls tasks              # List all tasks across all projects
meriadoc ls jobs               # List all jobs
meriadoc ls shells             # List all shells

With --json:

meriadoc --json ls tasks       # JSON array of task metadata
meriadoc --json ls projects    # JSON array of project info

Running

# Full form
meriadoc run task <name>
meriadoc run job <name>
meriadoc run shell <name>

# Shortcuts
meriadoc task <name>     # or: meriadoc t <name>
meriadoc job <name>      # or: meriadoc j <name>
meriadoc shell <name>    # or: meriadoc s <name>

Run flags

FlagDescription
--env KEY=VALUEOverride an env var (repeatable)
--dry-runPreview without executing
--prompt-allPrompt for every env var, even those with defaults
--no-interactive / -nFail instead of prompting for missing required vars
--verboseShow extra execution detail

Examples:

meriadoc run task deploy --env ENVIRONMENT=staging
meriadoc run task deploy --dry-run
meriadoc run task deploy --env ENV=prod --env VERSION=2.0.0
meriadoc task build -n                  # fail if any required var is missing

Information

meriadoc info task <name>       # Show full task details
meriadoc info job <name>        # Show job details
meriadoc info shell <name>      # Show shell details

meriadoc --json info task <name>  # JSON output

Environment

meriadoc env show task <name>    # Show resolved env vars for a task
meriadoc env show job <name>     # Show resolved env vars for a job
meriadoc env ls                  # List saved env files

Configuration

meriadoc config add <path>       # Register a project directory
meriadoc config rm <path>        # Unregister a directory
meriadoc config ls               # List all registered directories

The global config lives at ~/.config/meriadoc/config.yaml. See Config File.

Validation

meriadoc validate                # Validate all discovered specs
meriadoc doctor                  # Diagnose common issues (config, paths, spec validity)

validate reports errors in spec files without running anything. doctor checks your overall setup — registered directories, reachable spec files, config health.

Server

meriadoc server                  # Start HTTP server + Web UI at localhost:8420
meriadoc server --port 9000      # Custom port

Provides a Web UI and REST API. See Agents / MCP for the API endpoints.

MCP (stdio)

meriadoc serve                   # Start MCP JSON-RPC server over stdio

Used for AI agent integration (Claude Desktop, etc.). See Agents / MCP.

Shell completions

meriadoc completions zsh         # Generate zsh completions
meriadoc completions bash        # Generate bash completions
meriadoc completions fish        # Generate fish completions
meriadoc completions powershell  # Generate PowerShell completions

Install for zsh:

mkdir -p ~/.zfunc
meriadoc completions zsh > ~/.zfunc/_meriadoc
# Add to ~/.zshrc if not present:
# fpath+=~/.zfunc && autoload -Uz compinit && compinit

Install for bash:

meriadoc completions bash > ~/.local/share/bash-completion/completions/meriadoc

Homebrew users get completions installed automatically.

Task name resolution

When multiple projects are registered, tasks are namespaced as project:taskname:

meriadoc run task myapp:build
meriadoc run task otherproject:deploy

If a task name is unique across all projects, you can omit the prefix:

meriadoc run task build          # works if "build" exists in only one project