Global flags

--help

Every command explains itself:

ecko --help           # the command list
ecko pack --help      # what pack does, and its options
ecko test -h          # -h works too

Help prints to stdout and does nothing else, so it is safe to ask about a command before you are ready to run one.

AI flags

These apply to any command that can make an ai call - run, repl, test, explain, fix.

flageffect
--key <key>API key for this invocation
--provider <name>openai (default), openrouter, ollama
--model <name>Model name; the provider's default otherwise
--traceTrace every ai call to stderr
--cacheCache ai responses in .ecko-cache/

Each maps onto the matching environment variable, so a flag is a one-run override of your configuration:

ecko report.ecko --provider openrouter --model anthropic/claude-sonnet-4.5

Because these are recognised after the file too, a program of your own cannot have flags by the same names - the interpreter would take them first. Put -- before your program's arguments and everything after it is passed through untouched:

ecko deploy.ecko --provider ollama -- --key my-app-key --model small
#                ^ the interpreter's          ^ your program's, verbatim

The full set of settings is environment variables only - see Environment variables. Configuration never lives in code.

--trace

Prints provider, model, token counts, latency and retries for each call. For a durable record set ECKO_TRACE to a path and get JSONL instead - see Tracing.

--cache

Content-addressed: identical prompt, model and parameters return the stored response without a call, and without counting against a budget. Useful when iterating on the code around a prompt rather than the prompt itself. See Caching.

A note on --key

Convenient for a one-off, but a key on the command line goes into your shell history and into the process list. Prefer ECKO_API_KEY in the environment, or an environment block in ecko.json for a non-secret setting like the model.