Documentation

CHYRD is an AI coding agent that lives in your terminal. A model talks to your code through real tools - read, write, edit, shell, grep, web search - inside a fast, animated TUI. Everything you need to get running is below.

Install

pipx install chyrd          # recommended: isolated, on your PATH
pip install chyrd           # into the current environment
uv tool install chyrd       # if you use uv

To use the Claude Code engine as a backend (via the Claude Agent SDK), add the extra:

pipx install "chyrd[claude]"

CHYRD needs Python 3.10 or newer. It runs on Windows, macOS, and Linux.

Provider keys

API keys are read from environment variables first, then from ~/.chyrd/config.json. You only need one to get started.

ProviderEnvironment variableNotes
AnthropicANTHROPIC_API_KEYClaude Opus / Sonnet / Haiku
OpenAIOPENAI_API_KEYGPT family (incl. Codex models)
GoogleGEMINI_API_KEYGemini
OpenRouterOPENROUTER_API_KEYOne key, hundreds of models (incl. :free)
Vercel AI GatewayAI_GATEWAY_API_KEYOne key, routes to many vendors
PoePOE_API_KEYSpends your Poe subscription points
GroqGROQ_API_KEYVery fast inference
DeepSeekDEEPSEEK_API_KEYDeepSeek chat / reasoner
xAIXAI_API_KEYGrok
MistralMISTRAL_API_KEYMistral / Codestral / Devstral / Magistral
TogetherTOGETHER_API_KEYOpen-weight hosting
FireworksFIREWORKS_API_KEYOpen-weight hosting
MoonshotMOONSHOT_API_KEYKimi
CohereCOHERE_API_KEYCommand family
QwenDASHSCOPE_API_KEYQwen via Alibaba DashScope
Z.AIZAI_API_KEYGLM family (Flash tier is free)
MiniMaxMINIMAX_API_KEYMiniMax M-series
PerplexityPERPLEXITY_API_KEYSonar - answers with live web search
AI21AI21_API_KEYJamba family
InceptionINCEPTION_API_KEYMercury diffusion LLMs (very fast)
DeepInfraDEEPINFRA_API_KEYOpen-weight hosting
NovitaNOVITA_API_KEYOpen-weight hosting
NebiusNEBIUS_API_KEYOpen-weight hosting
SiliconFlowSILICONFLOW_API_KEYOpen-weight hosting
HyperbolicHYPERBOLIC_API_KEYOpen-weight hosting
GitHub ModelsGITHUB_TOKENFree with a GitHub account (rate-limited)
CerebrasCEREBRAS_API_KEYFree tier, wafer-scale speed
NVIDIA NIMNVIDIA_API_KEYFree credits
SambaNovaSAMBANOVA_API_KEYFree tier
Hugging FaceHF_TOKENInference router; free monthly credits
ChutesCHUTES_API_KEYDecentralized; free tier
Ollamanone (keyless)Local; serve on localhost:11434
LM Studionone (keyless)Local; serve on localhost:1234
Claude (SDK)ANTHROPIC_API_KEYInstall chyrd[claude] (Agent SDK backend)

Set keys without touching the shell from inside the app with /keys (masked input, saved to your global config), or list every model and its readiness with chyrd models.

Quickstart

Set one provider key and launch:

Windows (PowerShell)
$env:ANTHROPIC_API_KEY = "sk-..."
chyrd
macOS / Linux
export ANTHROPIC_API_KEY=sk-...
chyrd

That opens the TUI in the current directory. Point it elsewhere with chyrd path/to/project. No key at all? Run a local model with Ollama - it is keyless.

Permission modes

Cycle modes live with Shift+Tab. The status bar shows the active mode - terracotta in bypass, sage otherwise.

ModeBehavior
normalAsk before every mutating action (write, edit, shell, fetch).
accept-editsFile writes and edits auto-approved; shell and fetch still ask.
planRead-only. Mutating tools are refused with guidance; present a plan.
bypassEverything auto-approved. Move fast; nothing prompts.

In the approval dialog you can choose allow once, always allow (persists a rule like shell(git *) for the session), or deny.

Keybindings

KeyAction
EnterSubmit the message
Shift+EnterNewline in the composer
Up / DownBrowse input history (at the buffer edge)
/Open the slash-command and skill menu
@File-path autocomplete
TabAccept the highlighted suggestion
Shift+TabCycle permission mode
Ctrl+MOpen the model picker
Ctrl+NNew session
Ctrl+PCommand palette
Ctrl+TNext theme
EscInterrupt the turn (press twice to force-stop)
! cmdRun a shell command directly - no model in the loop
F1Help
Ctrl+CQuit (press twice)

Slash commands

Type / in the composer to open the menu. Built-ins:

  • /helpkeys and commands
  • /modelmodel picker, or /model provider/model-id
  • /modecycle permission mode
  • /themeswitch theme
  • /newstart a fresh session
  • /sessionsbrowse and resume
  • /resumeresume the most recent
  • /clearclear the conversation
  • /undorevert the last turn's file changes
  • /exportwrite the conversation to markdown
  • /mcplist connected MCP servers and tools
  • /skillslist available skills
  • /agentslist subagents
  • /initgenerate a CHYRD.md brief
  • /keysset a provider API key
  • /loopkeep improving the project
  • /stopstop the running loop
  • /mascottoggle the mascot owl
  • /compactsummarize older context
  • /costshow usage and spend
  • /exitquit CHYRD

Every discovered skill is also a slash command - /commit, /review, /debug, and so on.

Skills

Skills are expert playbooks the agent (or you, via /name) can pull into context on demand. CHYRD ships fifteen built-ins:

  • 3d-modelThree.js scenes, procedural meshes, Blender bpy scripts
  • ai-appLLM app patterns: streaming, tool use, caching, evals
  • image-genStable Diffusion / ComfyUI / API image generation options
  • websiteNext.js + Tailwind ship checklist
  • game-devgame loop / ECS / collision basics plus Roblox Luau notes
  • commitconventional-commit workflow
  • reviewseverity-ranked code review method
  • initgenerate a CHYRD.md project brief
  • debugscientific debugging
  • refactorsafe, incremental refactoring
  • testthe test pyramid plus table-driven tests
  • docsdocumentation that stays true
  • data-vizterminal braille charts and matplotlib
  • deployVercel / Docker / systemd shipping
  • securityOWASP quick audit

Add your own under ~/.chyrd/skills/<name>/SKILL.md (global) or ./.chyrd/skills/<name>/SKILL.md (per project). Frontmatter is name, description, and an optional argument-hint; the markdown body is the playbook.

Subagents

The task tool runs focused work in a nested agent. Three are built in: explorer (read-only codebase scout), builder (full tools, one job), and reviewer (read-only, severity-ranked). Define your own as markdown files in .chyrd/agents/ (project) or ~/.chyrd/agents/ (global):

.chyrd/agents/reviewer.md
---
name: reviewer
description: Reviews code for bugs. Use after writing significant code.
tools: read_file, grep_files, glob_files       # optional; default = read-only set
model: anthropic/claude-sonnet-4-6             # optional; default = main model
---
You are a rigorous reviewer. Examine the relevant code without modifying it and
report findings ranked by severity, each with a path:line and a concrete fix.

A subagent inherits the active permission mode but has no interactive approver, so mutating subagents only act in accept-edits or bypass mode (or under an explicit allow rule).

Configuration

CHYRD reads ~/.chyrd/config.json (global) merged with ./.chyrd/config.json (project; project wins). A full example:

config.json
{
  "model": "anthropic/claude-opus-4-8",
  "theme": "chyrd-dark",
  "mode": "normal",
  "mascot": true,
  "max_tokens": 8192,
  "allow": [
    "shell(git *)",
    "shell(npm test)",
    "write(**)"
  ],
  "api_keys": {
    "openrouter": "sk-or-..."
  },
  "ollama_url": "http://localhost:11434",
  "providers": [
    {
      "id": "myllm",
      "label": "My Gateway",
      "base_url": "https://gateway.internal/v1",
      "api_key_env": "MYLLM_API_KEY",
      "models": [
        {
          "id": "house-large",
          "name": "House Large",
          "context_window": 128000,
          "tier": "flagship"
        }
      ]
    }
  ]
}

allow rules grant standing permission so those actions never prompt. providers declares any OpenAI-compatible endpoint - a self-hosted gateway, a proxy, a vendor not built in - and its models show up everywhere a built-in provider does. Prefer environment variables for secrets (api_key_env); inline api_key is also accepted.

Headless usage

chyrd run executes one prompt without the TUI and streams the answer to stdout, which makes it scriptable and CI-friendly.

chyrd run "summarize what this project does"
chyrd run "add type hints to utils.py" --model anthropic/claude-opus-4-8 --mode bypass
chyrd run "list the failing tests" --quiet > report.txt
  • --model provider/model picks the model (default: configured or auto-resolved).
  • --mode normal|accept-edits|plan|bypass sets the permission mode. There is no interactive approver in headless mode, so anything short of bypass or accept-edits auto-denies mutating actions; CHYRD prints a one-line warning.
  • --max-turns N caps the agent loop. --quiet hides tool-activity lines.
  • Tool activity is dimmed to stderr; the answer goes to stdout. Exit code is 0 on success, 1 on an error stop.

List the catalog at any time:

chyrd models
chyrd models --provider anthropic