Skip to content

Chirp

Chirp components are native Grasshopper nodes that run AI reasoning as part of your definition. They take data in, think it through, and pass structured results on — so a definition can make judgement calls, not just calculations.

Some steps in a design aren’t pure geometry — they’re decisions. Which option fits the brief? How should this be described? Is this result any good? Chirp lets you place that kind of reasoning right on the canvas, where it belongs, instead of breaking out to a separate tool.

You stay in control of the structure; Chirp handles the judgement inside the box you give it.

Each Chirp component plays a role you’d recognize from a design team:

CategoryRole
PlannerBreaks a goal into steps
InterpreterTurns loose input into structured data
CriticReviews a result and flags issues
NarratorDescribes what’s happening in plain language
ClassifierSorts inputs into categories
GateDecides whether to pass or stop
EditorRevises content against a goal

Chain several Chirp components and they can share reasoning context — a cascade — so a multi-step design stays coherent from one decision to the next. Ask Rook to set one up by describing the chain you want.

Chirp calls a language model with your own key. Without a key, Chirp components still run: they return typed default values and show a warning, and any results you froze with the Freeze pin keep replaying.

  1. Open %LOCALAPPDATA%\Rook\app\chirp\ in File Explorer.

  2. Copy .env.example to a new file named .env, then replace your-key-here with your key:

    ANTHROPIC_API_KEY=sk-ant-...
  3. Apply it. Chirp’s background process reads .env only when it starts, and it keeps running after you close Rhino. Sign out of Windows and back in (or, in Task Manager → Details, end the python.exe processes whose command line contains -m chirp --rook-managed). The next Chirp component you create starts it again with your key.

Set your key before you build Chirp components if you can.

By default, planner components use anthropic/claude-opus-5 and the other categories use anthropic/claude-sonnet-5. To use another model or provider, set CHIRP_MODEL in the same file (it replaces both defaults), with that provider’s key:

CHIRP_MODEL starts withKey
anthropic/ANTHROPIC_API_KEY
openai/OPENAI_API_KEY
openrouter/OPENROUTER_API_KEY
gemini/GEMINI_API_KEY

For another OpenAI-compatible endpoint, describe it in CHIRP_PROVIDERS:

CHIRP_MODEL=openai/my-model
CHIRP_PROVIDERS={"openai/my-model": {"api_base": "https://your-endpoint/v1", "api_key_env": "MY_ENDPOINT_KEY"}}
MY_ENDPOINT_KEY=...

You don’t configure Chirp by hand. Describe what the component should do:

“Add a critic that checks each layout against the brief and flags the weak ones.”

Rook places and configures it.