Features
Every decision in Pressbin is about reducing complexity. Less to install, less to break, less to think about.
The entire Pressbin engine — HTTP server, markdown renderer, SQLite database, and default theme — compiles into one executable file. No runtime, no interpreter, no package manager on the server.
Deploying a new version means copying one file. Rolling back means copying the old file back. That's it.
Your GitHub repository is the source of truth for all content.
Write a post, commit it, push to main — a GitHub Action downloads
the matching pressbin-sync client and syncs changed
posts and images to your server via the sync API.
No login portal. No "publish" button to click. No deploy hook to configure. Just your normal git workflow.
main for posts/**/*.md and assets/images/**Pressbin uses SQLite with WAL mode for its embedded database. Every post is stored as rendered HTML — no re-rendering on each request. Just one query per page load.
FTS5 (SQLite's full-text search extension) powers the search box. Triggers keep the index in sync automatically on every post create, update, or delete.
Every Pressbin action is available via a REST API.
Build a mobile app, a CLI, a custom dashboard — or just
use curl. The binary is the backend. The UI is up to you.
Two key types, strict separation: admin keys manage
posts, settings, and keys via /api/admin/* (they cannot sync).
Sync keys publish from GitHub via /api/sync*
only. Both are bcrypt-hashed in SQLite.
POST /api/sync, asset upload, deletions (GitHub Actions)PRESSBIN_KEY = sync.key (pb_sync_…)pressbin setup writes admin.key and sync.key onceRun the installer, add the GitHub Action, push a Markdown file.
Install Pressbin