This page walks through an interactive session: starting it, what the screen shows, how approvals work, and the keys you need.
Start a session
cd your-project
neuralinverse # or: ni
neuralinverse "fix the failing test in src/date.ts" # start with a first prompt
If no model provider is configured, the CLI walks you through setup first: choose a provider, enter a key (checked live before anything is saved), pick a default model and a permission mode. See Providers and models.
On a first visit to a repository, run /bootstrap: the agent studies the repository and writes AGENTS.md, the project instructions it reads at the start of every session. See Instructions, commands and skills.
Layouts
The CLI runs inline by default. The conversation is written into your terminal's own scrollback, so native scrolling, selection, copy and find keep working, and only a small live region at the bottom of the screen is redrawn.
--fullscreen (or "ui": { "layout": "fullscreen" }) opens the full-screen app instead. --inline selects the default explicitly. Non-interactive runs (-p) use neither.
What the screen shows
Neural Inverse CLI
v0.1.0 · anthropic · key in Keychain
╭─────────────────────────┬─────────────────────────┬─────────────────────────╮
│ DIRECTORY │ MODEL │ MODE │
│ ~/work/api │ claude-sonnet-5-5 │ ask before edits │
╰─────────────────────────┴─────────────────────────┴─────────────────────────╯
YOU Fix the window reset bug in @src/middleware/rateLimit.ts
READ src/middleware/rateLimit.ts lines 1–84 ✓ 0.1s
BASH $ npm test -- rateLimit ✕ exit 1 · 3.4s
EDIT src/middleware/rateLimit.ts +4 −2
− await redis.expire(key, windowMs / 1000);
+ const ttl = Math.ceil((resetAt - now) / 1000);
◧ Streaming 14s · 1.2k tokens esc interrupt
╭──────────────────────────────────────────────────────────────────────────────╮
│ › also check the partial refunds │
╰──────────────────────────────────────────────────────────────────────────────╯
claude-sonnet-5-5 │ main │ ctx 18% │ $0.10 ask before edits
| Part | What it shows |
|---|---|
| Welcome | Name and version, the provider and where its key comes from, then DIRECTORY, MODEL and MODE (in words), and where to start. With an environment active, an Environment cell. Signed in, signed in as <email> · <org>. |
| Transcript | Written once into the scrollback. Each action has a fixed-width label: YOU, THINK (with /show-thinking), NI (the agent's answer), and one per tool: READ, SEARCH, LIST, BASH, EDIT, WRITE, FETCH, TASK, CHECK, ASK, MCP, PLAN. A short outcome sits on the right. Failed commands show their output in a box; edits show changed lines (8 lines; Ctrl+O shows all). Each turn ends with a line such as Done in 4.8s · 1.5k in · 80 out · $0.004. |
| Live region | The answer being written, running tools with their last output lines, the plan, approval, question and error cards, and a status line such as Streaming, Thinking, Running npm test or ▲ Waiting for approval. |
| Prompt | A box that grows with multi-line input. @file mentions show as chips. Messages you send while the agent works are queued and sent in order. Next-step suggestions appear under the empty prompt (Alt+1..3 picks one). |
| Status bar | Model, branch, context used, cost, and the permission mode in words. While a failed model request is retried, the model cell turns amber: ▲ model · reconnecting. |
Colours carry meaning only with a shape: green ✓ passed, amber ▲ needs approval, red ✕ failed. With "ui": { "reducedMotion": true } or NO_MOTION=1, the spinner and shimmer stay still.
"ui": { "transcript": "numbered" } switches to numbered steps ([01] Read src/app.ts · 84 lines) with turns separated by rules.
MCP servers connect in the background after the prompt appears; the first message waits for them.
What you can type
| Input | What it does |
|---|---|
| plain text | Ask the agent to do something. You can keep typing while it works; messages queue. |
@path/to/file | Attach a file or image. Tab completes paths. |
!command | Run a shell command yourself; its output goes with your next message. |
/command | A slash command. Typing / lists them under the input. |
Approval cards
When a tool call needs your approval, a card shows ▲ APPROVAL NEEDED, the action, why it asks, and three options:
| Key | Answer |
|---|---|
1 or y | Yes, once |
2 | Yes, and always allow it in this project |
3 or n | No, and tell the agent what to do instead (a field opens; Enter sends what you type) |
Esc | Deny |
Arrow keys and Enter also choose. A proposed file edit shows its diff with line numbers instead:
| Key | Answer |
|---|---|
y | Apply |
n | Reject |
e | Open the proposed file in $VISUAL or $EDITOR; the card returns afterwards |
a | Apply all edits for the rest of the session |
Findings of the checks gate appear under the diff. A change blocked by your organisation's signed policy shows "Blocked by org policy" and offers no allow option.
While a failed model request waits to be retried: r retries now, m switches the model, l shows the log of errors, Esc stops.
What asks and what runs without asking depends on the mode and your rules. See Permissions and modes.
Keys
| Key | Action |
|---|---|
Enter | Send (queues while the agent is working) |
Shift+Enter, Alt+Enter, Ctrl+J, \ then Enter | New line. /terminal-setup makes Shift+Enter work in more terminals |
Esc, Ctrl+C | Stop the agent while it works; Ctrl+C twice on an empty prompt quits |
Ctrl+D | Quit with a summary of the session (empty prompt) |
Tab on an empty prompt, Alt+M | Switch the permission mode |
/ | Command list: type to filter, ↑↓ choose, Tab completes, Enter runs |
Tab | Complete @paths and commands |
Up (empty prompt, while working) | Take the last queued message back for editing; Esc drops the queue |
Ctrl+O | Show the last tool's full output or diff |
Ctrl+T | Show or hide the full plan while the agent works |
Ctrl+R | Search prompt history |
Ctrl+L | Clear the screen (the scrollback stays) |
Full-screen layout
From 110 columns, --fullscreen shows a header row (Neural Inverse, model, branch, context and cost), the transcript on the left, a PLAN and FILES pane on the right (A added, M modified; Ctrl+B hides it) and the prompt along the bottom. It adds a command palette (Ctrl+P), a model picker on Ctrl+O, block focus with Tab and Shift+Tab (Enter expands, y copies), scrolling with PgUp, PgDn, Ctrl+U, Ctrl+D and the mouse wheel, F2 to select text with the mouse, and Ctrl+Z to suspend. /keys lists the keys of the layout in use.
Change the key bindings
/keybindings opens ~/.neuralinverse/keybindings.json in your editor; it is created with every action, its default and a comment. Each action takes one chord, a list, or null to unbind; "inline": {…} and "fullscreen": {…} hold layout-specific overrides.
Actions: submit, newline, interrupt, quit, cycleMode, openModels, openPalette, toggleSidePanel, historySearch, expandLast, attachImage, clearInput, clearScreen, complete, suspend, selectMode, togglePlan.
Chords are [ctrl+][alt+][shift+]<key> (meta and option mean alt). Keys are characters or enter, tab, escape, backspace, delete, space, arrows, home, end, pageup, pagedown, insert, f1 to f4. /keybindings show lists the effective bindings and reports unknown actions, malformed chords and conflicts; a rejected entry keeps its default. /keybindings reset restores the defaults and keeps the old file as .bak.
Pick a model
/model lists models from every configured provider, fetched live from each provider's API (cached for a day). Inline, the list opens under the input: type to filter, and the highlighted model shows its context size and prices. In the full-screen layout, a two-pane picker also shows output limits, image and reasoning support, and whether the provider's key is set. Tab cycles reasoning effort; Enter switches.
Leave and come back
/quit or Ctrl+D ends the session. The transcript stays in your scrollback, followed by a summary: duration, tokens in and out, cost, the files changed with their + and − counts, and a line such as Resume with ni --resume 7f3a. The id shown is the shortest prefix that is unique in this folder; --resume accepts any unique prefix.
neuralinverse --continue # the latest session in this folder
neuralinverse --resume 7f3a # a given session
neuralinverse --resume # pick from a list
See Sessions and context for undo, restore, forks and exports.