A local research agent. You name a group of sources you already trust; it goes through every one of them, reports conclusions with a citation on each line, and tells you which sources it could not reach.
The difference from a general research agent is retrieval, not model quality: a general agent takes a query and returns globally ranked documents, while Radar takes a list and searches it exhaustively. A niche blogger never makes the global top 20, and some sources are not in any search index at all.
Built on top of an existing agent harness (earendil-works/pi) — a
fork-and-extend project, not a harness written from scratch, and not a pi plugin.
Stage 1 of four — in progress. Give run.sh a direction and it dispatches
researchers, searches, and reports back with links. The model layer (DeepSeek),
one source (hn_search), web search (tavily_search), sub-agent dispatch, and
run logging all run end to end.
The terminal UI is gone — -p, --mode json, and --mode rpc are the only
ways to run it until the WebUI lands in Stage 3.
Still to build in this stage: source group configuration, an RSS source, the zero-skip guarantee, and the coverage report. See PRD.md.
Radar is a derivative work of
earendil-works/pi, which is MIT
licensed. The upstream source lives under src/; LICENSE is pi's and is kept
as is.
Radar no longer syncs with upstream. The tree under src/ has been heavily
trimmed (slice 0002) and is maintained here from now
on, so this repository keeps no remote pointing at pi and does not carry its
commit history — chore: import the pi substrate is the fork point, and
LICENSE carries the terms. To bring a file back, clone pi separately and copy
it across.
pi's own contributor conventions are not Radar's rules. Radar's conventions in
CLAUDE.md win.
| File | Scope |
|---|---|
| PRD.md | The current stage — what it needs, what ships, what is out of scope |
| docs/v0.1/PLAN.md | This stage's slices and their status |
| docs/v0.1/friction-log.md | Concrete observations from actually running it |
| CLAUDE.md | Global conventions and the doc index |
PRD.md wins on conflict.
Documentation, code, and comments are all in English.
npm install --ignore-scripts
cp .env.example .env # then fill in the two keys
./run.sh # run Radar from source (run.ps1 on Windows)Credentials live in .env at the repository root. It is gitignored;
.env.example lists what belongs in it. Real environment variables take
precedence over the file, so a hosted deployment can set them directly and a
.env that ships in the image cannot override them.
To run pi bare — no Radar model pin or excluded tools — which is what tool-boundary differential checks compare against:
node_modules/.bin/tsx --tsconfig tsconfig.json src/app/cli.ts --versionMIT — inherited from pi. See LICENSE.