finds.dev← search

// the find

knadh/niltalk

★ 988 · Go · AGPL-3.0 · updated Nov 2025

Instant, disposable, single-binary web based live chat server. Go + VueJS.

Niltalk is a single-binary Go chat server for spinning up throwaway, password-protected chatrooms with a Vue frontend — think 'disposable Slack channel' for a quick private conversation. It's aimed at people who want ephemeral group chat without running a database or hosting a full messaging platform, and it doubles as a decent example of a small Go web app with swappable storage backends.

The store interface (mem/fs/redis under store/) is a clean abstraction — you can run it with zero external dependencies for a demo or point it at Redis for anything persistent, without touching handler code. Built-in Tor hidden service support (address = "tor" in config) is a real, unusual feature for this kind of tool and fits the disposable/private-chat use case rather than being bolted on for marketing. Genuinely single-binary: goreleaser + Dockerfile + docker-compose mean deployment is trivial, and static assets are swappable via --static-dir without a rebuild.

The frontend is Vue 2 via a vendored vue.min.js with no visible build pipeline (webpack/vite) or package.json in the tree — you're stuck editing minified-adjacent JS by hand if you want to change client behavior. No test files anywhere in the repo, so there's no safety net around hub/room/peer concurrency logic, which is exactly the kind of code (WebSocket fan-out, room lifecycle) that breaks in subtle ways. AGPL3 licensing will be a hard no for anyone wanting to embed this in a commercial product without open-sourcing their stack. The README explicitly says master overwrote a long-dead old version, which signals a maintenance gap in the project's history even though there's a recent push.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →