Eru.Tool
0.7.1
dotnet tool install --global Eru.Tool --version 0.7.1
dotnet new tool-manifest
dotnet tool install --local Eru.Tool --version 0.7.1
#tool dotnet:?package=Eru.Tool&version=0.7.1
nuke :add-package Eru.Tool --version 0.7.1
eru
eru is a CLI tool for sharing knowledge files between projects. Declare where your shared files live (a git repo), pull them in with a single command, and track everything in a lock file so they stay in sync.
- Manifests — knowledge-source repos publish
.eru/manifest.jsonto declare available files; consumers pull from it automatically - Collections — group related files into a named set and pull them all with one command
- Tag-based pulls —
--tag devopsfetches everything taggeddevopsacross all collections - Glob patterns — collection entries can use globs to pull multiple files in one reference (e.g.
docs/*.md) - Lock file (
.eru/eru.lock) records every pulled file: its origin, path, and content hash - Dry-run mode on every write command
- Global config (
~/.config/eru/config.json) for sources and collections shared across all your repos
Requirements
- .NET 10 SDK or later
- git
Install
Install the Eru.Tool tool:
dotnet tool install --global Eru.Tool
Leave off --global to install locally in a repo instead.
Install the skill with skills.sh:
npx skills add dburriss/eru
The skill tells agents how to use the CLI.
Quick start
1. Initialise your repo
eru init
Creates .eru/config.json in the current directory.
2. Pull a file
Paste a GitHub or GitLab file URL directly:
eru add https://github.com/my-org/knowledge/blob/main/docs/adr-template.md
eru registers the source automatically, downloads the file, and records it in .eru/eru.lock.
Or pull by source name and path once a source is configured:
eru add knowledge:docs/adr-template.md
Or pull an entire curated collection:
eru add --collection onboarding-docs
3. Keep files up to date
eru sync
Fetches every file in .eru/eru.lock, compares content hashes, and overwrites anything that has drifted.
Commands
| Command | What it does |
|---|---|
eru init |
Scaffold .eru/config.json in the current directory |
eru init --global |
Create the global config at ~/.config/eru/config.json |
eru add <path> |
Pull a file by source:path, bare filename, or full URL |
eru add --collection <name> |
Pull all files in a named collection |
eru add --tag <tag> |
Pull all files matching a tag |
eru add --dryrun <path> |
Preview what would be pulled |
eru search <terms> |
Search sources and the lock file |
eru sync |
Re-fetch all tracked files and update drifted ones |
eru sync --dryrun |
Preview what sync would change |
eru source add <url> |
Register a git repo as a knowledge source |
eru source list |
List configured knowledge sources |
eru source view <name> |
Show details and files for a source |
eru collection create <name> |
Create a new collection |
eru collection add <name> -f <source:path> |
Add a file reference to a collection |
eru manifest init |
Create .eru/manifest.json in a knowledge-source repo |
eru manifest add <path> |
Add a file/glob entry to the manifest |
eru manifest remove <path> |
Remove an entry from the manifest |
eru manifest verify |
Check all manifest entries resolve to local files |
eru mcp |
Start an MCP stdio server for AI agent use |
For full argument details see docs/cli-reference.md.
MCP server
eru mcp exposes knowledge search and retrieval to AI agents (Claude, Copilot, Cursor, etc.) over the Model Context Protocol. See docs/mcp.md.
| 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.
MCP resources now declare `text/plain` MIME type — previously the SDK defaulted to `application/octet-stream`, causing many MCP clients and inspectors to not display the `eru://sources`, `eru://sources/{name}`, and `eru://installed` resources