Belvedere Labs/Flue Analyst Org
built on Flue GitHub
★ Open-source·built on Flue

Drop your data. Get an analyst's answer in a few minutes.

Works on CSV, Excel, JSON, NDJSON, PDFs, and images. Up to nine Flue agents profile your file, test hypotheses, run the math, critique each other, and write a sourced report — the kind of depth a single agent (Claude Code, Codex, ChatGPT) won't give you on its own.

no CSV?

Each sample is bundled with the app and ships with a starter question — you can swap it for your own once the run lands on the dashboard.

Inside the Swarm

Specialised agents. One pipeline. Different models.

Each LLM agent runs on the US frontier model best-suited to its job — Anthropic, Google, and xAI, all via OpenRouter. Click any agent for its prompt, model, and config.

routed viaOpenRouter·AnthropicGooglexAIcompute
Flow▢Intake→≡Data Profiler→✓Data Quality→◇Data Understanding→?Hypotheses→ΣAnalyst→∿Trend Analyst→⚑Critic→▦Visualization→★Synthesis

Field Notes

Why we built on Flue.

Four things that paid off shipping a multi-agent data-analysis pipeline on flueframework.com.

01

Agents are single-file

System prompt, model, sandbox, payload type, and result schema all colocated in .flue/agents/<name>.ts. Reading the critic agent tells you everything that critic does — no registry to grep, no factory to chase, no config file living in a different folder.

02

Schemas at the boundary

Every model agent declares a valibot Result schema and passes it straight into session.prompt. Flue validates the LLM's output before anyone sees it, so hallucinations show up as a typed boundary error — never as a JSON.parse blowing up two agents downstream.

03

One runtime for every agent

Pure-compute steps (intake, profiler, quality) and model-driven steps (hypothesis, critic, synthesis) ride the exact same webhook contract. Deterministic CSV math and stochastic reasoning live side-by-side, deployed together, debugged the same way.

04

The pipeline is just TypeScript

The agents — with a parallel branch (analyst ∥ trend) and three fan-ins — are sequenced in plain TypeScript using await callFlue(...) and Promise.all. The DAG is control flow you read top to bottom, no graph DSL between you and the work.

Flue DLS · v0.3
flueframework.comgithub