A self-hosted chat system that works without accounts.
Rust 51.4%
HTML 48.6%
2 1 0

Clone this repository

https://tangled.org/rubberducky.guru/banter https://tangled.org/did:plc:rcuvobqkuogi6meqto3hf6jl/banter
git@knot.tangled.wizardry.systems:rubberducky.guru/banter git@knot.tangled.wizardry.systems:did:plc:rcuvobqkuogi6meqto3hf6jl/banter

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Banter#

Banter is a small, self-hosted chat system designed for teams and side projects who just want to talk without dealing with accounts, logins, or third-party platforms.

It runs a lightweight WebSocket server, comes with a barebones web frontend, and has a CLI for creating and managing chat rooms.


Why Banter?#

Sometimes you just need a simple room to chat with collaborators without:

  • Installing yet another app
  • Registering for an account
  • Handing over data to a big company

Banter was created to make this painless:

  • Spin up a server
  • Create a room
  • Share a link
  • Start chatting

No accounts, no tracking, no gatekeeping.


Features#

  • Multi-room chat, each with its own join link
  • In-memory history replay when joining a room
  • WebSocket backend (Rust + Tokio)
  • Minimal HTML/JS frontend (no build step needed)
  • Admin CLI via Unix socket for create, list, delete

Security Limitations#

⚠️ Important: Banter is not built for production-grade security.

  • No authentication: anyone with the join link can enter and send messages.
  • No encryption: WebSocket traffic is plain unless you run behind a TLS reverse proxy.
  • No persistence: messages are only stored in memory while the server runs (might add file-based persistence in the future).
  • No spam protection: there’s no rate-limiting or moderation controls.
  • No identity guarantees: usernames are not verified, anyone can take any name and impersonate others.
  • Trust model: designed for small, trusted groups, not public communities.

If you need strong security guarantees, this is not the tool you want.


Quick Start#

1. Build#

git clone https://tangled.sh/@rubberducky.guru/banter
cd banter
cargo build --release

2. Config (srv.cfg)#

bind-address = 127.0.0.1:3000
chat-address = http://localhost:8080/app/app.html
server-address = 127.0.0.1:3000

3. Run server#

./target/release/banter-server

4. Create a room#

./target/release/banter create

Outputs a join link like:

http://localhost:8080/app/app.html?serverAddress=127.0.0.1:3000&roomID=abc123
  • Serve app.html (e.g. python3 -m http.server 8080 in the project directory to make the example work)
  • Open the link, pick a username, and chat

License#

This project is licensed under the MIT License. See the LICENSE file for details.