Skip to content

nitro

Grok Build fork where Jev decides once per turn which tools the chat model needs, cutting cost 14-40% in the author's tests.

Projectprototype

Overview

Nitro is Grok Build with TypeSafe Jev placed in front of tool selection. Once per turn, before the first model call, it asks Jev one yes/no question per tool: will finishing this request need this tool at any step? All questions go in one request, returning in about 350 ms. Tools Jev rejects are removed from the chat model's request, and the shorter list is held for the whole turn. The chat model still writes every command, path and patch.

On a coding task Jev kept 8 of 25 tools, cutting tool schemas from about 11K to about 2.9K tokens per request. With the same grok-4.6 model, the README reports 14-40% lower cost and 23-43% fewer tokens across three tasks, with no change in wall clock, and every run produced passing tests. The first version asked before every step and was 70% more expensive because changing tools broke the prompt cache; research.md explains the fix.

What the decision model decides

TypeQuestionAnswers
Yes / noWill finishing this request need this tool at any step?yes · no

How it works

  1. At the start of each turn, send one noul question per tool to Jev in a single request.
  2. Drop tools Jev says are not needed.
  3. Hold the reduced tool list fixed for every step of the turn.
  4. Chat model completes the task with the smaller schema.

Strengths

  • Author-reported 14-40% cost reduction with the same outputs.
  • Fixed per-turn tool list preserves prompt caching.
  • Installs alongside grok without replacing it.

Caveats

  • Small sample: two runs per task.
  • A wrongly excluded tool could block the task for that turn.
  • Needs a Rust toolchain plus Grok and TypeSafe (or OpenRouter) keys.

Getting started

git clone https://github.com/daniel-farina/nitro && cd nitro && ./install.sh && nitro

At a glance

Type
Project
Status
prototype
Language
Rust
Runtime
CLI
Has code
yes

Use cases and integrations

How curated lists describe it

  • Grok Build with TypeSafe Jev routing tool selection once per turn: 22 to 40% cheaper on the same tasks.

    hellogumbo/awesome-jev

Frequently asked questions

What does Jev decide in Nitro?

For each tool, whether it will be needed this turn; unneeded tools are hidden from the chat model.

Why only once per turn?

Changing the tool list between steps broke prompt caching and made an earlier version 70% more expensive.

Does Jev write any code?

No, the chat model still writes every command and patch.

Related projects

  • Pi extension that removes the skill catalogue from the system prompt and adds a skill_search tool where Jev rates each skill 0-2.

    Agent skillbetaTypeScript
  • JS and Python library that selects and prunes agent tools and MCP schemas, using offline vector search or Jev with calibrated probabilities.

    MCP serverbetaTypeScript, Python
  • Local gateway for coding agents that asks Jev which tool to call next and passes everything else to your usual model.

    ServicebetaTypeScript
  • Claude Code plugin that routes every subagent spawn through Jev to pick its model, effort and tool profile.

    Projectprototype
  • Archived Go harness finding Jev tool steering does not reliably cut agent tokens in Claude Code or Codex; context trimming helped.

    MCP serverresearchGo
  • Local-first routing engine for long-running agent tasks that uses a Jev decider to pick a model group per turn.

    PluginproductionRust, TypeScript