kepr

@june

Modern source forge for Koh repositories

TypeScript

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

214 files
a7772f7d8854
back to HEAD
public/87.0 KB · 1 week ago
scripts/10.1 KB · 1 week ago
src/362.9 KB · 1 week ago
admin/98.3 KB · 1 week ago
bucket/28.2 KB · 1 week ago
describe/15.5 KB · 1 week ago
issues/26.7 KB · 1 week ago
mirror/26.9 KB · 1 week ago
pages/79.3 KB · 1 week ago
releases/24.8 KB · 1 week ago
server/53.9 KB · 1 week ago
tarball/7.6 KB · 1 week ago
main.ts1.9 KB · 1 week ago
tasks/1.2 KB · 1 week ago
tests/448.9 KB · 1 week 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.ts7.4 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.ts10.9 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.9.1 KB · 1 week agoconfig.test.ts2.9 KB · 2 weeks agoconnect.test.tsCovers connect setup, validation, one-time redemption, rate limits, admin history, and secrecy.15.9 KB · 2 weeks agoconsole.test.ts27.2 KB · 1 week agocontract.test.ts14.2 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: koh3's own S3 backend and Bun's S3Client both talk to it, so Kepr and the two koh3 machines share one bucket.2.4 KB · 2 weeks agofixture.ts8.7 KB · 2 weeks agofront.test.ts10.6 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.5.0 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.3.9 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.txt7 B · 1 week agokohpaths.test.ts3.6 KB · 1 week agokohrelease.test.ts5.1 KB · 1 week agokohremote.test.tsCovers addendum A2 part 2: Koh's own remote layout, served read-only from a public repo's mirror.6.9 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 koh3 steals it — and later, once that machine has signed in, offers its work back to the bucket.15.5 KB · 1 week agokohupdate.test.ts11.0 KB · 1 week agolinks.test.ts2.8 KB · 1 week agonavbar.test.ts1.7 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.5.1 KB · 1 week agopages.test.ts19.7 KB · 1 week agoreleases.test.ts17.3 KB · 1 week agorepotext.test.ts7.9 KB · 1 week agorepoworkspace.test.tsCovers §24's selected-repo workspace: the summary, detected and shown languages, where the description comes from, and the repo's releases.8.8 KB · 1 week agoserver.test.ts2.3 KB · 2 weeks 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.1 KB · 1 week agosync.test.ts14.0 KB · 1 week agotarball.test.ts13.3 KB · 1 week agotimeout.ts359 B · 2 weeks 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 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 · 1 week agopackage.json526 B · 1 week agotsconfig.json441 B · 2 weeks ago
b7d7ac5d3c45record the follower fan-out decision June closed (v3.2.5)4 days ago5d79197310d5deploy the two-step setup aids to Tylee (v3.2.4)4 days ago46decf351fc0offer the setup key and address with copy buttons, and no QR (v3.2.3)4 days ago0b513e91a395deploy two-step sign-in, the code palette and repo delete to Tylee (v3.2.2)4 days ago70fe79feb961delete a repo from the console, bucket and all, behind a tick and its typed name (v3.2.1)4 days ago556a0d535096add two-step sign-in and give code strings green and constants rose (v3.2.0)4 days ago69d1e4392039deploy the amber palette to Tylee (v3.1.33)4 days ago3e22788e3c46replace the gold with the normal amber everywhere and drop the variable (v3.1.32)4 days ago7e5b89845c1ddeploy the issues campaign and the palette decisions to Tylee (v3.1.31)4 days ago2acadcc4e01dkeep the page glow's orange rather than the brand amber (v3.1.30)4 days ago41be9dc6680brestore the muted text and pill border June picked, keeping v3.1.18's palette otherwise (v3.1.29)4 days agoa1ea0dff2343keep the follow hour spent after a stop, clamp the refusal echo, and name pictures by their bytes (v3.1.28)4 days ago173b22bb129fbind a follower's confirm and stop link to their address so a spent link cannot stop a reused id (v3.1.27)4 days ago63bae92f9c17record community issue threads handoff in continuity4 days ago6662033dd2cawip: email follows and console thread for issues (v3.1.26); last gate 418 pass, 1 hook timeout under load, unverified4 days ago0cb5291985c4attach screenshots and logs to issues and replies, served sandboxed while visible (v3.1.25)4 days agofa3e2190d483replace private follow-up links with public Markdown replies, reply and quote (v3.1.24)4 days agoc337f277612erestore issue titles and back navigation inside repo panels (v3.1.23)4 days agoaa7d0740011fsoften profile stream edges and cycle brighter amber IDs (v3.1.22)4 days ago766eb822c5afraise open-issue counts in red notification bubbles (v3.1.21)4 days agofba6c5b73ce5stream real public save IDs gently behind the profile (v3.1.20)4 days agoe2328c2de1b6show red open-issue counts beside amber handle links in repo headers (v3.1.19)5 days ago542f2ac04155unify Kepr's vibrant palette around gold, amber and warm red (v3.1.18)5 days agoca4c2b7759farecord the warm-family palette's deployment on Tylee (v3.1.17)5 days ago08185d346d30move people to coral and versions to gold so Kepr's accents form one warm family, keeping rose and lavender for code only (v3.1.16)5 days ago708230b87c39record the colour-by-meaning deployment on Tylee (v3.1.15)5 days ago686f09ed5ca8give each palette colour one meaning on every page: amber for links, green for additions and success, red for removals and errors, lavender for versions, rose for people; the timeline returns to amber tones (v3.1.14)5 days ago34c906a3bdd2record the richer palette's deployment on Tylee (v3.1.13)5 days ago3c0b64cd35eagive Kepr a richer palette: warm stone text, vivid amber and a five-colour set (amber, red, green, rose, lavender) across code, timeline, labels and word cloud; tests now pinned to koh 3.8.6 (v3.1.12)5 days ago10bc050dee95record Codex's clean review of the one-key change (v3.1.11)6 days agob7f62416deearecord the one-key Kepr v3.1.9 deployment on Tylee (v3.1.10)6 days agoaf33540f3628read and write the bucket with one key, removing [bucket.write] (v3.1.9)6 days agod09bbcf21969pin the tests to koh 3.8.5, passing --yes where koh now asks to confirm (v3.1.8)6 days ago7540ef9cfbc2record the verified Kepr v3.1.6 documentation deployment on Tylee (v3.1.7)1 week ago88b353187cadrewrite public Kepr documentation with the humanizer skill (v3.1.6)1 week agod9d5f709deeerewrite the Kepr README in plain prose (v3.1.5)1 week agodc021cb0daf5record the verified Kepr v3.1.3 deployment on Tylee (v3.1.4)1 week ago13e7dbeb52edshow the running Kepr version on the docs page (v3.1.3)1 week agoff4ae973f9fcintroduce Kepr with a brief README and first-run setup (v3.1.2)1 week ago404280fe96derecord the v3.1.1 older-builds deploy on Tylee in continuity1 week agoccdde6bb8ea2show only the latest release large on builds, and older releases as archive-style rows with their downloads in view (v3.1.1)1 week agoca2b1efa21b8record the v3.1.0 deploy and nina install test results in continuity1 week agoff5e983fb907link a release file whose name other platforms share as <repo>-<platform>, so each platform downloads its own build (v3.1.0)1 week ago109d0d64844erecord the Umami tracking code deployment on Tylee (v3.0.224)1 week agoac8a1e995ab9add an Umami tracking code to the console's site settings, loaded on public pages and allowed by the CSP (v3.0.223)1 week agoc4aae1ea767averify Kepr fixtures against the installed Koh 3.4.6 release (v3.0.222)1 week ago25b3675a6b8arecord reviewed Kepr docs and upgrade-feed deployment (v3.0.221)1 week ago7335e5aa4ac0explain Kepr as a public Koh project library (v3.0.220)1 week ago9c395656cac2wip: enable verified Koh 2 release feed compatibility (3.0.219); deployment pending1 week agof061d32ecc39record the filename download links deployment on Tylee (v3.0.218)1 week ago

older →

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.