gannetGitHub
A gannet folded into its plunge dive above a dark sea at sunset

In developmentgannet is being built in the open and is not released yet.

An open-source deep research agent, built to cite every claim

gannet is an open-source deep research agent being built in C# by DBHQ. It is designed to take a question, plan the research, search the web, weigh each source and write a report in which every claim is cited to a page it actually read.

The rules gannet is built to keep

  • Every citation points at a page the run fetched

    Sources are to get an ID the moment they are fetched. The writer may cite only those IDs, and the merged citation checker removes anything else.

  • No search result text is written to disk

    By design, page text lives in memory for one run. Run records keep the plan, the report and the source list: URL, title and score.

  • Your model, your search service

    A cloud model or a local one, and a choice of search service, picked per run. Ollama with self-hosted SearXNG is planned as the path with no keys.

Four stages, one workflow

gannet is designed to run a question through four stages on Microsoft Agent Framework Workflows, the shape it takes from deep-research-agent (external site). This is what the workflow is being built to do.

  1. 01

    Plan

    The main model breaks the question into the searches that would answer it.

  2. 02

    Search

    A search agent runs the plan through the search service chosen for the run, and readers fetch each page, falling back to the next reader when a page blocks one.

  3. 03

    Weigh

    Each source gets a credibility score from its domain and path, and a fast model pulls the findings out of each page.

  4. 04

    Write

    The main model writes the report from the findings, citing source IDs. Unknown IDs are removed, the rest are numbered, and the reference list is set in APA, MLA, Chicago or IEEE.

Underwater, a gannet trailing bubbles as it dives towards a shoal of fish

Already in the code

Citations it cannot make up

A model asked to cite its sources will sometimes cite one it never read. So gannet is designed never to ask the model to number anything. Each source is to get an ID the moment a tool fetches it, S1, S2 and on, and the writer cites those IDs. Then CitationChecker removes any ID the run never fetched, and CitationNumberer turns the rest into numbers and a reference list.

Those two are merged and tested, in src/Gannet.Core/Citations/, with the four reference styles: APA, MLA, Chicago and IEEE. So is the credibility scoring each source will get, in src/Gannet.Core/Credibility/.

Read the citation code (external site)

Your model, your search service

Keys stay in configuration and the choice is made per run. These are the providers gannet is being built to support. Ollama with a SearXNG instance you host is the path with no keys at all.

Models

  • Ollama
  • vLLM
  • llama.cpp
  • OpenAI
  • Azure OpenAI
  • Anthropic
  • Gemini

Search services

  • SearXNG
  • Tavily
  • Brave
  • Serper
  • Exa
  • Firecrawl
  • Parallel
  • Bright Data

Where the build stands

gannet is built in the open, one reviewed pull request at a time. Nothing here is a promise of a date.

Merged

  • The repository, CI and the hosting check
  • Citation checking and numbering, in four reference styles
  • Credibility scoring, with rules a user can extend
  • Report export to Markdown, HTML and text, and run storage

Still to build

  • Model and search providers
  • The research workflow on Microsoft Agent Framework
  • A command line, a REST API and an MCP server
  • The web UI, and the guide to hosting it yourself

Guides

Written to be useful whether or not you ever use gannet.

  • Open-source deep research

    The open deep research agents compared: what each searches, what it runs on and how it cites.

  • Perplexity alternatives

    Hosted and self-hosted answer engines, and how to tell whether one is a real replacement.

  • Source credibility

    What makes a source credible, and the methods fact-checkers actually use to judge one.

  • SearXNG API

    Run SearXNG in Docker, turn on its JSON API and use it as a free search API for an agent.

Questions

Is gannet released?
Not yet. gannet is being built in the open on GitHub, and this page says what it is being built to do. The core pieces are merged: citation checking, credibility scoring, report export and storage. The search providers, the research workflow and the interfaces come next.
Is gannet free?
Yes. gannet is open source under the MIT licence. It is being built to run on your own machine with your own keys, or with no keys at all on a local model through Ollama and a SearXNG instance you host.
How is it different from ChatGPT or Gemini deep research?
Those are hosted services that use their own model and their own search. gannet is built to run where you choose, with the model and search service you choose, and to cite only pages the run actually fetched. Anything else is removed before the report is numbered.
What is gannet built with?
C# on .NET 10 and Microsoft Agent Framework Workflows, with a Blazor web UI. Models are reached through Microsoft.Extensions.AI, so the provider is configuration rather than code.
Where does gannet come from?
It is a rewrite of deep-research-agent by Tarun Sai Goddu, a Python project on LangGraph published under the MIT licence. The four-stage shape and the idea of scoring sources for credibility come from there.