Skip to main content
All projects

Apps

Sideporch

A small, self-hosted team chat in one binary.

Source on GitHub Website Documentation
brew install niklas-heer/tap/sideporch
Sideporch in dark mode with the general channel open: a release checklist, a ranked-choice poll on where to celebrate, and a thread about release notes on the right

Slack works well, but it is someone else’s server, and a small group pays for it either in money or in history that disappears. Many self-hosted alternatives ask for a database server, a mail server and an afternoon. Sideporch is my attempt at a chat that a team, a club or a family can run on a small VPS, a home server or an ARM board without any of that.

It is one program and one data directory. The first person to open it becomes the admin and invites everyone else with a link; nobody needs an email address. Backups are a download from the browser or a daily file, and moving to another server means copying that directory.

Inside, it tries to feel familiar: public and private channels, threads, direct messages, mentions, reactions, Markdown with diagrams, files, pins, reminders and messages sent later. Polls can rank options to find what most people can live with. Search corrects typos using your own team’s words. On phones it installs as a web app with push notifications from your own server.

Beyond chatting, there is plumbing. Monitoring and CI tools post through Slack-compatible webhooks, so something like Gatus works unchanged. Automations are small Lua scripts that you write and test in the browser, or let an AI write through MCP. Separate Sideporch servers can share channels with signed requests, and a Slack export can be imported, history included.

The web interface is rendered on the server, and the styles are compiled in Rust at build time, so there is no Node toolchain anywhere. It is early: it works end to end, and there will be rough edges and breaking changes before a stable release. A live demo starts over every night.

Highlights

  • One binary, no database server
  • Slack import and Slack-compatible webhooks
  • Lua automations, testable in the browser