ZachMoreno/spacetime

desktop native multiplayer recorder for podcasts, interviews, and shows

★ 0Forks 0RustGitHub ↗Compare

README

Spacetime

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.

License Build


What it is

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.

Principles

  • No browser media
  • No cloud storage, hosting, or databases
  • No processing applied to recorded files
  • No subscription, no account, no telemetry by default

Who it's for

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

Download

Builds for macOS, Linux, and Windows are published on the releases page.

Building from source

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 video

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

Testing on Apple Silicon (M1/M2/M3)

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 video

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

Roadmap

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

Documentation

  • ARCHITECTURE.md — system design and invariants
  • CONTRIBUTING.md — dev setup, MSRV policy, sad-path-first project value
  • docs/ — full documentation (served via GitHub Pages)

Sponsors

Spacetime is supported by GitHub Sponsors and Open Source Collective.

License

Apache 2.0 — see LICENSE. Includes an explicit patent grant.

Contributors

claudeZachMoreno

Issues