An ephemeral, e2e encrypted, and RAM-only zero knowledge server chat room.
- TypeScript 36.6%
- Svelte 31.7%
- Rust 24.3%
- CSS 4.9%
- Shell 1.8%
- Other 0.7%
| assistant/requests | ||
| backend | ||
| docs | ||
| frontend | ||
| infra | ||
| mk | ||
| nginx | ||
| .browserstack.yml | ||
| .flake8 | ||
| .gitignore | ||
| .nvmrc | ||
| AGENTS.md | ||
| CONVENTIONS.md | ||
| CRUSH.md | ||
| Dockerfile | ||
| FEATURES.md | ||
| ISSUES.md | ||
| new-todo.md | ||
| PROMPTS.md | ||
| README.md | ||
| SECURITY.md | ||
| todo-chat.md | ||
| todo.md | ||
Ephemeral chat
This app will host a simple ephemeral chat interface. Nothing is stored on the server, the whole app runs in RAM. Chats are not saved.
Rust server (Dockerized)
- Build and run locally (foreground):
./run 8000 1
- Build and run mapped to a host port (daemon, then tail logs):
./run 8000 0
The Rust version is pinned in backend/rust-toolchain.toml, and both the Docker scripts and the Dockerfile builder read that file so local lint/build/test containers stay on the same toolchain.
Manual local build (optional)
If you have Rust installed via rustup:
cargo build --release- Run:
./target/release/ephemeral-chat
Environment variables honored (defaults in parentheses):
- EPHEMERAL_CHAT_DOMAIN ("localhost")
- EPHEMERAL_API ("http://localhost:8000")
- EPHEMERAL_CHAT_HOST_IP ("127.0.0.1")
- JITSI_URL ("meet.jit.si")
- MAX_SINGLE_UPLOAD_MB (50)
- MAX_ATTACHMENT_BYTES_TOTAL_MB (512)
- MAX_ATTACHMENTS_PER_ROOM (256)
- ATTACH_RELAY_TTL_SECONDS (90)
- DEFAULT_MSG_TTL_MINUTES (60)
- DEFAULT_MAX_PEERS_CONNECTED (2)
- RUST_LOG ("info,tower_http=info,axum=info")