Local-first, native multi-track recorder for podcasts, interviews, and shows.
Every mic, every camera, every screen. Captured as separate raw tracks on each participant's own machine. No cloud storage. No subscriptions. No browser.
Spacetime captures raw, unprocessed media from native desktop clients and transfers files peer-to-peer directly to a host's machine. Participants can be in the same room with multiple sources and/or remote across the internet.
The category Spacetime explicitly does not target is music recording. Music has fundamentally different latency, clock-sync, and signal-chain requirements.
- No browser media
- No cloud storage, hosting, or databases
- No processing applied to recorded files
- No subscription, no account, no telemetry by default
- Podcasters who want studio-quality multi-track output without cloud subscriptions
- Journalists conducting remote interviews where source audio shouldn't live on a vendor's servers
- Researchers and academics on managed machines that may block browser audio APIs
- In-person hosts using multiple mics and cameras
- Educators and YouTubers recording multi-cam content with screen capture
Spacetime is not for guests who need a one-click browser join link with no install. That audience is well-served by Riverside and Descript Rooms.
Builds for macOS, Linux, and Windows are published on the releases page.
Prerequisites: Rust (pinned by rust-toolchain.toml), Node.js 20+. On macOS, the
Xcode Command Line Tools (xcode-select --install) provide the C toolchain used to
build the bundled FFmpeg. No system FFmpeg install is required — the video build
compiles its own.
# Audio-only: records the mic and streams it peer-to-peer. Needs no FFmpeg.
cargo test # run the workspace tests
cargo run -p spacetime-app # launch the app (audio recording + call)
# Video: build a bundled LGPL FFmpeg once, then enable the `video` feature.
cargo xtask vendor-ffmpeg # builds third_party/ffmpeg (a few minutes)
cargo run -p spacetime-app --features videoThe video feature adds camera capture + H.264/fragmented-MP4 encoding and links the
bundled FFmpeg via FFMPEG_PKG_CONFIG_PATH (wired in .cargo/config.toml). The mic
records to WAV and the camera to MP4 as separate raw tracks, both transferred
progressively while recording — the encoder runs in low-delay mode and caps
fragments at one second, so video reaches the host continuously rather than in a
lump at the end. Already have an FFmpeg installed? See
CONTRIBUTING.md.
xcode-select --install # C toolchain + AVFoundation/VideoToolbox
cargo test # audio + transfer, fully offline
cargo run -p spacetime-app # audio-only app
cargo xtask vendor-ffmpeg # optional: bundle FFmpeg for video
cargo run -p spacetime-app --features videoThe peer-to-peer transfer uses the n0 relay + discovery network by default, so a host and guest on different machines/networks connect without any manual port setup. Tests use an offline loopback transport and never touch the network.
See CONTRIBUTING.md for full dev setup.
| Version | Focus |
|---|---|
| v0.5 | 2–4 person remote sessions, one audio + one video source per participant, macOS + Linux |
| v0.6 | Multi-source audio per participant (multi-mic in-person setups) |
| v0.7 | Screen capture, system audio, multi-window |
| v0.8 | Multi-camera, live video mixing |
| v1.0 | Hybrid sessions, polish, comprehensive docs |
- ARCHITECTURE.md — system design and invariants
- CONTRIBUTING.md — dev setup, MSRV policy, sad-path-first project value
- docs/ — full documentation (served via GitHub Pages)
Spacetime is supported by GitHub Sponsors and Open Source Collective.
Apache 2.0 — see LICENSE. Includes an explicit patent grant.