MCPcopy Index your code
hub / github.com/cryptagon/ion-cluster

github.com/cryptagon/ion-cluster @v1.20.16-dogfood-20211202

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.20.16-dogfood-20211202 ↗ · + Follow
146 symbols 315 edges 21 files 62 documented · 42% updated 4y agov1.10.8 · 2021-08-17★ 33

Browse by type

Functions 120 Types & classes 26
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ION Cluster

ION Cluster is a clusterable and horizontally scalable SFU build on ion-sfu. It coordinates sessions between nodes, and provides a signal interface over a jsonrpc2 websocket.

It supports operating as a single node with no dependencies, or in clustered mode using etcd.

Dependencies

OSX

brew install pkg-config gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
# optionally
brew install gst-libav

Ubuntu

apt install -y pkg-config gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
# optionally
apt install -y gstreamer1.0-libav #supports more decoders for cli

Build

➜  ion-cluster git:(master) ✗ go build 
➜  ion-cluster git:(master) ✗ ./ion-cluster
A batteries included and scalable implementation of ion-sfu

Usage:
  ion-cluster [command]

Available Commands:
  client      Connect to an ion-cluster server as a client
  help        Help about any command
  server      start an ion-cluster server node

Flags:
      --config string   config file (default is $HOME/.cobra.yaml)
  -h, --help            help for ion-cluster
      --viper           use Viper for configuration (default true)

Use "ion-cluster [command] --help" for more information about a command.

Server

Run in local mode

./ion-cluster server -c cfgs/local.toml

Run in etcd mode

docker-compose up -d etcd

./ion-cluster server -c cfgs/config.toml       # Listens on :7000 
./ion-cluster server -c cfgs/config2.toml      # Listens on :7001

Client

IonCluster can act as a client and publish streams to a remote cluster

➜  ion-cluster git:(client) ✗ ./ion-cluster client --help
Connect to an ion-cluster server as a client

Usage:
  ion-cluster client [flags] <MEDIA FILE TO UPLOAD>

Flags:
  -h, --help           help for client
  -s, --sid string     session id to join (default "test-session")
  -t, --token string   jwt access token
  -u, --url string     sfu host to connect to (default "ws://localhost:7000")

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 65
Function 55
Struct 22
Interface 3
Class 1

Languages

Go89%
C11%

Modules by API surface

pkg/client/signal.go22 symbols
pkg/client/gst/gst.c16 symbols
pkg/client/gst/gst.go15 symbols
pkg/client/producer.go13 symbols
pkg/coordinator.go10 symbols
pkg/client/client.go10 symbols
pkg/client/gst/compositor.go9 symbols
pkg/session.go7 symbols
pkg/config.go7 symbols
pkg/server_jsonrpc.go6 symbols
pkg/coordinator_etcd.go6 symbols
cmd/root.go5 symbols

For agents

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

⬇ download graph artifact

Ask about this repo answers extend the page