kepr

@june

Modern source forge for Koh repositories

TypeScript

v3.2.5 · 270 saves · 17,225 lines · updated 5 days ago

250 files
e2328c2de1b6
back to HEAD
public/371.4 KB · 5 days ago
css/61.8 KB · 5 days ago
fonts/269.0 KB · 1 week ago
js/40.3 KB · 5 days ago
favicon.svg309 B · 5 days ago
scripts/10.1 KB · 1 week ago
src/413.4 KB · 5 days ago
admin/109.4 KB · 5 days ago
bucket/40.3 KB · 6 days ago
describe/20.3 KB · 1 week ago
issues/26.9 KB · 1 week ago
mirror/39.5 KB · 1 week ago
pages/85.4 KB · 5 days ago
releases/24.4 KB · 1 week ago
server/57.3 KB · 6 days ago
tarball/7.8 KB · 6 days ago
main.ts2.2 KB · 1 week ago
tasks/1.2 KB · 2 weeks ago
tests/487.2 KB · 5 days ago
fixtures/93.2 KB · 2 weeks ago
kepr2/93.2 KB · 2 weeks ago
api_haven_releases_history.body352 B · 2 weeks agoapi_haven_releases_history.headers89 B · 2 weeks agoapi_haven_releases_latest.body908 B · 2 weeks agoapi_haven_releases_latest.headers89 B · 2 weeks agoapi_kepr_releases_history.body2.8 KB · 2 weeks agoapi_kepr_releases_history.headers89 B · 2 weeks agoapi_kepr_releases_latest.body889 B · 2 weeks agoapi_kepr_releases_latest.headers89 B · 2 weeks agoapi_koh_releases_2.1.0_linux-x86_64.headers99 B · 2 weeks agoapi_koh_releases_2.1.0_macos-aarch64.headers99 B · 2 weeks agoapi_koh_releases_2.1.16_linux-x86_64.body51 B · 2 weeks agoapi_koh_releases_2.1.16_linux-x86_64.headers58 B · 2 weeks agoapi_koh_releases_history.body9 B · 2 weeks agoapi_koh_releases_history.headers12 B · 2 weeks agoapi_koh_releases_latest.body2.1 KB · 2 weeks agoapi_koh_releases_latest.headers58 B · 2 weeks agoapi_nina_releases_history.body13.9 KB · 2 weeks agoapi_nina_releases_history.headers89 B · 2 weeks agoapi_nina_releases_latest.body1.8 KB · 2 weeks agoapi_nina_releases_latest.headers89 B · 2 weeks agoapi_nowhere_releases_latest.body53 B · 2 weeks agoapi_nowhere_releases_latest.headers58 B · 2 weeks agoapi_peach-android_releases_history.body27.1 KB · 2 weeks agoapi_peach-android_releases_history.headers89 B · 2 weeks agoapi_peach-android_releases_latest.body1.6 KB · 2 weeks agoapi_peach-android_releases_latest.headers89 B · 2 weeks agoapi_peach-relay_releases_history.body45 B · 2 weeks agoapi_peach-relay_releases_history.headers58 B · 2 weeks agoapi_peach-relay_releases_latest.body45 B · 2 weeks agoapi_peach-relay_releases_latest.headers58 B · 2 weeks agohaven_meta.body334 B · 2 weeks agohaven_meta.headers58 B · 2 weeks agohaven_releases_0.6.1_checksums.txt.body401 B · 2 weeks agohaven_releases_0.6.1_checksums.txt.headers52 B · 2 weeks agohaven_releases_0.6.1_haven-macos-aarch64.headers109 B · 2 weeks agohaven_releases_0.6.1_macos-aarch64.headers109 B · 2 weeks agohaven_releases_latest_version.txt.body5 B · 2 weeks agohaven_releases_latest_version.txt.headers52 B · 2 weeks agohaven_releases_latest.body0 B · 2 weeks agohaven_releases_latest.headers44 B · 2 weeks agohaven_update-info.body378 B · 2 weeks agohaven_update-info.headers58 B · 2 weeks agokepr_meta.body479 B · 2 weeks agokepr_meta.headers58 B · 2 weeks agokepr_releases_2.0.16_checksums.txt.body397 B · 2 weeks agokepr_releases_2.0.16_checksums.txt.headers52 B · 2 weeks agokepr_releases_2.0.16_kepr-linux-aarch64.headers114 B · 2 weeks agokepr_releases_2.0.16_linux-aarch64.headers114 B · 2 weeks agokepr_releases_latest_version.txt.body6 B · 2 weeks agokepr_releases_latest_version.txt.headers52 B · 2 weeks agokepr_releases_latest.body0 B · 2 weeks agokepr_releases_latest.headers44 B · 2 weeks agokepr_update-info.body377 B · 2 weeks agokepr_update-info.headers58 B · 2 weeks agokoh_meta.body491 B · 2 weeks agokoh_meta.headers58 B · 2 weeks agokoh_releases_2.1.0_checksums.txt.body753 B · 2 weeks agokoh_releases_2.1.0_checksums.txt.headers52 B · 2 weeks agokoh_releases_2.1.0_koh-linux-x86_64.headers112 B · 2 weeks agokoh_releases_2.1.0_linux-x86_64.headers112 B · 2 weeks agokoh_releases_latest_version.txt.body5 B · 2 weeks agokoh_releases_latest_version.txt.headers52 B · 2 weeks agokoh_releases_latest.body0 B · 2 weeks agokoh_releases_latest.headers42 B · 2 weeks agokoh_update-info.body678 B · 2 weeks agokoh_update-info.headers58 B · 2 weeks agonina_meta.body415 B · 2 weeks agonina_meta.headers58 B · 2 weeks agonina_releases_3.4.14_checksums.txt.body763 B · 2 weeks agonina_releases_3.4.14_checksums.txt.headers52 B · 2 weeks agonina_releases_3.4.14_linux-aarch64.headers114 B · 2 weeks agonina_releases_3.4.14_nina-linux-aarch64.headers114 B · 2 weeks agonina_releases_latest_version.txt.body6 B · 2 weeks agonina_releases_latest_version.txt.headers52 B · 2 weeks agonina_releases_latest.body0 B · 2 weeks agonina_releases_latest.headers44 B · 2 weeks agonina_update-info.body691 B · 2 weeks agonina_update-info.headers58 B · 2 weeks agopeach-android_meta.body362 B · 2 weeks agopeach-android_meta.headers58 B · 2 weeks agopeach-android_releases_2.17.43_android-arm64.headers135 B · 2 weeks agopeach-android_releases_2.17.43_checksums.txt.body441 B · 2 weeks agopeach-android_releases_2.17.43_checksums.txt.headers52 B · 2 weeks agopeach-android_releases_2.17.43_peach-android-android-arm64.headers135 B · 2 weeks agopeach-android_releases_latest_version.txt.body7 B · 2 weeks agopeach-android_releases_latest_version.txt.headers52 B · 2 weeks agopeach-android_releases_latest.body0 B · 2 weeks agopeach-android_releases_latest.headers54 B · 2 weeks agopeach-android_update-info.body414 B · 2 weeks agopeach-android_update-info.headers58 B · 2 weeks agopeach-relay_meta.body311 B · 2 weeks agopeach-relay_meta.headers58 B · 2 weeks agopeach-relay_update-info.body33 B · 2 weeks agopeach-relay_update-info.headers58 B · 2 weeks agorecord.shRecords Kepr 2's §22.4 compatibility routes from kepr.uk, GET only, into this folder: <slug>.headers (status line plus the headers the contract tests read) and <slug>.body.2.0 KB · 2 weeks agoschema.sql28.4 KB · 2 weeks ago
account.test.tsCovers the console's Account section (June, 2026-09-30): the admin password, other sessions and the domain, all changed without touching kepr.toml by hand, and applied without a restart.4.2 KB · 1 week agoadmin.test.ts8.1 KB · 1 week agobackup.test.ts6.4 KB · 1 week agobackupbucket.test.tsCovers the optional backup bucket (June, 2026-09-30): set, tested and removed in the console, written to kepr.toml by Kepr alone, each backup copied there with the newest 14 kept, and a failure shown and told once until an upload succeeds.6.1 KB · 1 week agobackupworkspace.test.tsCovers §24's backup workspace: every kept backup listed and downloadable, back up now, the last failure until a backup succeeds, and the written restore steps.3.4 KB · 1 week agobrowser.ts3.1 KB · 1 week agobucket.test.ts12.1 KB · 1 week agobucketadmin.test.tsCovers §24's Bucket section: masked secrets, the connection test, and a save that rewrites kepr.toml and applies the new settings without a restart.8.3 KB · 6 days agoconfig.test.ts2.5 KB · 6 days agoconnect.test.tsCovers connect setup, validation, one-time redemption, rate limits, admin history, and secrecy.15.0 KB · 6 days agoconsole.test.ts28.5 KB · 1 week agocontract.test.ts14.4 KB · 1 week agodescribe.test.ts9.8 KB · 2 weeks agodiff.test.ts2.9 KB · 2 weeks agodownloads.test.tsCovers §24's Downloads section: counts per UTC day, the last 30 days per repo or across all, each repo's totals, the most downloaded files, and dropping days older than 400.2.9 KB · 1 week agoemail.test.tsCovers §24's Email section: SMTP settings in kepr.toml, the test send, emailed notifications and the delivery queue's retries, retry now and discard.9.9 KB · 1 week agofake-s3.tsA bucket in memory, served over HTTP for the joint public-steal test: koh's own S3 backend and Bun's S3Client both talk to it, so Kepr and the two koh machines share one bucket.2.9 KB · 1 week agofixture.ts8.7 KB · 1 week agofront.test.ts11.9 KB · 1 week agohidden.test.tsCovers per-repo hidden paths (June, 2026-09-30): gone from every page, the stats and new tarballs, kept hidden through later syncs, handed to Koh under .kepr/hidden/, and back on unhide.6.6 KB · 1 week agoignored.test.tsCovers names ignored in every repo (June, 2026-10-01): a file or folder with that exact name, at any depth, is gone from every repo at once, stays gone in later saves, and comes back when the name is taken off the list.4.1 KB · 1 week agoimport.test.ts15.6 KB · 2 weeks agoinstall.test.ts4.5 KB · 1 week agoissues.test.ts13.7 KB · 1 week agokepr2.test.ts4.2 KB · 2 weeks agokoh-version.txt6 B · 5 days agokohpaths.test.ts3.6 KB · 1 week agokohrelease.test.ts7.2 KB · 1 week agokohremote.test.tsCovers addendum A2 part 2: Koh's own remote layout, served read-only from a public repo's mirror.8.5 KB · 1 week agokohsteal.test.tsThe joint public-steal contract (addendum A2, item 8d): one machine publishes a repo to a bucket, Kepr serves it read-only over HTTP in Koh's own layout, a second koh steals it — and later, once that machine has signed in, offers its work back to the bucket.15.4 KB · 6 days agokohupdate.test.ts11.0 KB · 1 week agolinks.test.ts2.8 KB · 2 weeks agonavbar.test.tsCovers the signed-in navbar (nav.js): "admin" and "log out" in place of "log in", built from the readable mark signing in sets beside the session.3.1 KB · 1 week agonotifications.test.tsCovers §24's in-app notifications: what raises one, unread state, opening, mark all read, switching kinds off, and keeping the newest 200.6.3 KB · 1 week agopages.test.ts23.8 KB · 5 days agoreleases.test.ts17.7 KB · 5 days agorename.test.tsCovers renaming a repo from the console (June, 2026-10-01): the history moves to the new name in the bucket with a marker left behind, Kepr's own rows and counts move with it, old page URLs redirect, and Koh follows the marker on its next offer.3.4 KB · 1 week agorepotext.test.ts8.6 KB · 6 days agorepoworkspace.test.tsCovers §24's selected-repo workspace: the summary, detected and shown languages, where the description comes from, and the repo's releases.9.3 KB · 1 week agoscript.test.tsCovers kepr.js's start: every island it calls is defined, so one missing name can't stop the rest of the page's scripts.615 B · 1 week agoserver.test.ts2.5 KB · 1 week agosetup.test.tsCovers first-run setup (June, 2026-09-30): with no kepr.toml, Kepr serves only /setup, which takes the one-time code printed in the terminal, then the password, domain and bucket, writes kepr.toml itself, and hands over to the real app.4.2 KB · 1 week agostorage.test.tsCovers §24's Storage section: sizes by repo and kind, kept tarballs with a delete each, and orphan cleanup that touches only Kepr's own files.3.9 KB · 1 week agosync.test.ts22.7 KB · 1 week agotarball.test.ts13.3 KB · 1 week agotimeout.ts358 B · 1 week agotriage.test.tsCovers §23–§24's triage: tab counts, awaiting reply, repo/type/word filters, hiding one follow-up, and pausing new issues per repo.8.1 KB · 1 week agoversion.test.tsCovers the version a repo's header shows without a build: what the project declares, by Koh's own rule (Koh 3's src/build/version.v), and a build's version over it.4.7 KB · 5 days agoworker.test.tsCovers the sync on its own thread (2026-10-02): a real worker syncs a koh-made bucket, holds syncs off while the app works, and applies hidden lists.3.1 KB · 1 week ago
biome.json361 B · 2 weeks agobun.lock20.8 KB · 1 week agobunfig.toml40 B · 2 weeks agokepr.example.tomlCopy to kepr.toml (never saved: it holds the admin password hash and the bucket key).851 B · 2 weeks agopackage.json525 B · 5 days agoREADME.mdKepr is a self-hosted website for your Koh projects.1.3 KB · 1 week agotsconfig.json441 B · 2 weeks ago
a4e1f5407345record the finished operator console in continuity (v3.0.167)1 week agof47afb6afc01draw the download day bars in the theme's colours and centre console row buttons (v3.0.166)1 week agoeb54516e9dc9split the repo workspace into overview, settings, builds and archives tabs (v3.0.165)1 week ago5487c6f1524aclose, reopen, hide or unhide ticked issues together from the console list (v3.0.164)1 week ago1440b2ee584cblock a reporter's address from filing and following up, listed and lifted in the console (v3.0.163)1 week ago0c5812ee878ashow bucket storage by repo at /admin/storage, with per-tarball delete and cleanup of Kepr's orphaned files (v3.0.162)1 week ago850a5062b8fecount downloads per repo and day, shown at /admin/downloads with totals and top files (v3.0.161)1 week ago1a625426812fdelete one file of a build, rewriting its release record first (v3.0.160)1 week ago0fb42c17ed78record the operator console's first part and what comes next in continuity (v3.0.159)1 week ago53796355d42eset Kepr up in the browser on first run with a one-time code from the terminal, then hand over without a restart (v3.0.158)1 week ago3be930495fbcswitch the bucket source between S3 and a folder remote either way from the console (v3.0.157)1 week agoa602ee4ac891change the admin password, sign out other sessions and set the domain from a new Account section, applied without a restart (v3.0.156)1 week ago9288dbfe8a4fcopy each backup to an optional backup bucket set in the console, keeping the newest 14 there (v3.0.155)1 week agode3f4637e3efraise the TypeScript ceiling to 12,600 with admin 2,800, server 2,000, issues 1,200 and CSS 3,400 (v3.0.154)1 week ago2d05e7661d88record the codex review fixes and June's operator-console asks in continuity (v3.0.153)1 week agoba443d076bcedelete builds one at a time, moving latest first and the record last, so a failed delete retries cleanly (v3.0.152)1 week ago2b4b50250d6dkey kept tarballs by strips, hidden paths and mirror epoch, recheck after every await, and rebuild mirrors in place so held handles stay usable (v3.0.151)1 week agodf02ac46afcenote the connect-test timeout flake and gating on bun test's exit code (v3.0.150)1 week ago756506893ff9record that Kepr may delete builds in AGENTS.md, and the session's state in continuity (v3.0.149)1 week ago1305a0bb9d6dhide files and folders per repo from every page, the stats and tarballs, handing the list to Koh under .kepr/hidden (v3.0.148)1 week ago3c2984c576fcfix the one-settings-form test that v3.0.146 saved red after adding the tarball form (v3.0.147)1 week agob967d82d724edelete a repo's kept tarballs from the bucket on its admin page (v3.0.146)1 week ago02702253e7aekeep built tarballs in the bucket under .kepr/tarballs instead of the data directory (v3.0.145)1 week ago9a44722de6e7delete a build from the bucket on its repo's admin page, moving releases/latest to the newest left (v3.0.144)1 week ago528bcf043cacedit each build's notes and visibility on its repo's admin page, replacing the releases section (v3.0.143)1 week ago086289d5af85edit a repo's description and details from its admin page (v3.0.142)1 week ago71860b49096flet a folder instance switch to S3 from the bucket section (v3.0.141)1 week ago4ffd21d3611bremove install lines and card order; repos sort by name and old kepr.db columns are dropped (v3.0.140)1 week ago3c4ab82be15caccept plain-http admin forms when the domain is localhost, so local saves stop being refused (v3.0.139)1 week ago58d7fe07cda0list and download every backup, back up now, and show the last failure and restore steps (v3.0.138)1 week ago301147eeaa38email notifications over SMTP with a test send and a retrying delivery queue (v3.0.137)1 week ago2d3ee7d12177raise the TypeScript ceiling to 10,500 for email and backups (v3.0.136)1 week agoeb098609196dadd in-app operator notifications with unread count and per-kind switches (v3.0.135)1 week ago987482f17e06add issue triage tabs, filters, follow-up hiding and a per-repo pause on new issues (v3.0.134)1 week ago364bcfc8c156turn the repo section into a selected-repo workspace with shown languages (v3.0.133)2 weeks ago3559470a0d0eallocate the last 200 reserve lines to the server area (v3.0.132)2 weeks ago63e55f152976edit, test and live-apply S3 bucket settings from the admin console (v3.0.131)2 weeks ago55425ebd763cwip: record operator rebuild handoff; 8 sandbox test failures (v3.0.130)2 weeks ago29a59bb8b319give backups their own operator sidebar section (v3.0.129)2 weeks ago88d31110724callocate approved admin and server headroom (v3.0.128)2 weeks ago0cfcf6b2b220remove signature image controls from profile settings (v3.0.127)2 weeks ago419974952a84remove unnecessary repository search (v3.0.126)2 weeks ago68cf65f02c26edit descriptions through direct click and keyboard activation (v3.0.125)2 weeks agodc1ad7f95d01show six scrollable profile activity rows (v3.0.124)2 weeks ago51905dc98553align the issue form action row (v3.0.123)2 weeks ago61dc281fbb19keep island template markup readable (v3.0.122)2 weeks ago9ca245205729raise the approved CSS allowance to 3000 lines (v3.0.121)2 weeks ago73424a9e6ac2restore Kepr 2 hierarchy and actions in repo islands (v3.0.120)2 weeks ago9af784d30135give the operator a focused workspace with separate profile editing (v3.0.119)2 weeks ago52bd51d09124show admin beside log out for signed-in operators (v3.0.118)2 weeks ago

← newerolder →

details

Kepr

Kepr is a self-hosted website for your Koh projects. It reads your Koh remote 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.

Visitors can read highlighted source, see file descriptions, and inspect diffs at any save. They can download source archives or published releases, with checksums and update feeds available for releases. Bug reports and questions don't require a visitor account.

Each instance has one operator. Repositories start private; you choose which ones appear on the site. Kepr is built with TypeScript, Bun, Hono, and SQLite.

See Kepr in use · Self-hosting guide

Set up an instance

You'll need Bun and a Koh 3 remote. You can use an S3-compatible bucket or try Kepr locally with a folder remote. A public instance needs a domain and an HTTPS reverse proxy.

bun install --production
bun run start

On the first run, open /setup on your instance (http://localhost:3000/setup locally). The terminal prints a setup code. Enter it in the browser and set your password, domain, and storage connection. Kepr saves the configuration and starts syncing from your remote.

Sign in to select the projects you want to make public.