Thanks to visit codestin.com
Credit goes to github.com

Skip to content

okdaichi/qumo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

qumo

CI Go Report Card License

qumo is a Media over QUIC (MoQ) relay server and CDN implementation, providing high-performance media streaming over the QUIC transport protocol.

Features

  • πŸš€ 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)

Quick Start

Prerequisites

  • Go 1.21 or higher
  • Basic understanding of QUIC protocol

Installation

go install github.com/okdaichi/qumo/cmd/qumo-relay@latest

Building from Source

git clone https://github.com/okdaichi/qumo.git
cd qumo
go build -o bin/qumo-relay ./cmd/qumo-relay

Running the 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.yaml

Configuration

See 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"

Project Structure

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

Documentation

Monitoring

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

Development

Running Tests

# Run all tests
go test ./...

# Run tests with coverage
go test -coverprofile=coverage.out ./...

# Run tests with race detector
go test -race ./...

Linting

golangci-lint run

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Community

  • Discussions - Ask questions and discuss ideas
  • Issues - Report bugs and request features

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Acknowledgments

  • Media over QUIC (MoQ) Working Group
  • IETF QUIC Working Group

Status

⚠️ This project is under active development. APIs and features may change.

About

Implementation of MoQ-powered media relay

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages