Page 1 of 2 — Main TUI
⌨ Global
| Tab Shift+Tab | Cycle panels forward / backward |
| q q | Quit — press twice to confirm |
| Ctrl+C | Quit immediately — no confirmation |
| Esc | Close modal / exit edit mode (not quit) |
📁 Collections Panel
| ↑ ↓ | Move cursor |
| Enter | Expand / collapse folder — or load request |
| / | Search / filter the tree |
| n | New collection |
| f | New folder |
| a | Add request |
| e | Edit request — loads into Request tab |
| D | Duplicate — saves as "<name> copy" |
| d | Delete selected item |
| E | Open collection TOML in $EDITOR |
🌱 Env Panel
| ← → | Switch focus: Environments ↔ Variables |
| ↑ ↓ | Navigate within focused panel |
| Enter | Activate env (left) / edit variable (right) |
| n | New environment |
| a | Add variable |
| d | Delete environment or variable |
🌐 Request Panel — REST
| e | Edit URL (enter URL mode) |
| m | Cycle HTTP method |
| s | Send request |
| S | Save to collection |
| n | New request — clear all fields |
| ← → | Navigate sub-tabs |
| i | Edit description / enter body editor |
| t a d | Toggle Text↔JSON / add-delete field (JSON mode) |
| E | Open body in $TERAPI_JSON_EDITOR |
| {{ | {{VAR}} picker — env vars + built-ins |
🔑 Request — Auth & Options
| ↑ ↓ | Navigate fields |
| Space/Enter | Type row — cycle auth type |
| Enter | Field row — edit token / user / pass / key |
| Space | Location row — Header ↔ Query Param |
| f | Fetch OAuth2 token manually |
| Esc | Cancel OAuth2 browser wait |
| Space/Enter | Options — toggle / cycle timeout |
| | Skip TLS · Follow redirects · Timeout · Cookie jar |
🕘 History & Campaigns Panels
| ↑ ↓ | History — navigate entries |
| Enter | History — load into Request tab |
| d | History — delete entry |
| ↑ ↓ | Campaigns — navigate list / step cursor |
| r | Campaigns — run (or open params modal) |
| L | Campaigns — load step into Request tab |
| E | Campaigns — open TOML in $EDITOR |
📄 Response Viewer (JSON / Raw / HTTP)
| r | Cycle view: JSON → Raw → HTTP |
| ↑ ↓ | Move cursor (JSON) / scroll (Raw, HTTP) |
| PgUp PgDn | Same, 10 rows/lines at a time |
| Enter | Fold / unfold JSON node |
| z | Expand panel to the whole tab body |
| / | Search bar (JSON view) — filter by key/value |
| > < | Next / previous match |
| f | Follow URL under cursor (JSON view) |
| d | Diff last two responses (external tool) |
| E | Open response in external viewer (read-only) |
| - = | Shrink / grow Key column |
◈ GraphQL Mode (g to enter)
| ← → | Navigate GQL sub-tabs |
| i | Query tab — enter editor |
| Ctrl+Space | Query tab — autocompletion popup |
| a d | Variables tab — add / delete |
| f | Schema tab — fetch type list |
| / | Schema tab — filter types by name |
| ↑ ↓ | Schema — navigate types / scroll fields |
| PgUp PgDn | Schema — jump 10 types / 10 lines |
| Enter | Schema — load fields for selected type |
| Tab | Schema — toggle type list ↔ field detail |
| z | Schema — expand detail panel |
💡 Tips
| Built-ins | {{DATE}} {{UUID}} {{TIMESTAMP}}… — no env needed |
| Storage | ~/.config/terapi/ or ./.terapi/ per project |
| Override dir | TERAPI_DIR env var (CI, custom path) |
| Body editor | $TERAPI_JSON_EDITOR, defaults to jsoned |
| Response diff | $TERAPI_JSON_DIFFER, else $TERAPI_DIFF |
Page 2 of 2 — Campaign Builder (terapi build)
🧩 Pipeline
| ↑ ↓ | Navigate steps — wraps into [IN] / [OUT] |
| Enter/e | Edit selected step |
| n | New step (append) → Catalog |
| i | Insert step after cursor → Catalog |
| D | Duplicate step (copy inserted below) |
| d | Delete step — press again to confirm |
| K J | Move step up / down |
| r | Run full campaign → Run view |
| s | Campaign settings |
| v | Variables panel |
| c | Checker (static validation) |
| p | TOML preview |
| w | Save |
| q | Quit — confirms if unsaved |
| Ctrl+C | Quit immediately |
🛠 Step Editor (Browse mode)
| ↑ ↓ | Navigate fields |
| Enter | Edit field / confirm |
| ← → | Cycle selector (method, kind, encoding) |
| a d | Add / delete list item (headers, extract, assert…) |
| r | Run this step — result shown below |
| L | Collection browser (HTTP / Seed steps) |
| Tab | Extract value — open path autocomplete |
| Esc | Back to Pipeline |
📝 Body Editor (yellow border)
| Any key | Type / edit |
| Enter | New line |
| Esc | Save and close |
📁 Collection Browser
| ↑ ↓ | Navigate |
| Space | Expand / collapse folder |
| Enter | Load request into step |
| Esc | Cancel |
🎯 Extract Path Picker (Tab)
| ↑ ↓ | Navigate matching paths |
| Type | Filter paths |
| Enter | Insert selected path |
| Tab/Esc | Close, back to value editor |
🌱 Variables Panel
| ↑ ↓ | Navigate |
| a | Add variable |
| d | Delete selected |
| Enter | Edit (key + value) |
| Tab | Switch Key ↔ Value in edit form |
| Esc | Close / cancel |
🔌 Connectors [IN] / Outputs [OUT]
| ↑ ↓ | Navigate list |
| Enter | Add new / edit selected |
| d | Delete selected |
| Tab | Next field (edit mode) |
| Esc | Cancel / back to pipeline |
✅ Checker · TOML Preview · Save
| c | Static validation — per-kind rules, {{VAR}} resolution |
| p | Syntax-highlighted live TOML preview |
| w | Write to file, or <terapi_dir>/campaigns/ |
| Esc | Back to Pipeline |
▶ Run View (step & campaign results)
| ↑ ↓ | Scroll 1 line |
| PgUp PgDn | Scroll 10 lines |
| ← → | Scroll horizontal (long URLs / values) |
| Esc | Back to Step editor / Pipeline |
🎛 Campaign Settings · Run Params
| ↑ ↓ | Navigate settings / parameters |
| Enter | Edit selected value |
| r | Run params modal — run with current values |
| Esc | Back / cancel |
💡 Tips
| Invocation | terapi build [file.toml] — blank or edit existing |
| Badges | HTTP TRSF WAIT SEED FILE SRCH LOOP POLL SET BILD JQ PAR NTFY GQL # |
| Params | [[params]] without a default prompts at run time |
| Quit confirm | y / n / Esc shown only if unsaved |