Skip to content

Server (Rust)

Best for a Linux server, homelab or VPS. Image lutgaru/sinsajo-server from Docker Hub, models/records persisted.

docker-compose.yml
services:
sinsajo-server:
image: lutgaru/sinsajo-server:latest
ports: ["8765:8765"]
volumes:
- sinsajo_models:/app/models
- sinsajo_records:/app/records
restart: unless-stopped
volumes:
sinsajo_models:
sinsajo_records:
Terminal window
docker compose up -d

Or pin a tag: lutgaru/sinsajo-server:latest or server/v* tag. Pass args after image: ... lutgaru/sinsajo-server:latest --model Canary180M --autodownload-model.

Auto-download handles ~2–3GB on first run. Subsequent starts ~2–3s. Override dirs with --model-dir / --records-dir.

Current models: ParakeetTDT (TDT 0.6B, English) and Canary180M (Canary 180M Flash, multilingual). Edit server/src/config.rs to add more.

use transcribe_rs::{set_ort_accelerator, OrtAccelerator};
set_ort_accelerator(OrtAccelerator::Cuda); // or Auto

Canary supports target_language from client start message. Server forwards to transcribe_with:

model.transcribe_with(&samples, &CanaryParams {
language: Some("es".to_string()),
target_language: Some("en".to_string()),
..Default::default()
})?;

Parakeet is English-only and ignores the target language. See Protocol.

  • Models: models/ (or --model-dir)
  • Recordings: records/ (WAV/OGG, triggered by client clean)
  • Config: sinsajo-config.json (persists last chosen model)

The server is not deployed to GitHub Pages (static). Run it on your LAN, VPS, fly.io / Railway, etc. with Docker or a binary. Expose 8765 and point clients to ws://YOUR_IP:8765 or wss:// behind a reverse proxy (Caddy/Nginx). For remote access consider Tailscale/WireGuard.

x86_64 Windows/Linux

Precompiled binary — fastest without Docker.

Other arch

Cargo build — any arch/OS meeting Rust minimums.

Linux server

Docker Compose / CLI — recommended for homelab.