{"id":39225013,"url":"https://github.com/scrayosnet/passage","last_synced_at":"2026-02-14T22:20:43.280Z","repository":{"id":296700965,"uuid":"925387005","full_name":"scrayosnet/passage","owner":"scrayosnet","description":"Minecraft Server Transfer Router to connect your Minecraft servers to the internet without any proxy or state.","archived":false,"fork":false,"pushed_at":"2026-02-04T10:56:52.000Z","size":1457,"stargazers_count":13,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-04T22:51:01.555Z","etag":null,"topics":["docker","kubernetes","minecraft","minecraft-java","minecraft-java-edition","minecraft-network","minecraft-proxy","minecraft-server-proxy","minecraft-transfer","networking","router","rust","server-proxy","transfer"],"latest_commit_sha":null,"homepage":"https://passage.scrayos.net","language":"Rust","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/scrayosnet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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}},"created_at":"2025-01-31T19:28:08.000Z","updated_at":"2026-02-04T10:50:54.000Z","dependencies_parsed_at":"2026-01-22T00:01:16.905Z","dependency_job_id":null,"html_url":"https://github.com/scrayosnet/passage","commit_stats":null,"previous_names":["scrayosnet/passage"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/scrayosnet/passage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fpassage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fpassage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fpassage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fpassage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scrayosnet","download_url":"https://codeload.github.com/scrayosnet/passage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fpassage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29336029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T14:34:07.188Z","status":"ssl_error","status_checked_at":"2026-02-11T14:34:06.809Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","kubernetes","minecraft","minecraft-java","minecraft-java-edition","minecraft-network","minecraft-proxy","minecraft-server-proxy","minecraft-transfer","networking","router","rust","server-proxy","transfer"],"created_at":"2026-01-17T23:34:16.675Z","updated_at":"2026-02-11T15:03:38.466Z","avatar_url":"https://github.com/scrayosnet.png","language":"Rust","readme":"![The official Logo of passage](.github/images/logo.png \"passage\")\n\n![A visual badge for the latest release](https://img.shields.io/github/v/release/scrayosnet/passage \"Latest Release\")\n![A visual badge for the workflow status](https://img.shields.io/github/actions/workflow/status/scrayosnet/passage/docker.yml \"Workflow Status\")\n![A visual badge for the dependency status](https://img.shields.io/librariesio/github/scrayosnet/passage \"Dependencies\")\n![A visual badge for the Docker image size](https://ghcr-badge.egpl.dev/scrayosnet/passage/size \"Image Size\")\n![A visual badge for the license](https://img.shields.io/github/license/scrayosnet/passage \"License\")\n\nPassage is a Minecraft network [transfer][transfer-packet] router to send connecting players to their corresponding\nservers and act as an entrypoint to the network. While traditional Minecraft networks relied on proxies like\n[BungeeCord][bungeecord-docs], [Waterfall][waterfall-docs] or [Velocity][velocity-docs], Passage is only an entrypoint\nand initial router and drops the connection to the player right after the routing, improving performance and reliability\nin the process.\n\nThis is possible through the [transfer packet][transfer-packet] of the official Minecraft: Java Edition\n[protocol]. Passage validates connecting players, handles authentication, resource pack installation and status pings\nand then redirects the players to any dynamic backend server. Since the [transfer packet][transfer-packet] was only\nadded in Minecraft [1.20.5][minecraft-1-20-5], Passage can only handle Minecraft clients starting from this version.\n\n## Motivation\n\nDespite the universal success and reliability of conventional proxies like [Velocity][velocity-docs],\n[Waterfall][waterfall-docs] and [BungeeCord][bungeecord-docs], the general concept of a proxy that transcribes all\npackages brings a lot of problems with it. Since those problems are inherent to the concept itself, this cannot be\nsolved by patching the existing proxies, but instead a new kind of network has to be created.\n\nTraditional proxies need to transcode all Minecraft packets and adjust the contents to be consistent for the player's\nconnection. Switching servers is simulated by switching worlds. This means that proxies need to be updated for each\niteration of the Minecraft protocol and new versions are only supported after said update. Additionally, this\ntranscribing limits the possible throughput and requires additional computing resources as well as a slightly increased\nlatency.\n\nAnother problem with proxies is the scalability. Running a single instance is easy and will suffice for most networks,\nbut once a network has enough players, the territory of multi-proxy setups needs to be explored. This comes with its own\nset of problems and complexity. But even if one proxy is able to host enough players, there are still risks of using\nonly a single proxy. Having no replication creates a single point of failure and all connections need to be dropped, if\nthe proxy is restarted, disconnecting all players in the process.\n\nFinally, conventional proxies have problems to preserve the Mojang chat signature chain because they need to transcode\nall messages and inject their own messages into the chat. While there are a few rumors around chat signing, there are\n[many good reasons][chat-signing-explanation] to support chat signing. While it is not entirely impossible to use chat\nsigning with proxies, there is just a lot of inherent complexity and lots of things that can go wrong. With a transfer\nbased approach, chat signing is supported out-of-the-box.\n\nYou can find a [detailed comparison][passage-comparison] with more aspects on our website.\n\n## Feature Highlights\n\n* Connect your Minecraft network without any proxy or permanent connection with excellent reliability and performance, ready within seconds.\n* Route your players to dynamic servers using Service discovery and an algorithm of your preference.\n* Stay always online and drop no player connections during your maintenance or partial outages.\n* Authenticate and validate your players with custom logic, to prevent any load from your backend servers.\n* Prepare your players even before they reach your server, making sure the desired resource packs are loaded.\n* Be ready for the next Minecraft version, without any necessity to update Passage beforehand.\n* Support Mojang chat signing for a better protection of your players and advanced chat features.\n\nVisit [our website][passage-website] to get a full overview over Passage's features.\n\n## Getting Started\n\n\u003e [!WARNING]\n\u003e Passage is under active development and may experience breaking changes until the stable version 1.0.0 is released.\n\u003e After that version, breaking changes will be performed in adherence to [Semantic Versioning][semver-docs].\n\nInstall your own instance of Passage within seconds with our [Getting Started Guide][passage-guide] on our website. You\ncan also find more information on how to configure, optimize and embed Passage in your network there.\n\n## Reporting Security Issues\n\nTo report a security issue for this project, please note our [Security Policy][security-policy].\n\n## Code of Conduct\n\nParticipation in this project comes under the [Contributor Covenant Code of Conduct][code-of-conduct].\n\n## How to contribute\n\nThanks for considering contributing to this project! In order to submit a Pull Request, please read\nour [contributing][contributing-guide] guide. This project is in active development, and we're always happy to receive\nnew contributions!\n\n## License\n\nThis project is developed and distributed under the MIT License. See [this explanation][mit-license-doc] for a rundown\non what that means.\n\n[passage-website]: https://passage.scrayos.net\n\n[passage-guide]: https://passage.scrayos.net/docs/getting-started\n\n[passage-comparison]: https://passage.scrayos.net/docs/comparison\n\n[chat-signing-explanation]:https://gist.github.com/kennytv/ed783dd244ca0321bbd882c347892874\n\n[protocol-docs]: https://minecraft.wiki/w/Java_Edition_protocol/Packets\n\n[minecraft-1-20-5]: http://minecraft.wiki/w/1.20.5\n\n[rust-docs]: https://www.rust-lang.org/\n\n[kubernetes-docs]: https://kubernetes.io/\n\n[pvn-docs]: https://wiki.vg/Protocol_version_numbers\n\n[transfer-packet]: https://minecraft.wiki/w/Java_Edition_protocol/Packets#Transfer_(configuration)\n\n[bungeecord-docs]: https://github.com/SpigotMC/BungeeCord\n\n[waterfall-docs]: https://github.com/PaperMC/Waterfall\n\n[velocity-docs]: https://github.com/PaperMC/Velocity\n\n[semver-docs]: https://semver.org/lang/de/\n\n[github-releases]: https://github.com/scrayosnet/passage/releases\n\n[github-ghcr]: https://github.com/scrayosnet/passage/pkgs/container/passage\n\n[helm-chart-docs]: https://helm.sh/\n\n[kustomize-docs]: https://kustomize.io/\n\n[security-policy]: SECURITY.md\n\n[code-of-conduct]: CODE_OF_CONDUCT.md\n\n[contributing-guide]: CONTRIBUTING.md\n\n[mit-license-doc]: https://choosealicense.com/licenses/mit/\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrayosnet%2Fpassage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscrayosnet%2Fpassage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrayosnet%2Fpassage/lists"}