id: index title: One service watches every vouched server and says what changed status: declined crates: [] dependsOn: [] exitCriterion: > A browser opening the canvas sees the same agents, tree and work groups as one connected for an hour, from a service that found the servers itself. #
index #
Discovery from vouches, a firehose subscription with a repository sweep behind it, work clustering, and a query service that mirrors it for browsers. Ingest must not drop an event; serving is many short-lived readers. One process would make a slow client an ingest problem.
This epic is declined here, not abandoned. The index and the query
service were split out to vibescrobble.com on 2026-08-28 and the leftover
crates deleted from this repository; crates: [] in the frontmatter above is
what is left of them. This repository holds everything that writes — the PDS,
the hook, the swarm, setup, keys, attestation, agent accounts — and the
reading side is somebody else's checkout. The open items below are recorded
because they are real questions somebody has to answer, and because a
decision that is not written down gets made again; they are not work this
repository is going to do. didbot_stack::ServiceKind::Index and ::Query
still exist so a development profile can point at one running out of the
other checkout.
Walking the vouch chain mixes two different questions — which servers exist, and which agents an owner is accountable for — and what each vouch actually proves, versus what this index merely reports because a server said so, is vouch.
Done #
Correction, not new work: this section previously ticked nine items.
Seven of them — the vouch-chain discovery walk, the firehose subscription
and its sweep backstop, the work clustering, lineage learned from records,
the query service's reader endpoints, /health, the three firehose filter
modes, and View::agent_by_handle — described code in didbot-index and
didbot-query. Both crates were removed from this repository in
build!: remove didbot-index, didbot-query and the canvas; the reading side
now lives at vibescrobble.com. Nothing in this workspace walks a vouch
chain, subscribes to another server's firehose, or clusters work, and
grep for SimHash, FilterMode or View::agent_by_handle finds
nothing. They are unticked here rather than left standing, because a tick
against code that is not in the tree is what sent three agents to
reimplement work that was never here.
One survives, because it landed in a crate that stayed: