Skip to content
joswayskiPublic

About

A place for your people to chat about anything

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,288 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Caper Chat - https://caper.chat

Install

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).

Architecture

Caper architecture: clients reach the Rust API, gateway and web server on AWS through Cloudflare Tunnel; voice, files and link previews run on Cloudflare; data lives in PlanetScale Postgres with Valkey for fanout

  • 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.

Features

  • 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
  • @feedback in any conversation to reach the Caper team

Development

You'll need Node.js 24, npm 11+, Docker Compose and Rust 1.99.

npm ci
npm run dev

Open 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 warnings

Python 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

Repository

Documentation

About

A place for your people to chat about anything

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages