CLI
Documentation

Version Latest

Your first session

Start the CLI in a project, read the screen, answer approval cards, use the keyboard, pick a model and leave a session so you can resume it.

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
PartWhat it shows
WelcomeName 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>.
TranscriptWritten 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 regionThe 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.
PromptA 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 barModel, 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

InputWhat it does
plain textAsk the agent to do something. You can keep typing while it works; messages queue.
@path/to/fileAttach a file or image. Tab completes paths.
!commandRun a shell command yourself; its output goes with your next message.
/commandA 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:

KeyAnswer
1 or yYes, once
2Yes, and always allow it in this project
3 or nNo, and tell the agent what to do instead (a field opens; Enter sends what you type)
EscDeny

Arrow keys and Enter also choose. A proposed file edit shows its diff with line numbers instead:

KeyAnswer
yApply
nReject
eOpen the proposed file in $VISUAL or $EDITOR; the card returns afterwards
aApply 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

KeyAction
EnterSend (queues while the agent is working)
Shift+Enter, Alt+Enter, Ctrl+J, \ then EnterNew line. /terminal-setup makes Shift+Enter work in more terminals
Esc, Ctrl+CStop the agent while it works; Ctrl+C twice on an empty prompt quits
Ctrl+DQuit with a summary of the session (empty prompt)
Tab on an empty prompt, Alt+MSwitch the permission mode
/Command list: type to filter, ↑↓ choose, Tab completes, Enter runs
TabComplete @paths and commands
Up (empty prompt, while working)Take the last queued message back for editing; Esc drops the queue
Ctrl+OShow the last tool's full output or diff
Ctrl+TShow or hide the full plan while the agent works
Ctrl+RSearch prompt history
Ctrl+LClear 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.

Last reviewed 17 October 2026View as Markdown

Your first session · Docs · Neural Inverse