You can't tell what your agent doesn't know until the code breaks

AI coding agents return outdated code and hallucinate apis — confidently. fugg gives them docs matched to the version in your project, read like files (ls, cat, grep), frozen when published.

$curl -fsSL https://fugg.dev/install | sh
beta — invite-only
your agent
running · tool call
  • stripe/docs
    payments api
  • openai/api
    model api
  • anthropic/docs
    model api
  • vercel/nextjs-live
    react framework
  • react/docs
    ui library
  • tailwindcss/docs
    css framework
  • nodejs/api
    js runtime
  • python/docs
    language
  • typescript/docs
    language
  • go/std
    standard library
  • mdn-web-docs
    web platform
  • apple/swiftui
    apple ui framework
  • postgresql-docs
    database
  • sqlite/docs
    database
  • supabase/docs
    backend platform
  • prisma-docs
    orm
  • drizzle-team/docs
    orm
  • pydantic/docs
    validation
  • django/docs
    web framework
  • laravel-docs
    web framework
  • expo/docs
    react native
  • docker-docs
    containers
  • cloudflare/docs
    edge platform
  • langchain/python
    agent framework
  • vue-docs
    ui framework

…and the long tail, where training data runs dry

  • temporal-docs
    durable workflows
  • duckdb-docs
    embedded analytics
  • clickhouse-docs
    olap database
  • keycloak/javadocs
    identity server
  • backstage-docs
    developer portals
  • tauri-docs
    desktop apps
  • nuxt-docs
    vue framework
  • helm-docs
    k8s packages
  • julia-manual
    language
  • bun-docs
    js runtime
…down to the man pages, javadocs, and SDK corners nobody makes a logo for.

Each of these is the full documentation, rebuilt for agents — cleaned of web clutter, kept current, laid out as a plain file tree. Your agent browses it the way it already browses your repo.

same task, three runs. correct only with fugg

Same task, in a repo pinned to next@16.2.10 — alone, with web search, with fugg. No prompt mentioned the rename. Twice it confidently wrote middleware.ts, the convention Next.js 16 renamed. With fugg it checked the docs for that version and wrote proxy.ts.

prompt
add auth checks in front of every route — redirect to /login if the `session` cookie is missing
fugg offagent alone
Ran cat package.json
next@16.2.10
show the rest of the session
Ran find app -type f
app/login/page.tsx · app/page.tsx
Read app/page.tsx · app/login/page.tsx
Ran find . -maxdepth 2; cat next.config.*
no config, no existing middleware
Edited middleware.ts
doc reads: 0
middleware.tsdeprecated in 16.0
export function middleware(request: NextRequest) {
const sessionCookie = request.cookies.get("session");
fugg offagent + web search
Ran cat package.json
next@16.2.10
Searched "Next.js 16 middleware.ts cookies redirect auth session example"
auth0.com — Handling Auth in Next.js 16 with Server Actions and Middleware
confirmed middleware.ts … is still the current App Router pattern.
show the rest of the session
Ran find . -type f
app/login/page.tsx · app/page.tsx · package.json
Read app/page.tsx · app/login/page.tsx
Searched — 2 more results from the same search
better-auth.com — Next.js integration · "Next.js Middleware Authentication: Prote…"
Edited middleware.ts
web searches: 1 · doc reads: 0
middleware.tsdeprecated in 16.0
export function middleware(request: NextRequest) {
const session = request.cookies.get("session");
fugg on
Ran cat package.json
next@16.2.10
Ran fugg head -30 …/guides/authentication.md
version: 16.2.10 — matches package.json
Ran fugg grep -rln 'proxy.ts' …/docs/
getting-started/proxy.md · file-conventions/proxy.md
There's a dedicated app/getting-started/proxy.md doc. Let me read it for the canonical file conventions.
Ran fugg sed -n '21,100p' …/getting-started/proxy.md
Starting with Next.js 16, Middleware is now called Proxy to better reflect its purpose. The functionality remains the same.
12 more reads
Ran fugg sites | grep -i next · fugg versions vercel/nextjs-live
vercel/nextjs-live · v0.20260706.0
Ran fugg grep -rln 'middleware' …/docs/
app/guides/authentication.md · backend-for-frontend.md · mcp.md …
Ran fugg grep -n 'middleware' …/authentication.md
887: Proxy uses the Node.js runtime … you may need Middleware if your Auth library only supports Edge Runtime
Ran fugg sed -n '820,950p' …/authentication.md
// Routes Proxy should not run on · export const config = { matcher: […] }
Ran fugg sed -n '65,220p' …/file-conventions/proxy.md
exports · matcher · NextResponse · execution order
Ran fugg sed -n '596,650p' …/file-conventions/proxy.md
negative matching — the canonical matcher pattern
Ran fugg grep -n 'cookies.get' …/functions/next-request.md
43: request.cookies.get('show-banner')
Good, confirms request.cookies.get('session') usage. Now let me write proxy.ts at the project root.
Edited proxy.ts
doc reads: 15 · matched to 16.2.10
proxy.tscurrent · source cited
// Next.js 16 renamed Middleware to Proxy; this file replaces the old
// middleware.ts convention. See docs/app/api-reference/file-conventions/proxy.
export function proxy(request: NextRequest) {
read the three full sessions →run on 2026-09 · the deprecated file still runs — it's just quietly on last year's path

your agent reads docs like it reads code

Your agent already works your code from the shell all day — ls, cat, grep. fugg is a cli that makes the docs just more files: no mcp server to configure, no tool catalog in your context, one line in its instructions. It reads the section it needs, as it needs it.

the docs page, fetched

what a web fetch hands your agent: the whole page as HTML — scripts, nav, cookie banner — and somewhere in it, the two lines that matter.

<html lang="en">
<script src="…/chunks/main.js" async></script>
<nav aria-label="Main">Docs · Learn · Blog · Sign in</nav>
<aside class="sidebar"> … every page, as links … </aside>
<div class="cookie-banner">We use cookies … <button>Accept</button></div>
<main>
<h1>proxy.js</h1>
<p>API reference for the proxy.js file.</p>
… the rest of the page, inside more markup …
</main>
<footer>Privacy · Terms · Cookies</footer>
two useful lines — and everything around them
the same docs, through fugg

plain files, matched to the version in your repo. The answer is a path your agent can ls to.

/docs/vercel/nextjs-live/latest/docs/
14/
15/
… 3 more/
app/
api-reference/
file-conventions/· 22 entries
layout.md
page.md
route.md
proxy.md
… 18 more
version-matched · latest → 16.2.10 · every entry a real path

already tried something?

  • context7 & docs mcps

    they search an index and send your agent whatever ranks best — and the index updates under you. fugg doesn't rank anything: your agent reads a fixed docs tree for the version you name, and the same read returns the same bytes.

  • web search

    the agent skims some page and paraphrases it — you can't tell which page, or for which version. every fugg read carries its address: site, version, file, line range. open the same path and you'll read the same words it did.

  • your own rag pipeline

    chunking, embeddings, re-indexing every release — a pipeline you maintain forever. fugg is just files. nothing to re-index, nothing to re-rank.

FUGGbench Leaderboard

Every entry is a curated, versioned snapshot agents can shell into. FUGGbench scores each corpus on how well it can be navigated, parsed, and grounded by an LLM — not just whether it exists.

preview
SiteScoreStructFreshVersionCold NavScored
92969592842h ago
90959590804h ago
88929584866h ago
86889578823h ago
85909586704h ago
82859580785h ago
78808888707h ago
68609050648h ago

about

fugg is an agent tool that gives your agent shell access to a frozen, versioned set of docs for the library versions you actually use. built by General Frontier.

  • agent-first built for agents to read, not humans to browse
  • plain files, plain commands if your agent can read a file, it can use fugg

get it running

$curl -fsSL https://fugg.dev/install | sh

then fugg sites lists everything that's indexed. one line in your agent's instructions, and it reads for itself.

  • 1 — install

    one command puts the fugg cli on your machine. works with any agent that can run shell commands — claude code, cursor, codex, your own.

  • 2 — tell your agent once

    add one line to your agent's instruction file (CLAUDE.md, AGENTS.md): "check docs with fugg before using an external api." that's the whole integration.

  • 3 — it just reads

    from then on the agent runs fugg grep and fugg cat on its own, the same way it reads your project files. nothing else to configure.