{"id":20310990,"url":"https://github.com/progrium/qmux","last_synced_at":"2025-04-07T09:20:06.005Z","repository":{"id":52165057,"uuid":"354107379","full_name":"progrium/qmux","owner":"progrium","description":"wire protocol for multiplexing connections or streams into a single connection, based on a subset of the SSH Connection Protocol","archived":false,"fork":false,"pushed_at":"2022-03-20T19:10:03.000Z","size":115,"stargazers_count":224,"open_issues_count":4,"forks_count":45,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-04-14T02:21:28.224Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/progrium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"progrium"}},"created_at":"2021-04-02T18:55:15.000Z","updated_at":"2024-03-20T14:32:24.000Z","dependencies_parsed_at":"2022-09-25T11:53:16.990Z","dependency_job_id":null,"html_url":"https://github.com/progrium/qmux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fqmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fqmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fqmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fqmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/progrium","download_url":"https://codeload.github.com/progrium/qmux/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247622983,"owners_count":20968575,"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-14T17:35:21.826Z","updated_at":"2025-04-07T09:20:05.975Z","avatar_url":"https://github.com/progrium.png","language":"Go","funding_links":["https://github.com/sponsors/progrium"],"categories":[],"sub_categories":[],"readme":"# qmux\n\nqmux is a wire protocol for multiplexing connections or streams into a single connection. It is based on the [SSH Connection Protocol](https://tools.ietf.org/html/rfc4254#page-5), which is the simplest, longest running, most widely deployed TCP multiplexing protocol with flow control. \n\nIt is meant as a drop-in layer for any stream capable transport (TCP, WebSocket, stdio, etc) to provide basic multiplexing. This brings any connection API to rough semantic parity with [QUIC](https://en.wikipedia.org/wiki/QUIC) multiplexing, so it can act as a stopgap or fallback when QUIC is not available. You can then design higher level protocols based on multiplexing semantics that sit on top of QUIC or any other streaming transport with qmux.\n\n## Spec\n\nThe specification is [here](https://github.com/progrium/qmux/blob/main/SPEC.md). It is a simplified version of the [Channel Mechanism](https://tools.ietf.org/html/rfc4254#page-5) in the SSH Connection Protocol.\n\n## Implementations\n\n- [x] [Golang](https://github.com/progrium/qmux/tree/main/golang) (best reference)\n- [x] [TypeScript](https://github.com/progrium/qmux/tree/main/typescript)\n- [ ] Python\n- [ ] C# (help wanted)\n\n## Demos\n\n- [groktunnel](https://github.com/progrium/qmux/tree/main/demos/groktunnel): Ephemeral localhost public forwarding system for HTTP similar to Ngrok in less than 150 lines of Go.\n\n## About\n\nLicensed MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrium%2Fqmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogrium%2Fqmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrium%2Fqmux/lists"}