MIT Rust Linux · macOS · Windows

Agentic coding
harness.

Herder drives a model through native tool calls until the job is done. One agent core — a terminal TUI and a native GUI.

Provider-agnostic: any OpenAI-compatible /v1 endpoint — infr, llama.cpp, OpenAI, OpenRouter — plus a native Anthropic Messages backend with prompt caching and extended thinking. Adaptive tool set + MCP, sub-agents, persistent memory, guardrails that hard-block foot-guns. The vim layer is hjkl.

hrdr — ~/code/api
add a --json flag to the status command

read src/cli.rs
grep "fn status" src/
edit src/cli.rs
  - pub struct StatusArgs {}
  + pub struct StatusArgs {
  +     /// Emit machine-readable JSON
  +     #[arg(long)]
  +     pub json: bool,
  + }
bash cargo test --quiet
  test result: ok. 42 passed; 0 failed

 Added --json to the status
command — serializes via serde_json, tests pass.
READY Enter send · @file attach · / commands 12.4k of 200k

why

One agent core. Every provider. Both frontends.

01 — PROVIDERS

Provider-agnostic

Point it at any /v1/chat/completions endpoint — infr, OpenAI, llama.cpp, OpenRouter. Built-in presets plus custom [providers.*] with their own model, key, and headers. Azure supported too.

02 — ANTHROPIC

Native Claude backend

A native Anthropic Messages API backend, auto-selected for api.anthropic.com — unlocking native prompt caching and extended thinking, streamed to the reasoning pane.

03 — SURFACES

TUI, GUI, headless

A shared UI-agnostic core (hrdr-app) drives the ratatui TUI and the floem desktop GUI with full command parity. hrdr run goes headless — NDJSON events for scripting and CI.

04 — TOOLS

Adaptive tool set

read, write, edit, patch, find, ls, grep, todo, fetch, search, a shell — plus any MCP server's tools. Presence-aware: the model is only offered tools it can actually run.

05 — DELEGATE

Sub-agents

The task tool spawns sub-agents with their own context — in parallel, or detached in the background. Cross-provider profiles let an Opus main agent delegate to a cheaper model.

06 — MEMORY

Persistent memory

A memory tool with project and global scopes — plain Markdown under the XDG data dir, greppable and git-diffable. The bounded index survives /clear and /compact.

07 — GUARDRAILS

Foot-guns hard-blocked

The shell mechanically rejects git add -A, force-push, reset --hard, whole-tree deletes, and curl | sh before they run. Edits refuse files the model hasn't read. Add your own [[guardrails]] rules.

08 — CONTEXT

Context under control

Prompt-cache breakpoints across turns, tool-output pruning before each request, and auto-compaction when the window fills — recent turns kept verbatim. All tunable in config.toml.

09 — VIM

The vim layer is hjkl

--vim swaps the plain input for a real hjkl vim editor behind an FSM-agnostic EditorEngine seam. TUI colors come from any hjkl theme.

agents

Four built-ins. Or bring your own as Markdown files.

Selected with the task tool's agent argument, @name-mentioned in a message, or run as the main loop with hrdr --agent <name>. Agents are also discovered from Markdown files — .hrdr/agents/, and Claude Code (.claude/agents/) and opencode locations work as-is.

explore
read-only · proactive

Code investigator — read/search tools only. Traces files, types, and call paths and reports back.

review
read-only · proactive

Code reviewer — audits a change for bugs, edge cases, and security issues, with path:line findings.

plan
markdown-only writes

Planner — investigates read-only, then writes a step-by-step plan to disk as a Markdown file.

general
full tool access

Open-ended multi-step tasks — explore and modify. The default when task names no agent.

install

Prebuilt binaries on every tagged release.

Linux (gnu + musl, x86_64/aarch64), macOS (Apple Silicon + Intel), and Windows binaries ship with every GitHub Release, alongside .deb, .rpm, and Alpine .apk packages. Also on crates.io, Homebrew tap, AUR, and Scoop.

hrdr — macOS (Homebrew)
$ brew install kryptic-sh/tap/hrdr
$ hrdr
hrdr — Arch Linux (AUR)
$ yay -S hrdr-bin
$ hrdr
hrdr — Windows (Scoop)
$ scoop bucket add kryptic-sh https://github.com/kryptic-sh/scoop-bucket
$ scoop install hrdr
hrdr — Debian / Ubuntu · Fedora
# grab the .deb / .rpm from the latest release, then:
$ sudo dpkg -i hrdr_*.deb
$ sudo rpm -i hrdr-*.rpm
hrdr — from source
# crates.io
$ cargo install hrdr

# or build from the repo
$ git clone https://github.com/kryptic-sh/hrdr
$ cd hrdr
$ cargo build --release