Modes & engines
The CLI has two orthogonal axes. Mode controls the data boundary; Engine controls which agent backend runs a turn. They are independent and compose — any mode works with any engine.
Mode — the data boundary
| Mode | What it means |
|---|---|
| Cloud (default) | The standard experience: queries and results flow to and from TestRelic Cloud. |
| Local | Nothing is uploaded. Every mutation is approval-gated, and cloud memory is read-only. |
Switch modes either way:
testrelic --mode local
Or press Shift+Tab in the interactive UI to toggle the mode for the current session.
Local mode is for working against sensitive repos or in environments where you don't want anything written back to the cloud. You can still read cloud memory and context; you just can't change it without an explicit approval.
Engine — which agent backend runs a turn
The engine decides which agent backend actually executes a turn:
| Engine | Selector |
|---|---|
| CloudAgent | --engine cloud |
| ClaudeCode | --engine claude-code |
| Codex | --engine codex |
| Ollama | --engine ollama |
| (auto-select) | --engine auto |
testrelic --engine claude-code
Or open the picker in the interactive UI:
❯ /engine
Permission mode
Independently of mode and engine, choose how the agent asks before acting:
testrelic --permission-mode plan|default|acceptEdits|bypassPermissions
| Value | Behavior |
|---|---|
plan | Plan the work without making changes. |
default | Prompt for confirmation on each gated action. |
acceptEdits | Auto-accept edits while still gating other actions. |
bypassPermissions | Run without confirmation prompts. |
How they compose
Mode and engine are set separately and combine freely — for example, Local mode with the
ClaudeCode engine keeps every mutation approval-gated and nothing uploaded, while running
the turn on Claude Code. Pick the data boundary you need with --mode, the backend you want
with --engine, and the confirmation behavior with --permission-mode.