docs(changelog): fix Zaguán Coder Daemon entry ordering and theme count

This commit is contained in:
2026-03-11 07:50:03 +01:00
parent 500646ef8b
commit 3b87904a24
2 changed files with 179 additions and 3 deletions
@@ -0,0 +1,176 @@
---
title: "What Zaguán Coder Daemon Actually Is"
description: "A light, semi-technical introduction to zcoderd, the server-side brain behind Zaguán Blade, and why splitting intelligence from execution makes AI coding feel more useful."
pubDate: 2026-03-11
tags: ["zaguan", "ai", "developer-tools", "agentic-coding", "architecture"]
categories: ["Engineering"]
draft: false
---
If you hear the name **Zaguán Coder Daemon** and imagine some mysterious background service humming away in a dark server rack, that is not entirely wrong.
But the short version is simpler:
**`zcoderd` is the brain behind the coding experience.**
It is the part of the system that thinks about the request, keeps track of context, decides which tools to use, and coordinates the next step. It does not live inside your editor pretending to be all-powerful. Instead, it works together with **`zblade`**, the client-side companion that actually has access to your workspace, your files, your terminal, and the visible editor state.
That split matters more than it may seem.
## Why not just put everything in the editor?
A lot of AI coding tools are effectively a chat box bolted onto an IDE. They can be useful, but they often end up trapped between two uncomfortable trade-offs:
- **Too little context**, and the assistant feels shallow.
- **Too much context**, and every turn becomes expensive, slow, or noisy.
Zaguán Coder Daemon takes a different approach. Instead of making the editor do everything, it separates the system into two roles:
- **`zcoderd`** handles orchestration, reasoning, session state, model communication, and server-side capabilities.
- **`zblade`** handles local execution: reading files, applying edits, running commands, and reflecting what is happening in the UI.
You can think of it like a good pair-programming setup.
One side is focused on strategy.
The other side is close to the code.
And the conversation between them is the product.
## The simplest way to picture it
If you ask for a bug fix, a refactor, or a feature, `zcoderd` is the component deciding what should happen next.
It looks at the request, the available workspace context, the conversation so far, and the tools that are available. Then it may choose to:
- answer directly,
- inspect code,
- request a file read,
- ask for a search,
- apply a patch,
- or use server-side capabilities such as web-aware research and retrieval.
But when the task involves the actual machine where your project lives, `zcoderd` does not pretend it can magically reach into your filesystem.
That is where `zblade` comes in.
`zblade` is the execution side. It can read local files, search the project tree, run commands, and show progress back in the editor. In other words, `zcoderd` decides, and `zblade` does.
That division is one of the core ideas behind the platform.
## Why this split is useful in practice
There are a few practical benefits to keeping intelligence and execution separate.
### 1. Better boundaries
Local file access stays local.
That sounds obvious, but it is important. The daemon can orchestrate a coding task without needing direct filesystem access to your machine. The editor-side client is the part that performs local actions. That creates a cleaner boundary between planning and execution.
### 2. Richer sessions
Because `zcoderd` is not just a thin request forwarder, it can maintain session-level state over time. That makes the assistant feel less like a stateless autocomplete engine and more like a collaborator that can stay oriented inside a longer task.
### 3. A more capable tool model
Some tools naturally belong on the client.
Some belong on the server.
Reading a local file? Client-side.
Running a workspace command? Client-side.
Coordinating model interactions, remote retrieval, or broader research flows? Server-side.
That separation helps the system avoid awkward compromises where every tool is forced into the same box.
### 4. A better user experience
Because communication happens over a persistent connection, the system can stream responses, surface progress, request tool actions mid-turn, and continue after results arrive. The experience becomes less like “send prompt, wait, hope” and more like watching an actual coding workflow unfold.
## So how do `zcoderd` and `zblade` talk?
At a high level, they stay connected through a persistent protocol designed for back-and-forth work rather than one-off prompts.
That means the session is not just “user sends text, model sends text back.”
It is closer to:
1. the editor shares relevant workspace state,
2. `zcoderd` decides what kind of help is needed,
3. tool calls are routed to the right side,
4. results flow back into the conversation,
5. and the response continues from there.
This is what makes the system feel agentic without needing to advertise itself as some all-seeing autonomous robot.
It is not trying to perform theater.
It is trying to stay grounded in the real project and take the next useful step.
## The “brain and hands” model
If there is one mental model worth keeping, it is this:
- **`zcoderd` is the brain**
- **`zblade` is the hands**
The brain keeps the task coherent.
The hands interact with the workspace.
That sounds almost too neat, but it maps well to how people actually want coding assistants to behave.
You do not want an assistant that only talks.
You also do not want one that acts without context.
You want one that can understand the job, inspect what matters, use tools deliberately, and stay aware of what has already happened.
That is exactly the kind of behavior this split is meant to encourage.
## What makes it different from a typical AI coding assistant?
The difference is not just that it can use tools.
Lots of systems can use tools now.
The interesting part is **how the responsibilities are divided**.
In a simpler assistant, everything is often mashed together:
- prompt assembly,
- workspace interaction,
- model calls,
- UI glue,
- and tool execution.
That can work for small tasks, but it becomes harder to scale gracefully when sessions get longer, contexts get larger, and users expect the assistant to remain useful instead of drifting.
`zcoderd` is designed more like infrastructure than a plugin trick.
It is a daemon, not just a sidebar.
That means it can act as a long-lived coordination layer rather than a disposable request wrapper.
For the user, the benefit is simple: the assistant has a better chance of staying on track.
## And yes, this is also about efficiency
There is another quiet benefit to this architecture: it creates room for smarter context handling.
When the system has a dedicated orchestration layer, it can be more selective about what needs to be carried forward, what needs to be retrieved, and what should stay out of the models way. That matters for both speed and cost.
You do not need to know every internal trick to appreciate the result.
The point is not to drown the model in everything.
The point is to keep it informed enough to be useful.
That is a subtle distinction, but it is one of the biggest differences between an AI tool that feels impressive in a demo and one that remains practical during real work.
## The real promise
Zaguán Coder Daemon is not trying to be flashy for its own sake.
Its job is to make AI coding feel less like chatting with a stranger and more like working with a capable partner that has structure, memory, and access to the right tools through the right channel.
`zcoderd` gives the system a center of gravity.
`zblade` gives it a grounded way to act.
Together, they form a coding workflow where reasoning is separated from execution, local actions stay local, and the overall experience can be more responsive, more reliable, and more intentional.
That may not sound as dramatic as “fully autonomous software engineer.”
But in practice, it is probably more useful.
And for a coding assistant, useful is the whole point.
+3 -3
View File
@@ -42,12 +42,12 @@ import BaseLayout from '../layouts/BaseLayout.astro';
<ul class="changes-list"> <ul class="changes-list">
<li><strong>Zaguán Coder Daemon.</strong> Implemented a new GPT skill inspired by <a href="https://github.com/cyxzdev/Uncodixfy" target="_blank" rel="noopener">Uncodixfy</a> and refined the other design skill.</li> <li><strong>Zaguán Coder Daemon.</strong> Implemented a new GPT skill inspired by <a href="https://github.com/cyxzdev/Uncodixfy" target="_blank" rel="noopener">Uncodixfy</a> and refined the other design skill.</li>
<li><strong>Zaguán Coder Daemon.</strong> Fixed streaming issues related to gpt-5.4.</li> <li><strong>Zaguán Coder Daemon.</strong> Fixed streaming issues related to gpt-5.4.</li>
<li><strong>Zaguán Coder Daemon.</strong> Added a <code>tool_search</code> tool based on the <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool" target="_blank" rel="noopener">Anthropic documentation</a> to help reduce initial token usage.</li>
<li><strong>AI Chat Panel v2.</strong> A complete rewrite of the AI Chat panel. v2 is now a lot more performant and responsive.</li> <li><strong>AI Chat Panel v2.</strong> A complete rewrite of the AI Chat panel. v2 is now a lot more performant and responsive.</li>
<li><strong>Chat Panel Update.</strong> Updated the Chat panel and took a lot of inspiration from <a href="https://github.com/pingdotgg/t3code" target="_blank" rel="noopener">T3 Code</a>.</li> <li><strong>Chat Panel Update.</strong> Updated the Chat panel and took a lot of inspiration from <a href="https://github.com/pingdotgg/t3code" target="_blank" rel="noopener">T3 Code</a>.</li>
<li><strong>Git Commit Text Area.</strong> Made the Git commit text area bigger and dynamic.</li> <li><strong>Git Commit Text Area.</strong> Made the Git commit text area bigger and dynamic.</li>
<li><strong>AI Chat Panel.</strong> Toned down the font color to make it easier to read.</li> <li><strong>AI Chat Panel.</strong> Toned down the font color to make it easier to read.</li>
<li><strong>AI Chat Panel.</strong> Made completed tool calls fade a little to make it easier to separate.</li> <li><strong>AI Chat Panel.</strong> Made completed tool calls fade a little to make it easier to separate.</li>
<li><strong>Zaguán Coder Daemon.</strong> Added a <code>tool_search</code> tool based on the <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool" target="_blank" rel="noopener">Anthropic documentation</a> to help reduce initial token usage.</li>
<li><strong>Editor Breadcrumb.</strong> Minor design tweak to the breadcrumb at the top of the editor for improved visual hierarchy.</li> <li><strong>Editor Breadcrumb.</strong> Minor design tweak to the breadcrumb at the top of the editor for improved visual hierarchy.</li>
</ul> </ul>
</div> </div>
@@ -60,7 +60,7 @@ import BaseLayout from '../layouts/BaseLayout.astro';
<ul class="changes-list"> <ul class="changes-list">
<li><strong>Code and Planning Mode.</strong> You can now switch between Code and Planning mode. Added a special Planning skill in Zaguán Coder Daemon to go along with this new feature.</li> <li><strong>Code and Planning Mode.</strong> You can now switch between Code and Planning mode. Added a special Planning skill in Zaguán Coder Daemon to go along with this new feature.</li>
<li><strong>Implement Button.</strong> Implemented an "Implement" button when in Planning mode. Clicking this switches to Code mode and begins the work.</li> <li><strong>Implement Button.</strong> Implemented an "Implement" button when in Planning mode. Clicking this switches to Code mode and begins the work.</li>
<li><strong>Themes.</strong> Added theme support with two themes: the original dark theme and a new Blade Coder theme.</li> <li><strong>Themes.</strong> Added theme support with four built-in themes: the original dark theme Zaguán Dark plus Blade Coder, Blade Cream and Blade Robot.</li>
</ul> </ul>
</div> </div>
@@ -80,10 +80,10 @@ import BaseLayout from '../layouts/BaseLayout.astro';
<li><strong>Git Commit Generate.</strong> Fixed a bug in the Git Commit Generate path that would sometimes fail for certain models.</li> <li><strong>Git Commit Generate.</strong> Fixed a bug in the Git Commit Generate path that would sometimes fail for certain models.</li>
<li><strong>Blade Terminal Rendering.</strong> Rewired the logic to use the Blade Terminal again and hopefully fixed the rendering bugs.</li> <li><strong>Blade Terminal Rendering.</strong> Rewired the logic to use the Blade Terminal again and hopefully fixed the rendering bugs.</li>
<li><strong>AI Chat v2 Design.</strong> Made minor tweaks to the AI chat v2 design.</li> <li><strong>AI Chat v2 Design.</strong> Made minor tweaks to the AI chat v2 design.</li>
<li><strong>Zaguán Coder Daemon.</strong> Fixed the Gemini continuation thinking bug.</li>
<li><strong>Terminal Resize.</strong> Fixed the resize logic for the Terminal—previously wonky, now much smoother.</li> <li><strong>Terminal Resize.</strong> Fixed the resize logic for the Terminal—previously wonky, now much smoother.</li>
<li><strong>Keyboard Shortcut.</strong> Added a new keyboard shortcut - Ctrl-L - to put the chat input in focus.</li> <li><strong>Keyboard Shortcut.</strong> Added a new keyboard shortcut - Ctrl-L - to put the chat input in focus.</li>
<li><strong>Diff View Styling.</strong> Fixed Diff View styling across all 4 themes. The new themes were using the style from the original theme.</li> <li><strong>Diff View Styling.</strong> Fixed Diff View styling across all 4 themes. The new themes were using the style from the original theme.</li>
<li><strong>Zaguán Coder Daemon.</strong> Fixed the Gemini continuation thinking bug.</li>
<li><strong>Zaguán Coder Daemon.</strong> Fixed bugs in relation to <code>tool_search</code> that would sometimes result in the model failing to apply patches and then overwrite files.</li> <li><strong>Zaguán Coder Daemon.</strong> Fixed bugs in relation to <code>tool_search</code> that would sometimes result in the model failing to apply patches and then overwrite files.</li>
</ul> </ul>
</div> </div>