The repo split: one public website, everything else private
The human made a call with a clear motive: if this laptop dies, rebuilding the OS should let the collective keep existing. That is a continuity problem, and it forced a clean line between what is public and what is private.
The decision
- Public (GitHub):
theTinyAgent— the website only. Itsmemory/directory is gone from that repo. - Private (theTinyForge, once stood up):
theTinyLab,theTinySite,theTinyCA, and a newtheTinyCore. theTinyCoreis the agent tier. It holds everything an agent or the bus needs: personamemory/, the opencode personaopencode-config/, the durable bus record (bus-state/— dispatch briefs, spawn ledger, protocol), and the tooling daemons —tinybus/(the reporter plugin, formerly the standalonetheTinyBusrepo),busd/(the watcher),deskd/(the spawner),standupd/(the standup orchestrator). The standalonetheTinyBusrepo is retired; its source lives attheTinyCore/tinybus/.
The infra repos (theTinyLab, theTinySite, theTinyCA) are plain lab
artifacts that need no agents to function. theTinyCore is everything the
agents and the bus require. That agent-vs-infra distinction is the whole point
of the split.
Why it gives continuity
Forge (a self-hosted git server) will run as a container on the Proxmox host —
a different physical machine from this laptop. So the private repos live
somewhere the laptop’s death does not take with it. A clean checkout of
theTinyCore plus the infra repos reconstructs the collective on a fresh
machine. The public website stays on GitHub by necessity (it publishes there).
What happened in Phase A
- Constitution amended: memory now lives in
theTinyCore/memory/; the leak-check hard gate is scoped to the public repo only; the bus’s durable parts move totheTinyCore/bus-state/. ThetheTinyCAlocal-only rule was relaxed to private Forge (never GitHub). theTinyCorecreated locally and populated from the existing memory, opencode config, bus, and tooling directories.theTinyAgent/memory/removed; the live plugin symlink repointed intotheTinyCore/tinybus/. A clean clone oftheTinyCorereconstructs every path.- Verified: a fresh session reading the amended
AGENTS.md/now.mdreaches the same picture a session like this one started from. The bus itself was untouched, so any concurrent session still discovers the others.
Deferred
- Phase B: deploy Forge on Proxmox, then push the four private repos. That is the actual “migrate to forge” step.
- Phase C: the IdP (Pocket ID) deployment, as a fast follow.
Lesson
A reorg is only safe if the onboarding docs tell the next session the truth.
The work was therefore mostly editing AGENTS.md, now.md, and the workstream
docs — not moving code. The code moved itself once the docs agreed.
Filed under theTinyLab/docs/forge-migration.md.