{"id":50513783,"url":"https://github.com/agash/syphon.net","last_synced_at":"2026-06-02T22:01:39.247Z","repository":{"id":361338366,"uuid":"1254094686","full_name":"Agash/Syphon.NET","owner":"Agash","description":"NativeAOT-friendly .NET bindings for Syphon on macOS: publish and receive video frames between apps zero-copy over IOSurface-backed Metal textures (the shared-texture mechanism OBS and creative tools use).","archived":false,"fork":false,"pushed_at":"2026-05-30T07:13:29.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T08:11:34.450Z","etag":null,"topics":["csharp","dotnet","interop","iosurface","macos","metal","nativeaot","obs","syphon","video"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Agash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Agash"]}},"created_at":"2026-05-30T06:18:19.000Z","updated_at":"2026-05-30T07:13:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Agash/Syphon.NET","commit_stats":null,"previous_names":["agash/syphon.net"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Agash/Syphon.NET","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Agash%2FSyphon.NET","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Agash%2FSyphon.NET/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Agash%2FSyphon.NET/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Agash%2FSyphon.NET/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Agash","download_url":"https://codeload.github.com/Agash/Syphon.NET/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Agash%2FSyphon.NET/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33838221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["csharp","dotnet","interop","iosurface","macos","metal","nativeaot","obs","syphon","video"],"created_at":"2026-06-02T22:01:38.062Z","updated_at":"2026-06-02T22:01:39.238Z","avatar_url":"https://github.com/Agash.png","language":"C#","funding_links":["https://github.com/sponsors/Agash"],"categories":[],"sub_categories":[],"readme":"# Syphon.NET\n\n.NET bindings for [Syphon](https://syphon.info), the macOS framework for sharing video frames\nbetween applications in real time. Publish frames for other apps to pick up, or receive frames\nanother app is sharing, with no pixel copies in between. Works with OBS, Resolume, TouchDesigner,\nand other tools that speak Syphon.\n\n## Requirements\n\n- macOS on Apple Silicon or Intel, with a Metal-capable GPU.\n- .NET 10 (or .NET 11).\n\n## Install\n\n```sh\ndotnet add package Syphon.NET\n```\n\nThe package bundles the native helper it needs; there is nothing else to install.\n\n## Publish\n\n```csharp\nusing Syphon.NET;\n\nusing var server = new SyphonServer(\"My Output\");\n\n// From CPU pixels (BGRA):\nserver.PublishPixels(bgraPixels, width: 1920, height: 1080);\n\n// Or from a GPU IOSurface you already hold (zero-copy), e.g. a VideoToolbox CVPixelBuffer:\nserver.Publish(surface);\n```\n\nIn OBS, add a **Syphon Client** source and choose \"My Output\".\n\n## Receive\n\n```csharp\nusing Syphon.NET;\n\nusing var directory = new SyphonServerDirectory();\n\n// An app with a Cocoa run loop (MAUI/AppKit) discovers automatically. A plain console or server\n// process pumps the run loop so discovery notifications arrive:\ndirectory.PumpEvents(TimeSpan.FromMilliseconds(200));\n\nusing var client = directory.CreateClient(index: 0);\n\nusing SyphonFrame? frame = client.TryGetFrame();\nif (frame is not null)\n{\n    int w = frame.Surface.Width, h = frame.Surface.Height;\n    byte[] pixels = new byte[w * h * 4];\n    frame.CopyTo(pixels);\n}\n```\n\nEach frame is backed by an `IOSurface` (`frame.Surface.Handle`), so you can read it on the CPU as\nshown or hand it straight to VideoToolbox for a zero-copy hardware encode.\n\n## Building from source\n\n```sh\ngit clone --recursive https://github.com/Agash/Syphon.NET\ncd Syphon.NET\nbash native/build-native.sh\ndotnet build Syphon.NET.slnx\ndotnet test\n```\n\nThe native helper compiles the Syphon framework (a git submodule) and a small shim into one\nuniversal binary; the managed library is plain `net10.0` / `net11.0`.\n\n## License\n\nMIT. See [LICENSE](LICENSE). Bundled Syphon framework code is BSD licensed; see\n[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagash%2Fsyphon.net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagash%2Fsyphon.net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagash%2Fsyphon.net/lists"}