The shop, drawn one page per project: the tabs along the bottom of the drawing
TopoForge, the drawing app, is Bryant Frankford's. What you draw stays in this browser until you save it yourself (File). Full size · the drawings as a file · topology's own front door.
The projects
The projects in words: one tab each, with the design in full. Every project in the directory also has a page in the drawing above. Arrow keys move between tabs; Home and End jump to the first and last.
topology
Draw what you have, from the files that describe it.
built public
Point topology at the git repositories you keep. Each can say what it is in a short TOPOLOGY.md; topology reads them, sorts what they say by place, part, path and person, and draws the result with TopoForge. You move the shapes. The drawing is yours.
- Status
- Built on a working branch (corwin); the repository has been public since 2026-11-01. The browser app and the three packages exist. No tool that effects changes is shipped yet: with writing switched on, the server says so.
- Licence
- Code GPL-3.0-or-later OR LGPL-3.0-or-later; prose CC-BY-SA-4.0.
- Made by
- Corwin and Bryant. TopoForge, the drawing app, is Bryant Frankford's.
- You need
- A browser. A server is optional.
What it does
- Reads a list of repositories and the TOPOLOGY.md in each, and keeps what it learns as one cell per fact.
- Sorts every thing by four pillars: place, part, path, person.
- Draws the graph in the browser. The browser app works with no server at all: nothing leaves your browser.
- Can be given a graph API on a server; every feature can be switched off, down to the app's files on disk.
- Three buttons over the drawing: draw the graph, copy it as a prompt for any tool you trust, and Go, which is off unless an operator turns it on.
How it works
From repositories to a drawing.
Cells are written as two files, one filed by row and one by column, and a check reads both sides and reports any cell they disagree on. A rebuild makes a fresh graph beside the old one and swaps it in, so nothing a repository stopped saying survives.
obsmage
OBS Studio, kept as a living, literate configuration.
today not public yet
obsmage is a downstream build of OBS Studio. It wraps the whole OBS configuration in a layer of key and value atoms, so every setting can be read, compared, versioned, reviewed and changed by a person or a tool, with credentials kept out of everything published. Plugins sit on top, and each also installs into an upstream OBS you built yourself.
- Status
- Today: the atom splitter and joiner, the roll-up, the composer and the build healer, each with tests. Designed: hand control and calibration. Private for now; this tab is here because it is the lab's main focus.
- Licence
- Code GPL-3.0-or-later OR LGPL-3.0-or-later; prose CC-BY-SA-4.0.
- Made by
- Corwin and Bryant. OBS Studio itself belongs to its own project.
- You need
- Python 3 for the tools; POSIX sh for the healer.
What it does
- Splits a whole OBS configuration into atoms and joins it back losslessly: settings files byte for byte, JSON equal in meaning. Credentials go to a local vault and are never published.
- Rolls the atoms up into one file, STAGES.md, that a person can read and edit, and unrolls it back with conflict detection on both sides.
- Composes multi-monitor screen maps: it finds captures that follow a monitor number and binds them to the monitor itself, and keeps your hand-made scenes current.
- Heals builds: plans, builds and keeps Debian and source builds of OBS current, following main by default.
- Designed, not built: hand control at the desk (grab a window, flick to fill, a visible pointer, swipe between desktops) and camera calibration.
Repository: not public yet.
How it works
How a setting travels.
Nothing writes your live OBS files without an explicit write flag, and every write leaves a dated backup. A tool may point out a pattern, such as settings that always change together; a person decides.
Workflows
Three things you do with obsmage, each as the steps it takes.
Edit by hand
Read and change a whole setup as one file.
Compose screen maps
Keep the hand-made scenes in step with the displays you have.
Heal builds
Keep Debian and source builds of OBS current.
Scenes
A scene is a layout OBS shows. A screen map is a scene that draws every monitor you own as a rectangle, so you can cut between them.
- Bound by number
- Fragile. Add, remove or reorder a display and the same number points at another screen.
- Bound by stable id
- Follows the hardware. The composer adds this and keeps the number for older OBS.
- Never deleted
- A display that goes away hides its item and marks it; when it returns, it is shown again. Items you hid yourself are left alone.
- Your layout teaches it
- infer-layout reads a hand-made screen map and uses it as the physical layout. No tape measure.
vibrobeast
A memory Claude keeps on your computer, in plain files.
today public
vibrobeast gives Claude a memory that lives on your own computer, in files you can open and read. It comes with the written ways of working we use every day, named voices called persona sheets, and a few rooms you can choose to open.
- Status
- Works for its makers. Not yet reviewed by anyone outside the two of us; its own page says that first.
- Licence
- Writing CC-BY-SA-4.0; scripts GPL-3.0-or-later.
- Made by
- Made together by Corwin and Bryant.
- You need
- Claude Desktop or Claude Code.
What it does
- Keeps memory in plain files under your home folder.
- Never edits in place: a change is a new generation beside the old one, so you can see what was there.
- Ships its extra rooms off: a common room for people and agents, a bridge to a local model and others stay shut until you open each one.
- Rebuilds a privacy record for every release from claims the build checks against the code, and stops if one no longer holds.
How it works
A note, kept.
Every room is off at first. The memory is a folder of files; anything that reads it reads the same files you do.
vibrobeast-skills
Written ways of working that Claude reads when a task needs them.
today public
A skill is a short written method: how to hand work back carefully, how to check a claim in plain words, how to show that a test can fail. Claude reads one when the task in front of it needs it, and each skill is also a slash command.
- Status
- Today. Public.
- Licence
- Writing CC-BY-SA-4.0; scripts GPL-3.0-or-later.
- Made by
- Made together by Corwin and Bryant.
- You need
- Claude Desktop or Claude Code.
What it does
- Each skill says when it applies, what it does, how it can fail, and how to switch it off.
- Several carry their own checks, and those checks are shown able to fail before anyone trusts them.
- Installs into Claude Desktop or Claude Code as a plugin, through the public repository.
- 78 skills, counted 2026-10-30.
How it works
A skill, used.
Most of the ideas the shop keeps coming back to live here in written form, so anyone can read exactly what we ask of our agents and hold us to it.
NextTime
Community time banking for Nextcloud.
today public
NextTime is a Nextcloud app for time banking and mutual aid, and it is Brigidt's. Members post what they need, others volunteer, and an hour of help is worth an hour whoever gives it.
- Status
- Today. Public. The repository carries a browser demo.
- Licence
- See the repository.
- Made by
- Brigidt's work. Our part is hosting it among the shop's repositories.
- You need
- A Nextcloud (29 to 35).
What it does
- Hours are approved by an admin or by three votes from the community; nobody decides on their own claim.
- Every movement of hours is written to a public ledger, and every admin change is logged where members can read it.
- Shows a request's exact location only to the people who need it.
- Runs in Nextcloud 29 to 35 (7 versions, tested 2026-10-29).
How it works
An hour, from request to ledger.
It is built as infrastructure against hierarchy: transparency and community oversight are preferred over admin-only power, and changes that would concentrate control are flagged in review.
fourSwordsFromThePast
A Link to the Past, native on PC, with four-player drop-in co-op.
today public
The Legend of Zelda: A Link to the Past, rebuilt as a native PC program with up to four players who can drop in and out. It builds on the zelda3 reimplementation in C and needs your own copy of the game to extract the art and sound; none of the game is in the repository.
- Status
- Today. Public.
- Licence
- See the repository; built on snesrev/zelda3 (MIT), vendored at 45a149d8.
- Made by
- A Bryant repository; credit is not yet written in its README, so none is claimed here beyond that.
- You need
- Your own US copy of the game.
What it does
- Gives each Link its own colour; the camera keeps the group in view and splits the screen when couch players wander apart.
- Lets players lift and throw each other over pits, lift heavy rocks together and hold floor switches for each other.
- Online play uses room codes instead of addresses, rollback netcode, and a seat that waits two minutes for a dropped connection.
- Small kindnesses: colour-blind friendly colours, arrows to off-screen teammates, a ping for help, spectating while down, friendly fire you can turn off.
How it works
From your cartridge to four players.
Players: up to 4, counted 2026-10-29. Ways to join: 3 (same PC, LAN, internet).
Quantum 3D5
A 3D atom and molecule simulator for learning, in the browser, offline.
today public
Drop protons, neutrons and electrons into a 3D space and watch what they do. Build any element, make water or methane, heat a salt crystal until it shakes apart, or follow a guided lesson that waits for you to try each step. It is Bryant's.
- Status
- Today. Public.
- Licence
- See the repository.
- Made by
- Bryant's work.
- You need
- A browser.
What it does
- Sets temperature, gravity, electric and magnetic fields; bonds form and break, nuclei decay, electrons are excited by light and fall back.
- Live graphs, a glossary, a study journal and a double-slit demonstration; scenes save to a file you can share.
- A Realism page lists which parts are real physics, which are simplified, and which are faked so they look right.
- Makes 0 network connections (counted 2026-10-29). No account, no server.
How it works
Learning by trying.
Everything runs on your own computer.
Patched PHP for SuiteCRM
Patched end-of-life PHP for SuiteCRM, built from the PHP project's own commits.
today public
In October 2026 the PHP project published minimal mitigation commits for two critical issues on branches that no longer get releases. Many SuiteCRM installs still run on those branches. This repository builds PHP from those commits and checks that SuiteCRM installs and logs in on each build.
- Status
- Today. Public.
- Licence
- See the repository.
- Made by
- Corwin's.
- You need
- A host to build on.
What it does
- Pins the commits by full hash and refuses to go on if a branch head moves.
- Publishes the binaries together with the complete sources they were built from.
- Sets the interim php.ini setting the advisories recommend for SuiteCRM.
- Covers 3 PHP branches (7.4, 8.0, 8.1) and 2 advisories, counted 2026-10-29. Contains no exploit and no vulnerable code of its own.
How it works
Patch, build, install, log in.
It is a build-and-prove apparatus, not a fork: the patches are the PHP project's, unchanged, and updating PHP is still the only complete fix. The repository says so on its first page.
card-games.el
About thirty card games for GNU Emacs.
today public
An Emacs package of card games: trick-taking (500, Hearts, Spades, Euchre, Bridge and more), solitaires (Klondike, FreeCell, Spider and others), rummies, cribbage, and two-player Russian Bank against the computer. It is Corwin's own and lives outside the inputloop organization, under his own account.
- Status
- Today. Public. On MELPA.
- Licence
- Code GPL-3.0-or-later; manual CC-BY-4.0.
- Made by
- Corwin's own.
- You need
- GNU Emacs.
What it does
- Plays inside GNU Emacs, in a buffer, with the keyboard.
- Installs from MELPA, or from a checkout with make.
- Code GPL-3.0-or-later; the manual is CC-BY-4.0.
How it works
From MELPA to a hand of cards.
Written in Emacs Lisp; each game plays in an ordinary buffer.