microclimate consists of four components:
- LiveKit, either self or cloud-hosted
- An AT Protocol OAuth2 provider (PDS)
- A server, written in Rust
- A desktop client, written in Rust and TypeScript via Tauri
The first two components are not developed by us, so they will not be detailed here.
Server
Responsibilities
- Handling request authorization and user permissions
- Managing LiveKit rooms
- Generating temporary LiveKit credentials
- Persisting channel structure and chat messages
Stack
- Rust
- tokio
- Tonic and gRPC
- SQLite and SQLx
- livekit_api crate
Desktop Client
Responsibilities
- Handling user login
- Displaying server state
- Sending/receiving audio data to/from LiveKit connections
- Managing user audio settings (volume, suppression)
Stack
- Tauri
- React/react-router
- Rust
- cpal/rubato
- livekit
- wasapi-rs?
- silero-vad?
- video-capture?