Share
One idea, adapted to each platform.
Shorter arguments and working notes, kept together here with the platform-specific versions that carry them into the wider conversation.
-
-
My Agent Now Pauses Its Housekeeping When I Ask a Question (Bluesky)
Karsten Samaschke
@samaschke.de
Until Wednesday, a question I typed while my agent summarized its history had to wait, and /stop would have thrown it away too. With core #152 the summary gives way, but what triggered it all is still unknown. https://samaschke.com/blog/post/vanillacore-harness-housekeeping-steps-aside
-
GPT-6.1 Terra for the human-facing side
-
Nvidia buys Hugging Face - HF should stay independent
-
VanillaCore memory guard vs cgroup v2 group OOM kills
-
One Quick Question, and the Task Was Gone (Harness evening 2026-10-27)
1 / 2
Karsten Samaschke
@samaschke.de
The failure I worry about has no error. Ask my agent a question mid-job and the old task vanished: nothing crashed, the work just stopped, until I asked again. Now it stays until it finishes or I stop it. https://samaschke.com/Blog/Post/vanillacore-harness-one-question-task-gone
Karsten Samaschke
@samaschke
•••
The clever fix for a chat agent is to let it guess that a new message cancels the old job. I chose the un-clever one: keep every task until it finishes or I stop it. A question is a question, not a reason to drop the work. https://samaschke.com/Blog/Post/vanillacore-harness-one-question-task-gone
-
The Image Shipped, and My Agent Never Noticed
1 / 3
Karsten Samaschke
@samaschke.de
It did not crash, which made it worse to spot. My agent said waiting, the image shipped, and the job sat till I asked. Nothing looked broken, so nothing told me. Now a wait has a deadline and a visible end. https://samaschke.com/Blog/Post/vanillacore-harness-waiting-needs-a-recheck
Karsten Samaschke
linkedin.com/in/samaschke
•••
An agent said "waiting", and I took that as reassurance. The word sounded safe. It meant the work was over. Yesterday I gave one of my agents a simple job: wait until a new image of my harness was published, then update the agents to it. The image did not exist yet, so the agent said waiting, which was the right answer. Then the image shipped, and nothing happened. The agent did not crash and did not stall. It finished its check and went quiet, exactly as it was built to, and nothing in my harness was set up to look at that wait again. I found out the job had stopped only because I asked why nothing had moved. That is the gap that bothers me. My agent could be wrong about being blocked, and it could be right about waiting and still have nowhere to go. Both end the same way: a task that quietly stops and a person who has to poke it. The change I wanted is not a smarter status message. It is a wait that lives outside the agent's own report. The harness keeps a time to look again, a bound, and a hard deadline, so the promise to come back later is subject to a check and an end, not left to the agent's word. The textbook answer is a webhook that rings the moment the image exists, and it is a good answer. I chose a timer, and I am comfortable being judged on it. A ring only covers the one thing you wired for it. A timer works for any condition an agent can name, a restart does not lose it, and a woken agent still has to go verify the thing really exists before it touches a rollout, because being woken proves nothing. The timer exposes a flaw the webhook hides: at no point do you get to trust the agent's word, only its latest check. There is a cost I am not hiding. The timer is cruder, it adds latency, and an agent can still misread its own state. I take that over the alternative, because what I get in return is knowing when a wait goes wrong. If your agents can wait, let something else hold the deadline and check it, because "waiting" will not tell you the truth on its own. This is the same argument as my earlier post about "done": an agent's report, whether finished or waiting, is evidence to check, not proof to trust. The changes below are public in the VanillaCore Agent Harness; released source is not proof any installation runs them, and I claim no compatibility with Hermes Agent, Claude Code, Codex or OpenClaw. Window 26 Oct 08:00 to 27 Oct 08:00 Berlin (CET). https://samaschke.com/Blog/Post/vanillacore-harness-waiting-needs-a-recheck
Karsten Samaschke
@samaschke
•••
waiting sounds like progress, which is why it fooled me. My agent said it, the image shipped, and the job sat until I asked. A promise to come back later is only as good as a deadline that something else owns and checks. https://samaschke.com/Blog/Post/vanillacore-harness-waiting-needs-a-recheck
-
VanillaCore Agent Harness keeps a ledger of its own work (2026-10-26)
1 / 3
Karsten Samaschke
@samaschke.de
An agent that guesses wrong overnight can bill you twice. A ledger records every turn. When an effect might already have happened, it blocks and asks you. https://samaschke.com/Blog/Post/vanillacore-harness-execution-ledger-dispatcher
Karsten Samaschke
linkedin.com/in/samaschke
•••
I woke up to an agent that had worked all night. Seven merges, six releases. The count is not the point. The point is what it can prove it did. Every turn now gets a durable ledger entry before it runs, and the result is settled before the usual snapshot is written. If the process dies between those two writes, recovery takes the saved result instead of asking the model again. That closes the gap between "the turn is finished" and "the Harness wrote that down". The part I like most is the crash case. Before an opaque turn, the dispatcher records an "unsafe" effect intent. If the worker is interrupted and nobody knows which external effects already happened, the task becomes blocked. There is no automatic reconciliation. An operator has to check what actually happened and submit new work deliberately. A dispatcher that retried an opaque turn on its own would generate duplicate invoices, duplicate pull requests and duplicate emails. This one stops and makes you look. That is the question I would put to every agent runtime that wants to work while I am asleep: after a crash, does a finished turn count as finished, does a stopped task stay stopped, and does an unknown effect get retried or handed back to a human? The Harness answers all three in writing, including the cases where the answer is "we do not know, so we block". https://samaschke.com/Blog/Post/vanillacore-harness-execution-ledger-dispatcher
Karsten Samaschke
@samaschke
•••
You let an agent run all night. How do you know it did not run the same thing twice? A ledger records every turn, so a crash between finished and recorded does not rerun. https://samaschke.com/Blog/Post/vanillacore-harness-execution-ledger-dispatcher
-
VanillaCore Harness evening 2026-10-26
1 / 2
Karsten Samaschke
@samaschke.de
An agent reporting "done" may have just stopped. The VanillaCore Harness now checks completion against the original task, and that check is advisory. https://samaschke.com/Blog/Post/vanillacore-harness-done-is-evidence-not-proof
Karsten Samaschke
@samaschke
•••
An agent's "done" is a claim, not proof. The VanillaCore Harness now checks completion against the original task, and even that check is advisory. https://samaschke.com/Blog/Post/vanillacore-harness-done-is-evidence-not-proof
-
VanillaCore Harness: one day, 15 merges (social)
1 / 2
Karsten Samaschke
@samaschke.de
15 merges in a day. VanillaCore's harness survived a restart. Recovery is at-least-once, documented, not flawless. That limits list is what I'd ask of Hermes, Claude Code, Codex and OpenClaw. https://samaschke.com/Blog/Post/vanillacore-harness-one-day-15-merges-survive-restart
Karsten Samaschke
@samaschke
•••
One Sunday, 15 merges. VanillaCore's agent Harness survived a restart. Recovery is at-least-once, says so in writing. An agent that resumes itself must name what it cannot undo. Worth asking the same of Hermes, Claude Code, Codex, OpenClaw. https://samaschke.com/Blog/Post/vanillacore-harness-one-day-15-merges-survive-restart
-
Compact or hand over: how my agent harness manages context (social)
1 / 2
Karsten Samaschke
@samaschke.de
The worst moment to choose what an agent keeps is mid-task, as the window fills. VanillaCore Harness decides earlier, at a safe boundary. Compact, or hand over with a searchable archive. It forgets on purpose, with a record. https://samaschke.com/Blog/Post/agent-harness-compaction-or-handover
Karsten Samaschke
@samaschke
•••
The worst moment to decide what an agent keeps is mid-task, when the window overflows. VanillaCore Harness decides earlier, at a safe boundary. Compact or hand over. It does not remember better. It forgets on purpose. https://samaschke.com/Blog/Post/agent-harness-compaction-or-handover
-
VanillaCore Agent Harness launch
1 / 3
Karsten Samaschke
@samaschke.de
Built a lighter agent harness on Pi-Agent. Deliberately small, Apache 2.0, public today. Build in public, updated as I use it. Possible Hermes/OpenClaw alternative, no feature-parity ambition. https://samaschke.com/Blog/Post/vanillacore-agent-harness-built-on-pi
Karsten Samaschke
linkedin.com/in/samaschke
•••
Most of my agents run on Hermes. Hermes is good. It is also big: lots of tools, lots of features, lots of configuration, and whatever sits in the context costs tokens on every turn, whether the task needs it or not. For a personal agent that lives in a chat room, runs a few cron jobs and answers API calls, I wanted less of that. So I built a harness of my own on top of Pi-Agent, and as of today it is public under Apache 2.0. The VanillaCore Agent Harness is deliberately small. I see it as a possible replacement for Hermes in the way I run persistent agents, and for OpenClaw where people use it for the same job. It is not a clone of either, it does not aim for feature parity, and it does not try to cover every function those projects have. Why Pi? Pi's idea is that you adapt the harness instead of adapting to it. A coding agent that extends itself is useful at a terminal. The same property inside a long-running agent that lives in Matrix and takes runs from a control plane is worth a lot more. This is a build-in-public project. I use this harness every day, so it gets updated continuously, not in release cycles. In the coming weeks I'll publish it upstream to GitHub, and I'm looking for contributors. If you run persistent agents and want a smaller harness, the repo is a good place to start. The source is about 4,500 lines of TypeScript with four runtime dependencies, plus roughly 3,000 lines of tests. On a fresh checkout, all 171 tests pass. Lighter should mean cheaper per turn. That is the design intent. I do not have benchmark numbers yet, and I will not invent any. Once we have run the same agents on Hermes and on this harness, the measurements get their own post. This is version 0.1.0. Matrix works without end-to-end encryption, and media, edits of the agent's own messages and reactions as acknowledgements are still missing. There is no web UI and no Slack adapter yet. Repo: https://git.vanillacore.net/harness/core Post: https://samaschke.com/Blog/Post/vanillacore-agent-harness-built-on-pi
Karsten Samaschke
@samaschke
•••
Most agent harnesses are big. I wanted less. So I built one on Pi-Agent: ~4,500 lines of TS, 4 runtime deps, Apache 2.0. Build in public, updated as I use it. Possible Hermes/OpenClaw alternative, no feature-parity ambition. https://samaschke.com/Blog/Post/vanillacore-agent-harness-built-on-pi
-
Speed compounds. So do mistakes.
1 / 3
Karsten Samaschke
@samaschke.de
We became 7x faster. The problem is no longer the agents. It's us. https://samaschke.com/Blog/Post/speed-compounds-so-do-mistakes
Karsten Samaschke
linkedin.com/in/samaschke
•••
An agentic team can outrun its own review process, and ours did. Our development team became 3.5x faster, and two months later that number had doubled again. The speed was never the hard part. What we missed was that the processes on the developer and team level hadn't kept up. 👉 Developers stopped questioning their agents and demanding proof. The automated review gate had no human in the loop. The feedback that should have caught both landed unread. Read the blog post to learn more about it. https://samaschke.com/Blog/Post/speed-compounds-so-do-mistakes
Karsten Samaschke
@samaschke
•••
We became 7x faster. The problem is no longer the agents. It's us. https://samaschke.com/Blog/Post/speed-compounds-so-do-mistakes
I think housekeeping that blocks the person it works for is a bug, and my agent did exactly that: while it summarized its own history, my question just waited. Since last night, VanillaCore Harness #152 lets that summary give way, while the archive writes still run to the end.