100% local - zero API cost

A team of AIs,
thinking together.

A guided multi-agent research assistant. Drop in a goal - the planner breaks it into tasks, a research router grounds each one in the web or reasoning, and a writer/critic loop turns it into a cited, polished report. Runs entirely on local LLMs via Ollama.

TypeScript stars 4 forks 0
execution_graph.live
planner researcher router writer critic
runtime status

Inspectable, checkpointed, and built to stay local.

Every stage can be paused, reviewed, and rerun before the final report lands.

Streaming checkpoints pause / continue
Execution graph planner -> router -> writer
Grounded output inline citations kept
Local inference Ollama only
// what it does

Four things, done properly.

Every stage is grounded, inspectable, and pauseable - nothing runs as a single opaque call.

01 / agents

Grounded research pipeline

Planner -> research router -> researchers gathering web or reasoning-based insight, with inline citations, feeding into writer and critic.

02 / control

Streaming with checkpoints

Server-sent events stream every stage live, with pause/continue and auto-run toggles so you can review before it moves on.

03 / graph

Visual execution graph

A React Flow graph shows planner -> router -> researchers -> the rest of the pipeline, with "needs rerun" badges on stale outputs.

04 / cost

100% local, zero cost

Runs entirely on local LLMs via Ollama - no OpenAI key, no per-call cost, fully offline capable.

// request lifecycle

How a goal becomes a report.

Goal -> planner -> research router -> researchers (with manual review) -> synthesizer -> writer -> critic.

01

Plan

You drop in a goal. The planner breaks it into discrete research tasks.

02

Route & research

Each task is routed to web grounding or LLM reasoning. You can inspect, edit, or rerun researchers before continuing.

03

Synthesize & write

Cited research blocks are synthesized, then the writer produces a structured, sourced draft.

04

Critique

The critic reviews and refines recursively until the output holds up.

// try it

See it run.

Pick an example goal. Watch it get typed in, then watch the pipeline actually work through it.

goal.txt
process.log
// built with

Stack

Next.js on the frontend, server-sent events for streaming, and local inference via Ollama - nothing calls out to a paid API.

TypeScript Next.js (App Router) Material UI React Flow Server-Sent Events Ollama (local LLM)

Clone it, run Ollama, watch it think.

The full source, setup instructions, and architecture notes are on GitHub. No API keys required.