--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:
Parse a run envelope
Treatschema_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
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.
Tune a deep repository search
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.