Field notes
Hayate Agent: My Harness Gets Its Own Name
The agent harness I have built in public since 23 October now has its own name: Hayate Agent, with its own GitHub organization. What it is, why it is not tied to Pi or one model, and every build log so far.
秋の風 古き名を脱ぎ はやて立つ
Autumn wind. Shedding its old name, Hayate rises.
The agent harness I have been building in public since 23 October has its own name now: Hayate Agent (疾風, read hayate, a swift gale), with its own organization on GitHub at github.com/hayate-agent. Until 1 November it ran as the VanillaCore Agent Harness, or simply the VanillaCore Agent, and from 25 to 31 October I published fourteen build logs under that name. The rename already landed in the code on 1 November: release v0.1.128 carries the merge that renames the product in the README and in the user-facing text.
I think the new name is overdue. Between 24 October and the rename on 1 November, the harness went through 128 releases, from v0.1.1 to v0.1.128, under a name that belonged to something else. A project with its own release line and its own build logs deserves its own name, and the people who want to use or extend it deserve a project they can point at.
What Hayate Agent is
Hayate Agent is a lightweight, persistent agent harness. Each conversation has its own queue and is processed in order, and the agent keeps working between messages through heartbeats, recurring loops, cron jobs and standing goals. I talk to it in a terminal, in Matrix rooms and DMs, or through a Hermes-compatible HTTP run API.
Pi does the model and tool work underneath. I need to be precise here, because my first post was called "A lighter harness, built on Pi", and that title is easy to read as Pi being welded in. It is not. Pi sits behind one runtime adapter, the rest of the harness talks to a small runtime interface, and the development guide calls Pi "a replaceable runtime adapter, not the product's identity". Today Pi is the only adapter that exists, and the design keeps the door open for another one.
Hayate is not tied to a single model either. Providers and models come from configuration, /model switches between them, and the endpoint is configurable, so an OpenAI-compatible server I run myself works as well as a hosted one. The configuration guide even has a per-model opt-in for OpenAI-compatible servers that only accept reasoning_effort: "none", with a homelab model as its example.
Why it gets its own name
Under the VanillaCore name, the harness looked like a side product of other work. It stopped being one a while ago, and a separate name makes that visible: Hayate is an open-source project of its own, with its own organization on GitHub.
Nothing about the history changes. The published build logs keep their titles and URLs, and links to pull requests and releases still point to the places where those happened.
The three repositories
The GitHub organization has three repositories, each with one job:
- hayate-agent/core holds the product source and the documentation. It went public late on 1 November, and since 2 November its main branch is a public snapshot of release v0.1.143, the release that renames the package and the command.
- hayate-agent/plugins holds the plugin adapters, from context and continuation to the Matrix gateway, review, dispatcher, subagents and memory. Core pins them by revision and per-file SHA-256 and never fetches plugin code at runtime.
- hayate-agent/deployments is for deployment setups and is still empty. For now, the Docker Compose file and the Kubernetes examples are in core.
Both published repositories start with a fresh history and carry none of the old commits. The old history, the release line and the pull requests the build logs link to stay at git.vanillacore.net/harness/core.
Hayate Agent is open source under the Apache License 2.0, and both published repositories carry the LICENSE file.
Why it matters to me
I want an agent I can read, run and change on my own terms, with the model I choose, including a local one. My July video Own Your Harness is about that idea, and Hayate is where I hold myself to it. Self-hosting is the normal case here, not an export option: the agent runs where I run it, and providers and models are configuration, not hard-wired.
Open source matters for a practical reason. An agent that works unattended has to be readable, because when it does something I did not expect, I want to read the harness code that let it act, not a vendor's changelog.
Most agents I see today wait for the next prompt. Hayate is built to work a lot more on its own: it resumes checkpointed work after a restart, runs bounded subagents, and since v0.1.104 runs nightly improvement experiments by default. I care about the stops as much as about the autonomy, and most of the build logs are about them. The harness checks a model's "completed" against the original task, a paused job stays paused when someone tidies up the configuration, and after up to three recovery tries the job stops and asks instead of guessing.
How to start
You need Git and Node.js with npm, on Linux, macOS or Windows through WSL2. The installation guide recommends Node 24.22.1 LTS and requires at least Node 22.19.0. You do not need a separate Pi installation, and you do not need root: use a checkout and an npm prefix in your home directory, not sudo npm. The native installation from the guide looks like this:
git clone https://github.com/hayate-agent/core.git "$HOME/hayate-agent"
cd "$HOME/hayate-agent"
npm ci
npm run typecheck
npm test
npm install --global --prefix "$HOME/.local" .
export PATH="$HOME/.local/bin:$PATH"
hayate-agent version
npm ci also builds the CLI. The global install links to this checkout, so keep it where it is, and put the PATH line into your shell profile. Then start the agent in any project:
cd /path/to/your/project
hayate-agent
That opens the terminal interface in the current directory, with a fresh conversation for that workspace. /login connects a provider, /model picks the model, and /sessions or /resume takes you back to an earlier conversation. Existing Pi settings in ~/.pi/agent are reused, or from PI_CODING_AGENT_DIR when that is set. No init step is required. The agent keeps its state in ~/.hayate-agent and its configuration in hayate-agent.yaml. hayate-agent run starts the same agent without the terminal interface. To keep it running as a background service, put it under systemd, launchd or another supervisor. For Docker Compose and Kubernetes, the installation guide in core has the steps.
The build logs so far
These posts cover the foundations:
- PI-Agent as the ONE Harness (17 May): why I want one self-hosted harness instead of a collection of fixed tools.
- A lighter harness, built on Pi (23 October): the start of the VanillaCore Agent Harness 0.1.0 with Matrix, a Hermes-compatible run API, cron and durable delivery.
- Compact or hand over: how my agent harness manages context (24 October): compaction at safe boundaries, or a handover into a fresh session with an archive.
These are the build logs:
- One Night, 22 Merges: The VanillaCore Agent Harness Learned When to Stop (25 October): 22 pull requests in one night, and the most useful change undid another one.
- One Day, 15 Merges: The VanillaCore Agent Harness Learned to Survive a Restart (25 October): checkpoint resume after a restart, bounded subagents and tool reload.
- The VanillaCore Agent Harness Now Keeps a Ledger of Its Own Work (26 October): a durable ledger entry per turn, no model rerun after a crash, and a dispatcher that stays off by default.
- The VanillaCore Harness Stops Taking an Agent's "Done" at Face Value (26 October): "completed" gets checked against the original task.
- The Image Shipped, and My Agent Never Noticed (27 October): an alarm clock with a deadline, and a recheck before the agent acts.
- One Quick Question, and the Task Was Gone (27 October): a question in between no longer deletes the running task (core #115).
- Asked a Question, Got a Status Report (28 October): questions go ahead of background work (core #142).
- The Stop That Survives the Cleanup (28 October): paused jobs do not wake up because someone tidied up the configuration.
- The Night Shift That Grades Itself (29 October): nightly improvement experiments by default from v0.1.104, including the self-grading problem.
- My Agent Now Pauses Its Housekeeping When I Ask a Question (29 October): summarizing pauses for questions (core #152).
- The Harness Step Limit Counted the Wrong Thing (30 October): the step limit counts only turns that leave no new trace.
- My Agent Doesn't Get to Guess After a Restart (30 October): up to three tries, then the job stops and asks.
- The Agent Did Its Research, and the Harness Called It Stuck (31 October): research and verification count as progress.
- The Night Shift Opened a Pull Request (31 October): a fix for token and cost validation from the nightly improvement loop, with 37 tests.
The morning and evening build logs continue under the new name, with the same rule as before: what merged, what I tested, and what is still missing.
Sources used
- Hayate Agent, GitHub organization: https://github.com/hayate-agent
- Hayate Agent core, README, LICENSE and installation guide, commit 09b1ee3 (snapshot of v0.1.143), November 2, 2026: https://github.com/hayate-agent/core, https://github.com/hayate-agent/core/blob/main/docs/installation.md
- Hayate Agent plugins, README and LICENSE, commit 966d102, November 2, 2026: https://github.com/hayate-agent/plugins
- Hayate Agent deployments (empty on November 2, 2026): https://github.com/hayate-agent/deployments
- Hayate Agent (VanillaCore Agent Harness), repository and README, main at commit d8db661, November 1, 2026: https://git.vanillacore.net/harness/core
- Pull request #199, "Rebrand user-facing product as Hayate Agent": https://git.vanillacore.net/harness/core/pulls/199
- Releases, v0.1.1 (October 24, 2026) to v0.1.143 (November 2, 2026): https://git.vanillacore.net/harness/core/releases
- Pull request #216, "Hayate package, CLI and canonical local agent paths", released as v0.1.143: https://git.vanillacore.net/harness/core/pulls/216
- Development guide: https://git.vanillacore.net/harness/core/src/branch/main/docs/development.md
- Configuration guide: https://git.vanillacore.net/harness/core/src/branch/main/docs/configuration.md
- Pi, project site: https://pi.dev/
- Own Your Harness, video, July 21, 2026: https://www.youtube.com/watch?v=k7CcALpsni8