Vibeleaderboard
Index / tool
Visit github.com
Category
Social
Rank

Previous survey · No. 878 ·

Pricing
Open Source
Type
TOOL
Builder
knadh
GitHub
986 stars
Latest release
v0.1.1
Date

About

Instant disposable web chat server — single Go binary, ephemeral rooms, no signup, Vue front end.

What it does

Niltalk hosts short-lived, password-gated chat spaces that participants join through a browser. It carries messages, typing signals, presence changes, and room disposal events over WebSockets. Operators control room lifetime, capacity, message limits, rate limits, storage, and appearance through configuration.

Why it's ranked here

Niltalk has a focused design and unusually flexible self-hosting options for a small chat service. Password hashing, expiring rooms, configurable limits, three state backends, and optional Tor hosting make it practical. However, concrete storage defects weaken confidence in the file and Redis modes without local fixes.

What's good

Room identifiers and session identifiers come from cryptographic randomness, while passwords use bcrypt hashes. Rooms enforce configurable peer capacity, message size, queue size, lifetime, and sending rate. New participants can receive a bounded cache of recent events. Operators may replace the bundled templates and static assets.

Tradeoffs

This is disposable group chat, not durable messaging. Cached chat events live inside an active room rather than the selected state backend. The file backend appears unable to load an existing state file because its existence check is reversed. Redis session expiry passes a method value instead of computed seconds, which likely makes session creation fail.

How to use it well

Use Niltalk for temporary conversations where one person can host a service, create a password-protected room, and share its link out of band. Memory mode suits truly temporary use; test persistence carefully before choosing file or Redis storage. It does not cover searchable history, accounts, long-term archives, or broader collaboration workflows.

Technical notes+

main.go loads layered TOML, environment, and CLI configuration, selects store/mem, store/fs, or store/redis, registers HTTP routes, and serves WebSockets through handlers.go. internal/hub/room.go serializes room activity through channels and keeps payloadCache only in process memory. handlers.go hashes passwords with bcrypt and stores cookie-backed sessions. Two defects deserve attention: store/fs/fs.go uses os.IsExist(err) after os.Stat, so a successfully found file does not enter the load branch; store/redis/redis.go sends ttl.Seconds rather than ttl.Seconds() when setting session expiry. Also, respondJSON calls WriteHeader before setting Content-Type, so the JSON header may not be emitted. tor.go creates a persistent Ed25519 onion-service key through the chosen store.

Observed

License
AGPL3
Primary language
Go
Packaging
Downloadable binary and official Docker image
Interfaces
Browser interface, HTTP JSON endpoints, WebSocket chat transport, and CLI configuration flags
State backends
In-memory, file, and Redis
Optional hosting mode
Tor v3 onion service with Tor installed
Frontend structure
Bundled HTML, JavaScript, and CSS assets can be replaced at runtime

Read from README.md, go.mod, Makefile, main.go, internal/hub/hub.go, internal/hub/peer.go, internal/hub/room.go, tor.go, handlers.go, store/store.go, store/fs/fs.go, store/mem/mem.go, static/static/app.js, static/static/lib.js, store/redis/redis.go.

What it can do

  • Create instant chat room

    Room name or URL pathEphemeral chat room with unique URL

  • Join chat room without registration

    Chat room URLAccess to real-time chat interface

  • Send real-time messages

    Text messageMessage displayed to all room participants

  • Receive real-time messages

    Active chat room connectionLive stream of messages from other participants

  • Deploy chat server

    Single Go binary fileRunning web chat server instance

  • Auto-dispose chat rooms

    Inactive chat room after timeoutDeleted room with no persistent data

Tags

chatself-hostedgovuejsdisposable

Tech Stack

GoDocker

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.