Caper Chat - https://caper.chat
Use it in the browser at caper.chat, or install an app. All builds are on the latest release.
| Platform | How to install |
|---|---|
| Mac | Download the Apple Silicon or Intel .dmg, drag Caper onto Applications, then open it from Applications. |
| Windows | Download and run Setup. It installs for your user and opens Caper. |
| Linux | Download the .deb (Ubuntu 24.04 or compatible), open it in your software installer, then launch Caper from the app menu. |
| iPhone | Join the TestFlight beta and install through TestFlight. |
| Android | Join the testers group, opt in on Google Play, then install Caper from Play. No Google Play? Use the APK (it doesn't update itself). |
- API owns accounts, spaces, channels and messages. Messages are written to Postgres with an outbox.
- Gateway is the same Rust binary run with
--gateway. It holds one WebSocket per tab or app and pushes live messages, typing, presence and call rosters. Valkey fans events out across pods. - Voice audio goes straight between clients and Cloudflare's SFU. It never passes through AWS.
- Files upload straight to R2 with presigned URLs. The API checks them and strips their metadata, and the CDN Worker serves them through signed, expiring links.
- Link previews are fetched by the Embed Worker on Cloudflare, so links people post are never fetched from inside the cluster.
- Spaces with text and voice channels, private channels and invite links
- Direct messages and a Notifications inbox for unread messages, mentions, replies, reactions and invitations
- Threads, pins, forwarding, editing and deleting messages
- File and media attachments, with an editor to crop, draw and add text
- Link previews for X, TikTok, YouTube, Instagram and most other sites, with video playing in Caper
- Voice messages with automatic transcripts, and AI dictation into any composer
- GIFs and stickers from KLIPY in every composer
- Profile pictures and space icons
@feedbackin any conversation to reach the Caper team
You'll need Node.js 24, npm 11+, Docker Compose and Rust 1.99.
npm ci
npm run devOpen http://localhost:3000/login. Compose runs the web app, API, gateway and Valkey.
It loads its settings, listed in .env.example, from AWS, so it needs
AWS credentials.
Checks:
npm run check # lint, format check, build, typecheck
npm test # unit tests
npm run fmt # format JS/TS/CSS
cargo fmt --all -- --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warningsPython tooling uses uv and Ruff:
uv run --locked ruff check .
uv run --locked ruff format --check .
uv run --locked python -m unittest discover -s tests -p 'test_*.py' -v- apps/web — TanStack Start web app
- apps/api — Rust API and WebSocket gateway
- apps/native — Android, Apple and desktop clients
- shared — shared design tokens