Use case
A forge with an operational surface you can hold in your head
You are the team that gets paged. The question is not what a product can do, it is what it does at three in the morning.
What it actually needs
Bun, Postgres, and the git binary. That is the dependency list to start. Queues, caches, and search are drivers you enable when there is a reason, not prerequisites in an install guide.
Failure modes you can predict
- Repositories are ordinary bare git directories, readable without this application running
- Every merge ends in a guarded ref update, so a concurrent push is never silently discarded
- Outbound webhooks cannot reach loopback, private ranges, or the metadata service
- Backups are a directory copy and a database dump
Migrations are generated from the models
The schema is described once, in the model, and the SQL is derived from it. Reviewing a schema change means reviewing a generated migration rather than reconciling two descriptions that drifted apart.
No vendor lock in the storage layer
Nothing about your history is inside a proprietary format. The exit plan is the same as the backup plan, which is the only exit plan anybody ever executes.
Operate it without a runbook the length of a novel
One process and one database, with the optional parts genuinely optional.