{"id":20217955,"url":"https://github.com/matrix-org/waterfall","last_synced_at":"2025-06-26T05:03:53.439Z","repository":{"id":37475921,"uuid":"475697213","full_name":"matrix-org/waterfall","owner":"matrix-org","description":"A cascading stream forwarding unit for scalable, distributed voice and video conferencing over Matrix","archived":false,"fork":false,"pushed_at":"2023-04-27T17:16:56.000Z","size":756,"stargazers_count":103,"open_issues_count":35,"forks_count":5,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-10T16:07:03.674Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matrix-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-30T02:55:14.000Z","updated_at":"2025-01-24T21:39:39.000Z","dependencies_parsed_at":"2024-06-19T17:53:47.789Z","dependency_job_id":null,"html_url":"https://github.com/matrix-org/waterfall","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/matrix-org/waterfall","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fwaterfall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fwaterfall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fwaterfall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fwaterfall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matrix-org","download_url":"https://codeload.github.com/matrix-org/waterfall/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fwaterfall/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262003966,"owners_count":23243350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T06:36:36.459Z","updated_at":"2025-06-26T05:03:53.421Z","avatar_url":"https://github.com/matrix-org.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Waterfall\n\n## Why\n\nWaterfall is a cascaded, decentralised SFU. The intention is to be a\nimplementation of Matrix's [MSC3898: Native Matrix VoIP signalling for cascaded\nfoci (SFUs, MCUs...)](https://github.com/matrix-org/matrix-spec-proposals/pull/3898).\nThis example is self contained and doesn't require any external software. The\nproject was informed by the following goals.\n\n* **Easy Scaling** - SFU count can be grown/shrunk as users arrive. We don't\n  scale on the dimension of calls making things easier.\n* **Shorter Last Mile** - Users can connect to SFUs closest to them. Links `SFU\n  \u003c-\u003e SFU` are higher quality then public hops.\n* **Flexibility in WebRTC server choice** - All communication takes place using\n  standard protocols/formats. You can use whatever server software best fits\n  your needs.\n* **Client Simplicity** - Clients will need to be created on lots of platforms.\n  We should aim to use native WebRTC features as much as possible.\n\nThis project is at an early stage and implements the MSC only roughly - given\nthe current experimental nature of this projects, it deviates in certain areas\nfrom the MSC.\n\n## How\n\n### Configuration\n\n* `cp config.sample.yaml config.yaml`\n* Fill in `config.yaml`\n\n### Running\n\n* `./scripts/run.sh`\n* Access at \u003chttp://localhost:8080\u003e\n\n### Profiling\n\n* `./scripts/profile.sh`\n* Access at \u003chttp://localhost:8080\u003e\n\n### Building\n\n* `./scripts/build.sh`\n* `./dist/bin`\n* Access at \u003chttp://localhost:8080\u003e\n\n## Docker\n\n### Building docker image\n\nIn order to build a docker image, run the following in the root directory:\n\n`$ docker build . -t matrix/waterfall`\n\n### Running docker image\n\n#### Easy Way\n\nJust use `docker-compose up` and you're good to go.\n\nOr `docker-compose up -d` if you're running it on a server in a detached state.\n\nYou can then find your container ID by checking `docker container ls`.\n\nWhich could then be used to e.g. check the container logs with `docker container logs \u003cID\u003e`.\n\nIf you're developing locally, you can replace the path to the image with your own image tag, e.g. `matrix/waterfall`.\n\n#### Hard Way\n\nTo run the image from the current directory assuming that there is a `config.yaml`:\n\n```sh\ndocker run \\\n    -v $(pwd)/config.yaml:/config.yaml \\\n    --network host \\\n    -it --rm matrix/waterfall \\\n    sfu --config config.yaml\n```\n\n## _Element Call_ with SFU locally\n\nYou can find an example for a local VoIP setup with _Element Call_ and _SFU_ here: [local environment setup](doc/development.md)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fwaterfall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrix-org%2Fwaterfall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fwaterfall/lists"}