Kepr
A modern source forge for Koh repositories.
Kepr is a modern source forge for Koh repositories. It reads the history you offer to your storage and lets people browse the code and history you choose to publish. You run it on your own domain, with your own storage, and keep working in Koh from the terminal.
How it works
Koh keeps each project’s history on your machine and offers saves to an S3-compatible bucket or a folder. Kepr reads that same storage, checks the incoming history, and keeps a local copy to serve pages from. It syncs every two minutes, so your development machine can be offline while people browse. Kepr never changes Koh’s saved history.
Offering a repository doesn’t publish it. Every repository starts private, and you choose which ones appear on the site from Kepr’s console.
For visitors
- A timeline of when work happened, and an atlas of files with descriptions taken from the code
- Any save’s message, changed files, and the code as it was at that point
- Source archives of the latest tree or of any save
- Releases with versioned downloads, notes, checksums, and update feeds
- Public issues for bug reports and questions, with no account needed. Each reporter gets a private link to follow the conversation.
To download a project along with its whole Koh history:
koh steal kepr.uk/nina
For the operator
Connect a machine once with koh remote <your-domain>. Koh opens the sign-in page, takes a one-time code, and from then on offers go straight to your bucket. koh offer --builds builds every platform in your koh.build recipe and publishes the release, which Kepr lists on the project’s builds page. Published versions can’t be overwritten.
The console handles visibility, descriptions and categories, renames with redirects, hidden files, issue replies, email notifications, and download counts. Kepr backs up its own database every day, keeps the last 14 backups, and can copy each one to a second bucket.
Run your own
You’ll need Bun 1.3 or newer, an S3-compatible bucket with a read-write key, and a domain behind an HTTPS reverse proxy. Kepr is built with TypeScript, Bun, Hono, and SQLite.
bun install --production
bun run start
On the first run, Kepr prints a setup code in the terminal and serves only /setup. Enter the code there, then choose your password, domain, and bucket. Each instance has one operator. kepr.uk is the instance that hosts Asha’s own projects.