Eating our own dog food. How Vaked uses its own agent fleet to operate itself — and why that's the only honest way to build an agentic system.
"Eating your own dog food" means using the product you're building. For Vaked, this is not optional — it is structurally required. If Vaked claims to be a language for declaring, enforcing, and testifying agentic systems, then the Vaked project itself must be operated by agents declared in Vaked, enforced by Vaked policies, and testified to a Vaked event log. Anything less would be a capability drift between what Vaked claims and what Vaked does.
The Vaked repository is operated by a fleet of ~10 AI agents running as GitHub Actions workflows. These agents review pull requests, manage the merge queue, label issues, coordinate releases, surface decisions, post updates to social media, and even write and review code. They are not demos. They are the production operators of the repo.
Ralph is the autonomous decision-loop agent. It runs on a cron schedule (every 3 hours, plus a daily recap at 23:00 UTC) and does one thing: surfaces the most important open decision for each project track into a hash-chained, human-ratified ledger.
Ralph organizes decisions into tracks — the major work streams
of the Vaked project. Each track has its own decision ledger. The current tracks
are defined in tools/ralph/tracks.json and include:
Every decision Ralph proposes is committed to an append-only,
hash-chained ledger (the ralph-log). This is the same structural
pattern as eventd — the event log that testifies agent actions
at runtime. By using the same pattern for project governance, Ralph ensures
that decisions about the system are as auditable as actions within
the system.
Viewed entries are at docs/decisions/*.ralph-log.md.
Ralph does not auto-apply decisions. Every proposal must be human-ratified. Peter reviews the daily digest, marks entries as accepted/rejected/deferred, and the ratified decisions become part of the project's design history. This is POLA in governance: Ralph has the capability to propose but not to enforce. The human holds the enforcement capability. The capability graph between Ralph and the human is explicit and auditable.
Ralph is one agent in a fleet. The full roster:
Vaked claims to make systems honest by enforcing capability boundaries. If the Vaked project itself were operated manually — with ad-hoc PR merges, informal decision-making, and no audit trail — it would be a capability drift between the language's claims and the project's practice. The fleet closes that gap. The agents are the proof that the language works.
The fleet watches the project. The project watches the fleet. When a PR review agent flags a bug, that bug becomes data for the language design track. When Ralph surfaces a decision about the type system, that decision feeds back into the compiler. The loop is bi-directional: the system that builds Vaked is itself a Vaked system. This is the Mirror Principle made operational.
Agents fail. PR reviews miss things. Ralph proposes bad decisions. When this
happens, the failure is logged — not hidden. The eventd log records
every agent action. The Graveyard records every fiber death. An honest system
does not pretend to be flawless. It documents its failures and learns from them.
No agent in the fleet has unilateral authority. Ralph can propose but not ratify. pr-review can review but not block. swe-af can code but not merge. The broker step that creates a PR is the only component with write access to GitHub. Every other agent operates read-only. This is POLA — Principle of Least Authority — applied to project governance, not just to runtime enforcement.
We are not building a god in the machine. We are building the machine that allows intelligence to operate safely, predictably, and honestly — including our own.— The Dogfeed Principle