Goal chords
Each goal is a chord. Suspended: in progress. A shimmer: under test. Minor with a held note: needs you. Resolved: done.
yoneda keeps one picture of a fleet of agents, machines, projects and a life. Every observation, act, ask and answer is a record with provenance. Plugins bring records in and render them out. Agents read the picture, act, and say why.
pre-alpha core, 25 plugins, one portable file
The core stores one thing. A record has a kind, a time, an actor, the refs it is about, links to other records and refs, and the plugin it came from. Recording the same key again updates it; everything else is append-only. Goals, asks and answers are records too, so a goal's status is just its latest record.
{
"kind": "act",
"at": "2026-03-14T02:10:00Z",
"actor": "agent:birch/steward",
"subjects": ["node:birch"],
"title": "Collected 7-day garbage on birch (97% full)",
"links": [
{"rel": "because", "to": "r-41d0c2…"},
{"rel": "advances", "to": "goal:birch-disk"}
],
"source": "record"
}
Any executable in any language. It prints records as JSON Lines; the core stores them with the plugin's name as provenance. No source is built in.
Any executable that reads a frame (a window of records) on stdin and renders it: text, sound, an image, a web view, a push. Each render is itself recorded.
Agents query the same store, record what they did and why, and link acts to the goals they advance.
In-plugins that read the store and add what they notice: an agent repeating itself, an expectation met or missed by its deadline.
Out-plugins whose output is an effect, reported back as a record: an answer delivered to the agent that asked.
Small web apps served next to the API: a phone view of what needs you, a wall of areas you can zoom into.
Each goal is a chord. Suspended: in progress. A shimmer: under test. Minor with a held note: needs you. Resolved: done.
The last hour in forty seconds. Every agent a voice on a pentatonic scale, every reply a bell, merges as rising arpeggios, a minor pad when something needs help.
Tunes across the agents that spoke recently. Each gets its own voice for one sentence of its latest reply, between bursts of static.
“Birch: disk ninety-seven, falling, collector at work. Cobalt: main green, fair. Atlas: one question waiting for you. Good.”
The same frame read as a letter from the night shift, a short story, or a news bulletin. Formats are templates over one digest.
Every agent that worked overnight becomes a bird, singing as often as it worked. A sunrise pad resolves only if nothing waits on you.
A model writes a short host-and-correspondent script from the facts, needs first, no raw ids; two voices read it.
One bar per goal on electric piano: minor when it needs you, suspended in progress, resolved when done. Agents add little celesta motifs.
Markdown: latest reply per agent, acts, pull requests, sessions that may need help, world news. The raw material for every spoken format.
The whole core is one SQLite file plus plugin directories. Copy the file, or stream it, and the picture moves with it: to a server, a laptop, or a phone.
yo export | ssh atlas yo import
# or: scp ~/.local/state/yoneda/yoneda.sqlite atlas:
yo plugins # in and out plugins found
yo ingest [names…] # run in-plugins, store records
yo record act "…" --about node:birch --link advances=goal:birch-disk
yo query --kind final --since 1h
yo about goal:birch-disk # everything that points at it
yo since 1h # what changed: goals, asks, acts, merges, who spoke
yo record watch "…" --data '{"expect":{…},"by":"…"}' # an expectation yoneda checks
yo readout goal-chords # render through an out-plugin
yo serve # API + views (phone, wall)
yo export / yo import # move the core