atm0s-media-server is a Rust workspace for a decentralized low-latency media server. The current runtime is a single binary with multiple server modes that can run together in standalone mode or as separate console, gateway, connector, and media nodes.
The project is in a refactoring-era state around sans-io-runtime. Trust the source tree over older nested docs where they disagree.
The binary is atm0s-media-server from bin/.
Current subcommands:
standalone: starts in-process console, gateway, connector, and media nodes for local development.console: serves the console UI/API and SDN cluster views.gateway: serves token APIs, WebRTC/WHIP/WHEP/RTPengine media APIs, node APIs, metrics APIs, and sample assets.media: runs media workers and WebRTC/RTPengine transports.connector: stores connector events in SQL storage and handles record/hook related connector work.cert: writes self-signed certificate/key files for QUIC-related development utilities.Implemented source-backed integrations include WebRTC SDK protobuf APIs, WHIP, WHEP, RTPengine-style APIs, recording upload/convert components, connector hooks, console APIs, and multi-tenancy sync storage. RTMP and SIP are not current in-repo server modes or transport crates.
Prerequisites:
1.84.0 with rustfmt and clippy from rust-toolchain.toml.libsoxr-dev, libopus-dev, and libssl-dev.protoc for all-features builds.wget if using download-geodata.sh.Download the GeoIP database used by gateway routing:
./download-geodata.sh
Run a local standalone stack from the bin/ directory. Running from bin/ also matches the debug sample asset path used by the HTTP server:
cd bin
cargo run -- \
--sdn-zone-node-id 1 \
--workers 1 \
standalone \
--geo-db ../maxminddb-data/GeoLite2-City.mmdb \
--max-cpu 100 \
--max-memory 100 \
--max-disk 100
Default local ports in standalone mode:
http://localhost:8080http://localhost:3000Useful API docs are served by running nodes:
http://localhost:3000/token/uihttp://localhost:3000/whip/uihttp://localhost:3000/whep/uihttp://localhost:3000/webrtc/uihttp://localhost:3000/rtpengine/uihttp://localhost:3000/api/node/uihttp://localhost:3000/api/metrics/uiFrom the repository root:
cargo build --release --package atm0s-media-server
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features --workspace
Frontend console commands live in packages/media_console_front/react-app:
pnpm install
pnpm lint
pnpm build
Start with these current top-level docs:
The mdBook source is docs/** and the generated output is book/**. Do not edit book/** manually.
--http-tls is parsed by the CLI, but it is not passed into the inspected HTTP server startup paths.--rtpengine-cmd-addr is parsed by gateway args, but no runtime use was found in the inspected gateway flow.See CONTRIBUTING.md and docs/CONTRIBUTING.md.
This project is licensed under the MIT License. See LICENSE.