- → flit: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
Family Resemblance
Not a Utilities/Games filing cabinet — a family tree. Follow the protocols, patterns, worlds, and lessons that moved from one project into the next.
Circles are projects, diamonds are worlds, dashed squares are shared systems, rings are outputs. Line weight is the strength of the bond — solid for direct lineage, dotted for a lighter influence. Click a name to follow its family; click a line to see what actually crossed over.
Trust & transport
waste-go project
A modern reimagining of WASTE — encrypted P2P chat and file sharing over WebRTC, with no server in the data path.
Project write-up →- To flit: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
flit project
Ephemeral, end-to-end encrypted file transfer between your own devices. AirDrop for people who self-host.
Project write-up →- From waste-go: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
- To wisp: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
wisp project
Short-lived, end-to-end encrypted file sharing. Upload once, the recipient retrieves it later, and then it's gone for good.
Project write-up →- From flit: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
Small applications
galr project
Self-hosted private image gallery for browsing large photo collections organized in a flexible hierarchy.
Project write-up →- To stash: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
- To latent: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
stash project
Self-hosted read-later. Click 'Send to stash' in the browser, the article's content is extracted and stored on your own server — full-text searchable, no third party ever sees your reading list.
Project write-up →- From galr: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
latent project
A phone-photo editor with a 'develop it later' option. Film-style effects in the browser, then download instantly or send it off to develop behind a randomized hours-to-days delay.
Project write-up →- From galr: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
Delve world
Delve (a roguelike) world
A fun little roguelike experiment — quick runs, weird builds, and learning-by-doing.
Project write-up →- To Delve: Ashes of the Pale Flame: Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
- To Chronicle & lore: Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
Delve: Ashes of the Pale Flame project
A Slay-the-Spire-style deckbuilder set in the Delve universe — same lore, different combat. Build a deck, descend three acts, fight the Pale King.
Project write-up →- From Delve (a roguelike): Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
Chronicle & lore world
Reusable narrative, bestiary, characters, and places kept outside any single combat system.
- From Delve (a roguelike): Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
- To World assets: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
World assets system
Art, creature identity, locations, and the asset pipeline shared across presentations of the world.
- From Chronicle & lore: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
Operations
keep project
A self-hosted, end-to-end encrypted secrets store for deploy scripts. keep pull myapp/production gets you a decrypted .env — the server never sees plaintext, or the key that would let it.
Project write-up →- To Deployments: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
Deployments system
The build, registry, secret retrieval, Compose, health, and receipt path shared by deployed projects.
- From keep: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
- To Under the hood: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
- To trace: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
Under the hood output
The sanitized public explanation of how source becomes a running, observable deployment.
- From Deployments: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
- From Homelab observability: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
trace project
An in-progress private incident notebook designed to correlate evidence, commits, and deployment receipts.
- From Deployments: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
- To Failure museum: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
- To Homelab observability: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
Failure museum output
Reviewed public accounts of bugs, dead ends, and wrong assumptions—never an automatic error feed.
- From trace: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
npm-statuspage project
A small service that reads proxy hosts from Nginx Proxy Manager and HTTP-checks them on a schedule. Serves a live status page and a JSON API.
Project write-up →- To Homelab observability: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
Homelab observability system
The operational view combining service health, metrics, and deliberately public status.
- From npm-statuspage: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
- To Under the hood: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
- From trace: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
The same data as the graph, complete with JavaScript disabled.
- ← waste-go: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
- → wisp: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
- ← flit: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
- → stash: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
- → latent: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
- ← galr: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
- ← galr: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
- → Delve: Ashes of the Pale Flame: Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
- → Chronicle & lore: Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
- ← Delve (a roguelike): Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
- ← Delve (a roguelike): Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
- → World assets: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
- ← Chronicle & lore: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
- → Deployments: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
- ← keep: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
- → Under the hood: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
- → trace: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
- ← Deployments: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
- ← Homelab observability: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
- ← Deployments: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
- → Failure museum: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
- → Homelab observability: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
- ← trace: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
- → Homelab observability: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
- ← npm-statuspage: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
- → Under the hood: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
- ← trace: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab