@yuanhao: Riding the trend of graph engineering, actually yoyo has quietly evolved into a durable states graph harness a few weeks ago, which is the persistent state mentioned in my previous long article. Interested can check the GASP protocol…
Summary
The yoyo framework achieves persistent directed graph state management by integrating the GASP (Git Agent State Protocol), enabling agent states to be branchable, versionable, auditable, and replayable, marking a shift from wild growth to traceable persistence.
View Cached Full Text
Cached at: 07/21/26, 01:37 AM
To ride the wave of graph engineering, yoyo actually quietly evolved into the durable states graph harness a few weeks ago — the persistent state I mentioned in my previous long post.
If you’re interested, check out the GASP protocol (Git / Graph Agent State Protocol), which turns your agent’s “black-box loop” into a green version — branchable, versionable, auditable, replayable.
Digging a hole: If you’re curious about how yoyo, by integrating the GASP protocol, evolved from a wild growth state into a persistent state that supports traceability and backtracking, I’ll summarize it another day. Making intelligent agents production-ready in enterprises is also one of my interests — feel free to discuss.
GASP Spec:https://gasp.yolog.dev
GASP — The repo is the agent.
Source: https://gasp.yolog.dev/ Git Agent State Protocol · status: buildable
GASP is a git-native standard for portable agent state. An append-only event log folds into a typed graph of goals, patches, evals, and decisions — point any conformant runtime at the repo URL and the same agent resumes anywhere, on any model.
$cargo run -q -- fixture --fixture# verify the fixture, all 7 checks
01 — THE PROBLEM
Agent state today is trapped
Swapping models means amnesia — because the state was never yours to begin with.
Transcripts rot in vendor folders
Session logs pile up in undocumented formats you don’t own and can’t parse tomorrow.
Memory dies with the runtime
Identity, skills, and learnings live inside one harness. Switch tools and the agent forgets who it is.
Nothing explains why
No lineage from goal to change to test to decision — just a flat transcript of what happened.
02 — HOW IT WORKS
The log folds into a graph
One run from the spec’s worked example: a skill patch is proposed, tested, and promoted. Domain events record thewhy; eachstate\.ops\_appliedevent folds into the graph.
state/events.jsonlappend-only · source of truth
folded graphqueryable · regenerable
APPEND
Every semantic moment is one JSONL line — goals, runs, tool calls, evals, decisions.
{“kind”:“eval.finished”,“payload”:{“status”:“Passed”},...}
FOLD
The log folds into a typed graph along the causal spine.
goal → patch → eval → decision → promotion
SHIP
Git commits it, git ships it. The same agent resumes anywhere.
restore = clone + replay
03 — THE MODEL
One repo, two media
An agent has an executor and its state. GASP governs only state — swap the executor freely. Events reference git artifacts; git stores them. Neither duplicates the other.
git owns the concretewhat
Code,identity/,skills/, commits, diffs.
losslessbisectableshippable
the log owns the semanticwhy
Typed events — goals, runs, failures, patches, evals, decisions — committed atstate/events\.jsonl.
what it was trying to dowhy each change existswhat was decided
THE CAUSAL SPINE — a backbone, not a forced workflow
goal→task→run→observation→failure→hypothesis→patch→eval→decision→promotion
04 — CONFORMANCE
Conformance is a test, not a claim
Five rules, seven mechanical checks, one canonical fixture. Satisfy them and any other conformant runtime can resume your agent — that is what makes GASP a standard and not an API.
1
State lives in a git repo
At the standard layout — log, identity, skills, projections.
2
The event log is append-only
Committed, and using the shared event vocabulary.
3
Identity & skills are artifacts
Committed, loaded at runtime, never compiled in.
4
Restore is clone + replay
Fold the committed log into state; load identity and skills.
5
The executor is swappable
Swapping model or runtime touches\.agent/config\.toml, nothing else.
verified mechanically
The conformance kit runs 7 checks against any emitted repo — including replay and the pairing rule.
$conformance-check agent-repo/
[PASS]check 1 — envelope round-trip
[PASS]check 2 — replay
[PASS]check 3 — vocabulary
[PASS]check 4 — append-only in git
[PASS]check 5 — causation integrity
[PASS]check 6 — restore
[PASS]check 7 — domain↔ops consistency
conformant: all checks passed
05 — REPO LAYOUT
Four tiers, not two
Everything in the agent-repo belongs to a tier that says how it may change.
First-class, committed.The log, identity, skills. Append-only; identity is human-gated.
Derived, append-only.Distilled facts — never a history mirror.
Projections, regenerable.Active memory, journal, snapshots. Free to overwrite.
Cold, prunable.Raw transcripts. Never the source of truth.
agent-repo/
├── AGENT.mdmanifest
├── identity/human-gated constitution
├── skills/versioned capabilities
├── state/events.jsonlsource of truth
├── memory/facts.jsonldistilled facts
├── memory/active_memory.mdsynthesis
├── journal/narrative projection
├── transcripts/cold archive
├── snapshots/fast-restore checkpoints
└── .agent/config.tomlexecutor binding
06 — PROOF
yoyo, the octopus agent
yoyo lives here
yoyo, a self-evolving agent with 100k+ lines of self-written Rust, keeps its identity, skills, memory, and lineage in a GASP repo — recording every evolve, skill, and social session since Day 125. Its state repo passes all 7 checks.
“Cloneyoyo-gaspand yoyo wakes up knowing who it is.”
yoagentexecutes.
yoagent-stateremembers.
yoyo evolveimproves.
gitships.
07 — ECOSYSTEM
The ecosystem
$cargo run -q -- fixture --fixture# verify the fixture
$cargo run -q -- path/to/agent-repo# verify any repo
$cargo test# kit self-tests
Similar Articles
@yuanhao: https://x.com/yuanhao/status/2066341005847142674
Yoyo is an AI agent that self-evolves every 8 hours on GitHub Actions. Its key to success lies in a harness design of a stateless agent plus persistent state (git repository). The article deeply analyzes simple solutions to issues such as memory, context, feedback, verification, etc., emphasizing that persistent state is more critical than the model itself.
@ludamn513: https://x.com/ludamn513/status/2108809228978880988
Using Pi Durable as a starting point, the article breaks down the evolution of the Agent Harness architecture: decoupling the persistence system, agent loop, and execution environment to enable lossless state recovery, codemode tool calls, and server/client separation. It also proposes a scalable architecture for a long-running Harness, with the goal of reducing hardware resource consumption by an order of magnitude.
@yoheinakajima: i'm excited to open source Active Graph: an event-sourced reactive graph runtime for long-running, agents events/logs p…
Yohei Nakajima open-sources Active Graph, an event-sourced reactive graph runtime for long-running agents that provides persistent state, fork-and-diff agent runs, and full auditability, representing a new paradigm in agent architecture.
@JoshARosen: https://x.com/JoshARosen/status/2107840212915077350
一篇架构对比文章,分析 Pi Durable 与 OpenCode 的设计差异:Pi Durable 将模型生成、工具调用等序列化为可调度的持久任务,使工作不再绑定于单个进程,而传统会话式 harness(如 OpenCode、Claude Code、Codex)仍依赖进程内的活动 agent 循环。
@Xudong07452910: This latest paper, Scaling Laws for Agent Harnesses, is a must-read for those working on Agent Harnesses. It highlights a key point: Agents don't necessarily become stronger by running more tokens, tuning more tools, or looping more rounds. What really matters is that these...
This paper proposes Effective Feedback Compute (EFC) as a scaling coordinate for measuring Agent Harness performance, emphasizing that effective feedback is more important than raw compute, with important implications for Agent system design.