Eru.Tool
0.7.0
See the version list below for details.
dotnet tool install --global Eru.Tool --version 0.7.0
dotnet new tool-manifest
dotnet tool install --local Eru.Tool --version 0.7.0
#tool dotnet:?package=Eru.Tool&version=0.7.0
nuke :add-package Eru.Tool --version 0.7.0
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.
| 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 |
Serilog rolling-file logging for the MCP server — warnings and errors from background syncs are written to `~/.cache/eru/mcp-YYYYMMDD.log` (XDG-aware; `%LOCALAPPDATA%\eru\` on Windows); daily rotation, 7-day retention
`refresh_knowledge` MCP tool now returns immediately instead of blocking until all git fetches complete — the sync runs on a background thread and any errors are written to the MCP log file rather than returned inline
`CollectionCacheService` timer ticks also go through the new background-sync path, freeing the timer thread from blocking on network I/O
Concurrent sync calls are deduplicated — if a sync is already in progress (from the timer or a previous `refresh_knowledge` call), the tool returns `"A knowledge refresh is already in progress."` rather than starting a second parallel sync
Git operations no longer prompt for credentials — `GIT_TERMINAL_PROMPT=0` and `GIT_ASKPASS=echo` are now set for all git invocations, preventing interactive auth prompts from blocking or corrupting the JSON-RPC stdio channel
MCP server checks source accessibility at startup — runs `git ls-remote` against each configured source URL before the host starts and writes a warning to stderr if any source is unreachable (e.g. due to missing credentials), surfacing auth failures immediately rather than on the first hanging tool call