session~/zaguan-bladelive
$An AI coding environment with a map of your code

The agent doesn't knowwhere anything is.

index5.16M symbols · Firefox-scale
contextLocators, not file dumps
controlYou approve every diff

So it reads everything. Every session, your coding agent rediscovers your repository from zero. It greps a name, opens six files, follows a wrong import, reads a test fixture, and eventually finds the function you already knew the path to. You paid for all of it.

Zaguán Blade gives the model a map first. A live index of your codebase — symbols, resolved references, exact byte ranges — so the agent navigates by structure instead of searching by hope.

The Cost of a
Blind Agent

You've watched all of these happen.

  • It reads forty files to change one function, and three of them were vendored.
  • It announces "I've refactored parseConfig everywhere" after finding two of the five call sites.
  • By the time it edits, the file it needed is forty tool calls back and no longer in context.
  • It fixes the symptom, because it never found the cause.
  • Your weekly limit is gone on Wednesday and you're not sure what you bought.

None of this is the model failing. Frontier models reason about code extremely well — when they can see the right code. The failure happens before the model ever thinks: the tool never told it where to look.

And the standard fix makes it worse. "Give it more context" means pouring the repository into the window: dead paths, compatibility shims, generated files, three versions of the same helper. You haven't made the model smarter. You've asked it to find a needle while you keep adding hay.

A big context window is a capability. It is not a discipline.

evidencezblade.session.mp4

Blade Reads Your Code
The Way You Do

Open a project and Blade builds a local index with tree-sitter: every function, method, class, type, component and constant — plus the resolved edges between them. Who calls this. What implements it. What breaks if it changes.

It lives in SQLite on your disk. No embeddings. No cloud. No upload. It updates incrementally as you edit, and it knows about buffers you haven't saved yet.

The Agent Queries Structure

  • symbol_search
    where this is defined, actually
  • symbol_references
    who calls it — resolved, not text-matched
  • edit_impact
    what breaks if I change this
  • read_file_range
    the exact bytes, once it knows which bytes

References, Not Text enforced

Here is the part that matters: those tools return locators, not text. A path, a byte range, a signature. Not the file.

The model reads the exact range it decided it needed — and nothing else lands in context by accident. A build test fails if a bulk result ever embeds a docstring.

Read less, later, with intent.

Evidence In.
Scoped Change Out.

Every Step Visible

  1. You ask for a change — Plan mode for the investigation first, Code mode to get it done.
  2. The agent works the index: finds the symbol, checks the references, measures the impact.
  3. You watch it happen. Not a spinner — the actual tool calls, the actual reasoning.
  4. A scoped diff appears, per file.
  5. Accept it, or reject it back to the pre-edit snapshot.

You are not reviewing a diff after the fact. You are watching the investigation that produced it.

Nothing Runs Behind Your Back

Shell commands require your approval before they run. Not a setting you hope defaults correctly — a card in the chat with the command on it.

There's a YOLO mode when you genuinely want it. Per project. Never global.

Git stays the source of truth, with a full panel for staging, commits, branches and AI-written commit messages. Every AI edit is snapshotted before it lands, so reject always has somewhere to go back to.

The Model Is a Setting,
Not a Lock-In

Local

Ollama, Ollama Cloud, or any OpenAI-compatible server — llama.cpp, vLLM, LocalAI. No subscription, no key, no account. Your code stays on your machine.

This is where the index earns its keep hardest. A 20B local model with a precise 4K context is a genuinely useful engineer. The same model handed 100K of repository sludge is a toy.

Hosted

One Zaguán AI subscription, every frontier model — Claude, GPT, Gemini, Kimi, MiniMax, Qwen — routed through the Zaguán Coder Daemon. Switch models mid-conversation.

The daemon is the brain: orchestration, tool execution and prompt discipline live there, so the editor stays a fast, native shell rather than a place where your CPU goes to die.

Your Conventions Come With You

AGENTS.md is read as workspace instructions — root file, nested files, and local Markdown includes.

Agent Skills (SKILL.md) work from your repo and your home directory — and the catalog stays out of the prompt. The model searches a compact index and loads one skill body when it actually needs it, inside a measured token budget.

No telemetry. Conversations can stay in .zblade/ inside your project, and .gitignored files are excluded from AI context by default.

"I Already Have
a CLI Agent."

Fair. Keep using it — this isn't an argument about which model is smarter. It's about what the model can see before it starts.

A CLI agent explores your repository with grep, glob and file reads, from scratch, every session. That's a reasonable design for a tool that has to work in any directory on any machine with no setup. It also means the first several minutes of every task are spent rebuilding knowledge that was already thrown away.

Blade keeps that knowledge. The index persists, updates incrementally as you edit, and knows unsaved buffers. The agent starts oriented.

The rest follows from being an environment instead of a terminal. You see the diff in a real editor before you accept it. You capture a window, annotate the screenshot, and show the model the broken UI instead of describing it in prose. You have a Git panel, a terminal, a PDF viewer, rendered Markdown — because sometimes the fastest way to help the model is to look at the thing yourself.

And if you love the terminal, say so. Blade is a desktop app. That's a real trade. It buys you a persistent index, visible investigation, and per-file review. If that trade isn't worth it to you, the honest answer is that it isn't.

Built on Ugly Repos,
Not Demos

Firefox 469,627 files

C++, Rust, JavaScript, thirty years of history, generated files, deliberately malformed web-platform-tests, and YAML containing build-time placeholders that aren't legal YAML.

It indexes clean in about thirty minutes and produced 5.16 million symbols — on a spinning disk over USB. Getting there meant fixing three latent crashes and a checkpoint stall no benchmark repo would ever have surfaced.

Read the war story →

And Everything Else

The Linux kernel. 77,000 files, bounded memory, no special-casing.

Blade itself. Zaguán Blade and the Coder Daemon have been built with Zaguán Blade since it could edit its own source. Six months, daily. Every rough edge you'd hit, I hit first.

The stack. Rust and Tauri v2 for the editor, Go for the daemon, Gitoxide for Git. No Electron — Blade idles at a few hundred megabytes, not a few gigabytes.

This Is Not for You If

  • You want a VSCode clone with a marketplace. Blade has no extension ecosystem and won't get one soon.
  • You want an agent that runs unattended for an hour and opens a PR. Blade is built to be watched.
  • You want a prompt to generate a whole app. Blade is for repositories that already exist and already matter.

This Is for You If

  • You run agents on real codebases and you've stopped trusting diffs you didn't watch get made.
  • You think a model call should have to earn its cost.
  • You'd rather the tool understand your code than hope the model guesses right.

Simple
Pricing

The Editor
Free to download and use
AI Features
Zaguán AI subscription — or bring your own local models via Ollama
Multi-model routingPriority support (email)Early access to new toolsFunding development
View Pricing & Plans

Get Blade
for Your OS

!Six months of daily use on production repositories. Report anything that isn't right — the issue tracker is read by the person who wrote the code. Hosted AI models require a Zaguán AI subscription; local models via Ollama work without one.