yoneda

Know a thing by everything that points at it.

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

Seven records linked to node:birch birch disk 97% gc started switch 41m speech ×212 PR merged ask: rotate key? answer: yes

Records

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"
}

Plugins on every side

In-plugins write records into one store; out-plugins read frames and render in speech feedsession states PRs · CI · ctx · disksworld: new models, news one filerecords · links out digestgoal chords · sonify forecast · dawn · podcastboards · phone · wall

In

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.

Out

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

Agents query the same store, record what they did and why, and link acts to the goals they advance.

Enrichers

In-plugins that read the store and add what they notice: an agent repeating itself, an expectation met or missed by its deadline.

Actuators

Out-plugins whose output is an effect, reported back as a record: an answer delivered to the agent that asked.

Views

Small web apps served next to the API: a phone view of what needs you, a wall of areas you can zoom into.

Readouts

Goal chords

Each goal is a chord. Suspended: in progress. A shimmer: under test. Minor with a held note: needs you. Resolved: done.

Sonify

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.

Scanner

Tunes across the agents that spoke recently. Each gets its own voice for one sentence of its latest reply, between bursts of static.

Forecast

“Birch: disk ninety-seven, falling, collector at work. Cobalt: main green, fair. Atlas: one question waiting for you. Good.”

Letter, story, bulletin

The same frame read as a letter from the night shift, a short story, or a news bulletin. Formats are templates over one digest.

Dawn chorus

Every agent that worked overnight becomes a bird, singing as often as it worked. A sunrise pad resolves only if nothing waits on you.

Two voices

A model writes a short host-and-correspondent script from the facts, needs first, no raw ids; two voices read it.

Song

One bar per goal on electric piano: minor when it needs you, suspended in progress, resolved when done. Agents add little celesta motifs.

Digest

Markdown: latest reply per agent, acts, pull requests, sessions that may need help, world news. The raw material for every spoken format.

Portable

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

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