qumo is a Media over QUIC (MoQ) relay server and CDN implementation, providing high-performance media streaming over the QUIC transport protocol.
- π High-performance media relay using QUIC
- π‘ Support for Media over QUIC protocol
- π Built-in TLS/security support
- π Prometheus metrics for monitoring
- βοΈ Flexible YAML-based configuration
- π³ Docker support (coming soon)
- Go 1.21 or higher
- Basic understanding of QUIC protocol
go install github.com/okdaichi/qumo/cmd/qumo-relay@latestgit clone https://github.com/okdaichi/qumo.git
cd qumo
go build -o bin/qumo-relay ./cmd/qumo-relay# Copy the example configuration
cp configs/config.example.yaml config.yaml
# Edit the configuration as needed
# vim config.yaml
# Run the relay server
./bin/qumo-relay --config config.yamlSee configs/config.example.yaml for a complete configuration example with detailed comments.
Basic configuration structure:
server:
address: "0.0.0.0:4433"
tls:
cert_file: "certs/server.crt"
key_file: "certs/server.key"
relay:
max_connections: 1000
read_buffer_size: 65536
write_buffer_size: 65536
logging:
level: "info"
format: "json"
output: "stdout"
monitoring:
enabled: true
address: "0.0.0.0:9090"
path: "/metrics"qumo/
βββ cmd/
β βββ qumo-relay/ # Main relay server application
βββ internal/ # Private application code
βββ pkg/ # Public library code
βββ docs/ # Documentation
βββ configs/ # Configuration examples
βββ monitoring/ # Monitoring and observability configs
βββ .github/ # GitHub templates and workflows
βββ README.md
qumo exposes Prometheus metrics at the /metrics endpoint (default port 9090).
Available metrics (to be documented as implemented):
- Connection statistics
- Throughput metrics
- Error rates
- Latency measurements
# Run all tests
go test ./...
# Run tests with coverage
go test -coverprofile=coverage.out ./...
# Run tests with race detector
go test -race ./...golangci-lint runWe welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Discussions - Ask questions and discuss ideas
- Issues - Report bugs and request features
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Media over QUIC (MoQ) Working Group
- IETF QUIC Working Group