Eru.Tool
0.16.1
dotnet tool install --global Eru.Tool --version 0.16.1
dotnet new tool-manifest
dotnet tool install --local Eru.Tool --version 0.16.1
#tool dotnet:?package=Eru.Tool&version=0.16.1
nuke :add-package Eru.Tool --version 0.16.1
<p align="center"> <img src="docs/images/eru-logo.svg" alt="eru" width="280"> </p>
<h3 align="center">Targeted context for AI agents, from any git repo.</h3>
<p align="center"> <code>eru</code> pulls just the knowledge an agent needs from local or remote git sources, makes it searchable, gives humans a themed site to read it, and lets agents turn a pile of raw notes into a curated knowledge source. </p>
<p align="center"> <a href="https://github.com/dburriss/eru/actions/workflows/build.yml"><img src="https://github.com/dburriss/eru/actions/workflows/build.yml/badge.svg" alt="Build and test"></a> <a href="https://www.nuget.org/packages/Eru.Tool"><img src="https://img.shields.io/nuget/v/Eru.Tool?logo=nuget" alt="NuGet"></a> <a href="https://github.com/dburriss/eru/releases"><img src="https://img.shields.io/github/v/release/dburriss/eru?logo=github" alt="GitHub release"></a> </p>
<p align="center"> <img src="docs/reference/images/themes/terminal-dark.png" alt="The eru generated site in the terminal theme, dark mode" width="900"> <br> <sub>The generated site in the <code>terminal</code> theme. See all <a href="docs/reference/theme-list.md">themes</a>.</sub> </p>
Get started
Install the tool (.NET 10 and git required; self-contained binaries are on the releases page):
dotnet tool install --global Eru.Tool
Or install a self-contained binary with mise, which needs neither .NET nor a separate download:
mise use --global github:dburriss/eru
Install the skill with skills.sh:
npx skills add dburriss/eru
Then ask your agent to set eru up. The skill knows how to add sources, pull files, build a site and run an inbox, so you don't need to learn the commands.
What it does
Targeted context for agents
Point eru at one or more git repos, local or remote, and pull only what a project needs: single files, named collections, or everything with a tag. Every pulled file is recorded in a lock file, so it stays in sync and you can see where it came from.
Search is powered by Ferret: ranked lexical (BM25), semantic and hybrid search, running locally over your knowledge. eru mcp exposes that search and retrieval to Claude, Copilot, Cursor and any other MCP client, so agents ask for context instead of reading whole repos.
OKF or an eru manifest
A knowledge source can be an OKF bundle, or any repo with an eru .eru/manifest.json that declares the files it offers. eru can validate and repair OKF trees, and check that a manifest resolves.
A site for humans
eru site generate builds a self-contained, searchable site from your knowledge, with five built-in themes and room for your own. eru site serve adds live reload, and the output publishes straight to GitHub Pages.
Agent workflows: from inbox to curated knowledge
Drop raw text into an inbox, which can be a local folder or a remote git repo. An ingestor agent processes each item into well-formed, linked, validated notes in your knowledge source. Run it locally while you work, or in CI so that pushing a raw capture is enough.
- Use send and watch locally
- Process the inbox with a GitHub Agentic Workflow
- Process the inbox with a plain GitHub Action
How it fits together
git repos (local / remote) inbox (raw text)
OKF bundle or eru manifest │
│ ▼
│ ingestor agent ──▶ curated knowledge
▼ │
eru cache + lock file ◀─────────────────────────────────┘
│
┌─────┴───────────────┐
▼ ▼
agents (search, MCP) humans (generated site)
Documentation
Full documentation lives under docs/, organised by Diataxis: tutorials, how-to guides, reference and explanation. The complete command list is in the CLI reference.
Contributing
Run mise install for the toolchain, then dotnet build and dotnet test --solution eru.slnx. CI builds and tests every push and PR; pushing a v* tag publishes the NuGet package and GitHub release binaries. See AGENTS.md for the project layout, conventions and release flow.
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.16.1 | 70 | 11/7/2026 |
| 0.16.0 | 67 | 11/7/2026 |
| 0.15.1 | 67 | 11/5/2026 |
| 0.15.0 | 60 | 11/5/2026 |
| 0.14.0 | 116 | 11/2/2026 |
| 0.13.1 | 142 | 10/12/2026 |
| 0.13.0 | 123 | 10/12/2026 |
| 0.12.0 | 130 | 10/9/2026 |
| 0.11.1 | 123 | 10/8/2026 |
| 0.11.0 | 124 | 10/8/2026 |
| 0.10.0 | 130 | 10/5/2026 |
| 0.9.1 | 145 | 10/2/2026 |
| 0.9.0 | 136 | 10/2/2026 |
| 0.7.1 | 350 | 5/29/2026 |
| 0.7.0 | 273 | 5/29/2026 |
| 0.6.0 | 269 | 5/29/2026 |
| 0.5.1 | 266 | 5/29/2026 |
| 0.5.0 | 262 | 5/29/2026 |
| 0.4.0 | 264 | 5/29/2026 |
| 0.3.0 | 264 | 5/28/2026 |
The `semantic-search` skill and the `ingestor` agent use the `ferret` CLI instead of `ck`, matching eru's own search. Searches rank by relevance with `--limit` instead of score thresholds, and indexes live in Ferret's cache (`~/.cache/ferret`) instead of a `.ck/` directory in the searched folder. Install `github:dburriss/ferret` (mise) in place of `github:BeaconBay/ck`
Windows: themes installed in a project's `.eru/themes/` were never found because the directory was built with `\` separators