Ninoo

Ninoo Code

An agent loop, a toolbox, one rule

Your machine changes only when you say yes. Everything else is detail, and it is below.

01 — The loop

Steps, not magic

You describe an outcome. Each step, the model either answers you or calls a tool. Tool results stream back, the model reads them, and it decides the next step until the task is done.

  1. 01

    You describe the task

  2. 02

    The model picks a tool

  3. 03

    You approve any change

  4. 04

    The result feeds the next step

02 — The tools

Sixteen tools

read_fileReads a file, paged for large onesasks first: read-only
list_dirLists a directoryasks first: read-only
globFinds files by patternasks first: read-only
grepSearches file contents by regexasks first: read-only
write_fileCreates or overwrites a file, preview firstasks first: yes
edit_fileReplaces an exact string, diff firstasks first: yes
multi_editSeveral edits to one file, all or nothingasks first: yes
bashRuns a shell command, or starts a background jobasks first: yes
bash_outputReads new output from a background jobasks first: read-only
bash_killStops a background jobasks first: read-only
web_fetchFetches a URL such as docs or a changelogasks first: yes
rememberSaves a note to NINOO.md, shown firstasks first: yes
todo_writeWrites the task plan, pinned live in the terminalasks first: read-only
todo_readRe-reads the current planasks first: read-only
ask_userAsks you a multiple-choice question mid-taskasks first: read-only
taskDelegates a subtask to a subagent with a fresh contextasks first: read-only

The task tool runs a subagent with its own fresh context. Its tool calls pass through the same confirmation gate; only its final report returns.

03 — Safety

Nothing happens without a yes

Before any write, edit, shell command or web fetch, Ninoo shows the full command, a red and green diff, or a file preview, then waits. Decline and the model is told, so it adjusts instead of retrying blind.

esc interrupts a running turn and discards the half-finished step. For tasks you fully trust, ninoo -y auto-approves, as an explicit flag, never a default.

Every file is snapshotted before it is touched, one frame per turn, so /undo reverts the last turn in one step and tells the model what was rolled back.

04 — Memory

It remembers the repo

Every session starts by reading ~/.ninoo/NINOO.md, then the project's own NINOO.md. Run /init in a new repo and Ninoo writes the first draft: build and test commands, layout, conventions.

As you work it saves new non-obvious facts with the remember tool, each shown for approval first. For multi-step tasks it pins a live todo list in the terminal and checks items off as they land.

05 — Models

Pick a model or a mode

/model opens a picker: Nicrron's routing modes first, then the live catalog with per-million-token prices. The choice is saved.

nicrron/auto
Right-sizes the model per request. The default.
nicrron/coding
Strongest coding models first, cheaper fallbacks.
nicrron/reasoning
Deep-reasoning models for hard problems.
nicrron/fastest
Lowest-latency lightweight models.
nicrron/cheapest
Cheapest model per token; quality varies.

06 — Billing

One balance, no surprises

Ninoo authenticates with the key from ninoo login, so every request debits the same Nicrron balance as the rest of your gateway traffic, at the same published rates. The CLI itself is free.

The status line shows a live token estimate, /status totals the session, and each request appears in your usage logs with its exact cost. If the balance runs out, Ninoo stops with a clear message; top up and continue.