Skip to main content
For scripts, write one stable result to stdout and keep progress on stderr. Use --json for the result, --stdin for structured input, and --progress jsonl when another process needs progress events. For ordinary interactive commands, start with the CLI guide.

Parse stdout without progress noise

Choose --progress off when the result is all you need. Progress defaults to live when stderr is a TTY and off otherwise; diagnostics always stay on stderr.

Send structured input

Pipe one JSON value to --stdin when a flow expects structured input. Navi binds that value to the flow’s JSON argument; edge-walk uses this transport:
For a person at the terminal, the shorter equivalent is:

Parse a run envelope

Treat schema_version: "navi.run.v2" as the contract boundary. Its fields appear in schema order: Read either gate or verdict; they are mutually exclusive. The result field contains the final step’s validated output, not intermediate step outputs.

Branch on the outcome

Exit 0 means Navi produced a valid result. It does not mean the work was approved. Inspect verdict or gate.
Passing --override "<reason>" lets a caller proceed despite a demanding gate. The envelope keeps the original gate, the session records the reason, and the process exits 0.

Interpret process exits

Find sessions that need attention

Combine filters to narrow the list; Navi applies them with AND. Archived sessions stay hidden unless you pass --all. The workspace flag -w <directory> changes which repository a run reads, but it does not scope session history because every workspace uses the same ledger.

Choose models and session storage

Set these variables in the process or in .env. A value already set in the process takes precedence when Navi loads .env. Provider authentication uses the provider’s key: TAVILY_API_KEY enables the web-search flow. See Providers for the tested models and compatibility lanes. Set these flags when you run the deep bare-query lane: Thinking and reasoning-effort overrides are DeepSeek-only. Flow authors set equivalent step-local settings in action.yaml.