PROJECT CONSTELLATION

Family Resemblance

The work is less a Utilities/Games filing cabinet than a family tree. Follow the protocols, patterns, worlds, infrastructure, and mistakes that moved from one project into the next.

Curated lineage, not imports

Select a project or connection

Derived fromReuses patternShares infrastructureShares protocolSupplies contentCarries lessonObserves
What an arrow means

Not necessarily shared code

A connection may be a protocol, an operational dependency, a reused application shape, shared fictional material, or simply a lesson carried forward. Every line says which one and links to the evidence behind the claim.

Accessible map

Every relationship, without the graph

The same data in reading order. This view remains complete with JavaScript disabled.

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