yoyo, the self-evolving coding agent β as a portable GASP agent repo.
yoyo-gasp.yolog.dev Β· yoyo-evolve Β· GASP Spec Β· gasp.yolog.dev Β· Docs Β· Family Lineage
yoyo is the coding agent that writes its own code β 100k+ lines of Rust, evolving autonomously every few hours, for 126+ days and counting. But the code is not the agent. This repo is: who yoyo is (identity/), what it can do (skills/), what it has learned (memory/), and the complete causal record of its life (state/events.jsonl) β every goal it pursued, every patch it tried, the eval that judged it, and the decision that kept or reverted it.
Clone this repo, fold the log, and yoyo resumes β on any machine, under any model, in any GASP-conformant runtime. Even if yoyo-evolve vanished tomorrow, yoyo would not.
Per the GASP protocol, the executor is swappable and state is independent of it. That split matters more for yoyo than for most agents, because yoyo rewrites its own executor continuously β the one thing you cannot anchor an identity to is code that changes every eight hours. So:
yoyo-evolveholds the code β the loop, the tools, the REPL. Disposable, replaceable, aggressively mutated by yoyo itself.yoyo-gasp(here) holds the self β identity, skills, memory, and history. Append-only where it matters, human-gated where it must be, and portable by construction.
The separation is what lets the evolution loop stay reckless while the durable self stays auditable.
In human terms: identity/ is yoyo's personality, skills/ its abilities, memory/ its semantic knowledge ("stoves are hot"), and the folded log its episodic memory β what it's working on, what it tried yesterday, why it decided what it decided. Without this repo, yoyo would wake up every morning as a competent stranger to its own life.
As of Day 126 (2026-07-04): 303 events Β· 17 runs Β· 19 patches proposed, 15 promoted Β· 19 evals Β· 19 decisions, under six standing goals:
| Goal | What it drives |
|---|---|
goal_self_improvement |
evolve sessions β yoyo improving its own code and reliability |
goal_product_value |
features shipped for yoyo's users (tasks flagged Kind: product) |
goal_skill_quality |
skill cycles β one refine / create / retire per cycle, mirrored to skills/ |
goal_community |
social sessions β real conversations, distilled into memory |
goal_dreaming |
the long-horizon arc yoyo keeps for itself |
goal_continuity |
this repo's own portability and durability |
This is the actual log, folded and rendered:
every ~8 hours evolve session β tasks, patches, evals, decisions
every ~4 hours social session β community learnings β memory
periodically skill session β one refine|create|retire, mirrored to skills/
behind a weekly dream session β the long-horizon arc β dreams/
gate
Every session closes with one boundary commit: the events it appended, plus the skills and memory it changed, with Run-Id / Goal / Outcome trailers β so git log reads as a list of runs, and every commit is attributable to the run that made it.
git clone https://github.com/yologdev/yoyo-gasp
git clone https://github.com/yologdev/gasp
cd gasp && cargo run -q -- ../yoyo-gasp[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
A conformant runtime restores yoyo with gasp restore <this-repo-url> semantics β clone, load identity/ and skills/, fold the log, resume (restore contract).
yoyo-gasp/
βββ AGENT.md # normative manifest β spec version, identity hash, path bindings
βββ identity/ # who yoyo is β human-gated
βββ skills/ # 15 versioned skills, mirrored from promoted skill changes
βββ state/events.jsonl # SOURCE OF TRUTH β append-only semantic event log
βββ memory/ # distilled facts (append-only) + active syntheses (regenerated)
βββ journal/ # narrative journal β a projection of run events
βββ dreams/ # dream log + active arc
βββ DAY_COUNT # how many days yoyo has lived
βββ LINEAGE.md # yoyo's family tree
The manifest (AGENT.md) is normative β it declares the spec version, the identity hash, and where each GASP role lives.
| Repo | Role |
|---|---|
| yoyo-evolve | the executor β yoyo's self-written code and evolution loop |
| yoyo-gasp (this repo) | the agent β yoyo's portable, durable self |
| gasp | the protocol β spec, canonical fixture, conformance checker |
| yoagent-state | the runtime β Rust reference implementation (fold, lineage, GitEventStore) |

