MCPcopy Index your code
hub / github.com/VincentVerdynanta/utsuru

github.com/VincentVerdynanta/utsuru @v0.2.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.1 ↗ · + Follow
509 symbols 1,470 edges 24 files 34 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Icon of utsuru utsuru

License CI Crates.io Deps.rs Discord

A screenshot of utsuru's Web UI

Overview

utsuru is a WebRTC utility that accepts track packets from a single source and forwards it to multiple mirrors.

Some situations you might want to use utsuru include:

  • You want to broadcast to Discord without being limited to screen sharing.
  • You want to broadcast a single feed to multiple Discord calls simultaneously.
  • You want to use OBS to broadcast to a WebRTC remote peer that does not provide a WHIP endpoint.

Features

  • Portable and lightweight:
  • The entire application fits in a single binary.
  • Minimal CPU and memory footprint.
  • Web UI and REST API for managing mirrors.
  • Track packets are sent from source to mirrors as is, no transcoding.
  • Discord Live is implemented using the WebRTC protocol (same as Discord web client).

Installation

With cargo

$ cargo install utsuru

Binaries on Windows, Linux, and macOS

You can download prebuilt utsuru from Github Releases.

CLI

Usage: utsuru [OPTIONS]

Options:
  -h, --host <host>                Specify bind address [default: 127.0.0.1]
  -p, --port <port>                Specify port to listen on [default: 3000]
  -v, --verbosity <verbosity>      Log verbosity [default: off]
      --completions <completions>  Print shell completion script for <shell> [possible values: bash, elvish, fish, powershell, zsh]
      --help                       Print help
  -V, --version                    Print version

Getting started

See docs/getting-started.md for basic usage.

Adapters

Mirrors

  • [X] Discord Live

Sources

  • [X] WHIP

Video codecs

  • [X] H.264
  • [ ] H.265
  • [ ] VP8
  • [ ] VP9
  • [ ] AV1

Join us

Thanks for your involvement in developing this project! We are so happy to have you! To get started, don't hesitate to check our

  • Discord: Real-time Broadcast Discord server.

Code of Conduct

This project has adopted the Rust Code of Conduct. Please check CODE_OF_CONDUCT.md for more details.

The entire utsuru community is expected to abide by the code of conduct when contributing or participating in discussions.

License

This project is licensed under the MIT License - see the [LICENSE] file for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in utsuru by you, shall be licensed as MIT, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

ErrorInner (Interface)
(no doc) [1 implementers]
src/sources/whip.rs
Mirror (Interface)
(no doc) [1 implementers]
src/mirrors/mod.rs
ErrorInner (Interface)
(no doc) [1 implementers]
src/mirrors/discord/endpoint.rs
ErrorInner (Interface)
(no doc) [1 implementers]
src/mirrors/discord/mod.rs
ErrorInner (Interface)
(no doc) [1 implementers]
src/mirrors/discord/gateway.rs
ErrorInner (Interface)
(no doc) [1 implementers]
src/mirrors/discord/dave.rs

Core symbols most depended-on inside this repo

y
called by 58
web_dist/bundle.js
write_u
called by 54
src/utils/h264_synthesizer.rs
push
called by 45
src/utils/io.rs
read_bit
called by 36
src/utils/bitstream.rs
S
called by 35
web_dist/bundle.js
get
called by 34
web_dist/bundle.js
T
called by 33
web_dist/bundle.js
I
called by 31
web_dist/bundle.js

Shape

Function 325
Method 125
Class 37
Enum 15
Interface 7

Languages

TypeScript63%
Rust37%

Modules by API surface

web_dist/bundle.js321 symbols
src/utils/bitstream.rs33 symbols
src/utils/h264_parser.rs28 symbols
src/utils/h264_synthesizer.rs25 symbols
src/mirrors/discord/mod.rs21 symbols
src/sources/whip.rs16 symbols
src/bin/main.rs14 symbols
src/mirrors/discord/endpoint.rs11 symbols
src/utils/io.rs9 symbols
src/mirrors/discord/gateway.rs9 symbols
src/mirrors/discord/dave.rs7 symbols
src/error.rs5 symbols

For agents

$ claude mcp add utsuru \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page