{"id":17255362,"url":"https://github.com/krisnova/knobs","last_synced_at":"2025-06-24T04:33:20.042Z","repository":{"id":87263757,"uuid":"264301451","full_name":"krisnova/knobs","owner":"krisnova","description":"Kubernetes Native Open Broadcasting Software","archived":false,"fork":false,"pushed_at":"2020-05-18T19:38:38.000Z","size":21,"stargazers_count":37,"open_issues_count":8,"forks_count":2,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-14T06:08:07.166Z","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/krisnova.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-15T21:21:00.000Z","updated_at":"2022-02-07T10:18:49.000Z","dependencies_parsed_at":"2023-03-13T19:36:39.892Z","dependency_job_id":null,"html_url":"https://github.com/krisnova/knobs","commit_stats":null,"previous_names":["kris-nova/knobs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krisnova/knobs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisnova%2Fknobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisnova%2Fknobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisnova%2Fknobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisnova%2Fknobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krisnova","download_url":"https://codeload.github.com/krisnova/knobs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisnova%2Fknobs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261604293,"owners_count":23183622,"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-10-15T07:11:25.366Z","updated_at":"2025-06-24T04:33:20.019Z","avatar_url":"https://github.com/krisnova.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# knobs\nKubernetes Native Open Broadcasting Software\n\n_This is a work in progress. Pull requests accepted_\n\n## Our Message\n\n\u003e The world is changing. \n\u003e This means in-person events aren't going to be what they used to be. \n\u003e Right now there is a gap in the industry when it comes time to managing high quality digital events that are open, safe, fun, collaborative, and effective. \n\n\u003e Pre-recorded sessions and proprietary UDP based zoom calls will never be able to replace the energy of an in person event.\n\u003e As an open source engineer, and Kubernetes expert I believe our community can come together to solve this problem in a healthy and powerful way. \n\n\u003e This project is our work on doing just that.\n\n\u003e _Kris Nóva_\n\n## Project components\n\nThe `knobs` project will be composed of the following components that can be composed together for live production and recording on Kubernetes like systems.\n\n**Plugins**\n\nThese are small programs that define input and output mechanisms for knobs. These are things like Zoom streams, IRC bouncers, Slack bouncers, Video devices, HTML browsers, Images, Audio input.\n\nPlugins can either be of type `source`, `output`, or `encoder` build around the files in [`libobs`](https://github.com/obsproject/obs-studio/blob/master/libobs/).\n\n - [obs-output.h](https://github.com/obsproject/obs-studio/blob/master/libobs/obs-output.h)\n - [obs-source.h](https://github.com/obsproject/obs-studio/blob/master/libobs/obs-source.h)\n - [obs-encoder.h](https://github.com/obsproject/obs-studio/blob/master/libobs/obs-encoder.h)\n\n**Servers**\n\nServers speak the `rtmp` protocol as defined [here](https://wwwimages2.adobe.com/content/dam/acom/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf) and should listen by default on TCP port 1935.\n\nServers should both consume and broadcast data on the same TCP port. The RTMP protocol is very efficient and does not require very much overhead. Servers act as simple data transfer. \n\n**Clients**\n\nClients connect to servers using the `rtmp` protocol as defined [here](https://wwwimages2.adobe.com/content/dam/acom/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf) and will begin to stream their content.\n\n## Subprojects\n\nBelow are subprojects that will need to be built out.\n\n**CRDs**\n\nWe need to define an initial CRD representation of the header files describe in project components for `plugins`, `servers`, and `clients`.\n\n\n**OBS Bindings**\n\nWe need to wrap the plugin header files in Go and provide a working example of a simple plugin that will work with projects like OBS studio.\n\nWe should also support rust because rust is cool.\n\n## Philosophy\n\nEvery client will be responsible for managing their own outbound stream. Every client gets 1 stream and can use tools like OBS studio to compose their stream.\n\nReal time communications is out of scope for the initial proposal. Solve this component independently using POTs or other real time communications channels. We hope to support seamless realtime communication that takes full advantage of UDP in a future release but this will need to be designed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrisnova%2Fknobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrisnova%2Fknobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrisnova%2Fknobs/lists"}