{"id":43389431,"url":"https://github.com/holesail/holesail","last_synced_at":"2026-02-02T12:56:06.613Z","repository":{"id":225847317,"uuid":"766480683","full_name":"holesail/holesail","owner":"holesail","description":"Holesail is the world's first truly peer-to-peer proxy for TCP and UDP ports. No port forwarding, servers or configuration required.","archived":false,"fork":false,"pushed_at":"2025-11-16T16:00:20.000Z","size":24715,"stargazers_count":182,"open_issues_count":8,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-16T17:25:53.501Z","etag":null,"topics":["forwarding-proxy","port-forwarding","port-forwarding-tcp","port-forwarding-udp","proxy"],"latest_commit_sha":null,"homepage":"https://holesail.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/holesail.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-03-03T11:43:32.000Z","updated_at":"2025-11-16T14:38:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"714be557-c6c5-40c2-bd8c-b077440e5635","html_url":"https://github.com/holesail/holesail","commit_stats":{"total_commits":44,"total_committers":5,"mean_commits":8.8,"dds":"0.18181818181818177","last_synced_commit":"c827a83cc7f3ddc4abd3d8871f348a00b3c948be"},"previous_names":["holesail/holesail"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/holesail/holesail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holesail%2Fholesail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holesail%2Fholesail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holesail%2Fholesail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holesail%2Fholesail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/holesail","download_url":"https://codeload.github.com/holesail/holesail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holesail%2Fholesail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29012689,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T12:48:30.580Z","status":"ssl_error","status_checked_at":"2026-02-02T12:46:38.384Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["forwarding-proxy","port-forwarding","port-forwarding-tcp","port-forwarding-udp","proxy"],"created_at":"2026-02-02T12:56:05.990Z","updated_at":"2026-02-02T12:56:06.603Z","avatar_url":"https://github.com/holesail.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Holesail\n\n```\n_   _       _                 _ _   _\n| | | | ___ | | ___  ___  __ _(_) | (_) ___\n| |_| |/ _ \\| |/ _ \\/ __|/ _` | | | | |/ _ \\\n|  _  | (_) | |  __/\\__ \\ (_| | | |_| | (_) |\n|_| |_|\\___/|_|\\___||___/\\__,_|_|_(_)_|\\___/\n```\n\n[Join our Discord Support Server](https://discord.gg/TQVacE7Vnj) [Join our Reddit Community](https://www.reddit.com/r/holesail/)\n\nTo support the development of this project:\n\nLightning BTC: linenbird5@primal.net\nBTC Address: 183Pfn4fxuMJMSvZXdBdYsNKWSnWHCdBdA\n\n## Overview\n\nHolesail is a truly peer-to-peer network tunneling and reverse proxy software that supports both TCP and UDP protocols.\n\nHolesail lets you share any locally running application on a specific port with third parties securely and with a single command. No static IP or port forwarding required.\n\n## Installation\n\nBefore using Holesail, make sure you have Node.js installed on your system. You can download Node.js from the official website: [https://nodejs.org/en/download/](https://nodejs.org/en/download/)\n\nOnce Node.js is installed, you can install Holesail Server using npm (Node Package Manager):\n\n```\nnpm i holesail -g\n```\n\n## Quick Usage\n\nTo start a local Holesail Server, use the following command:\n\n```\nholesail --live \u003cport\u003e\n```\n\nReplace `port` with the desired port number you want to expose to the network.\n\nThis will give you a connection string to connect to, use that to access this server from anywhere:\n\n```\nholesail \u003cconnection-string\u003e\n```\n\n## All commands\n\nTo view full usage instructions and all set of commands, run:\n\n```\nholesail --help\n```\n\n## API\n\n### Usage\n\n```js\nconst Holesail = require('holesail')\n\nconst hs = new Holesail({\n  server: true, // act as a server\n  secure: true // use secure mode\n})\n\nawait hs.ready()\n\nconsole.log('Server is ready:', hs.info.url)\n```\n\nOr as a client:\n\n```js\nconst Holesail = require('holesail')\n\nconst hs = new Holesail({\n  client: true,\n  key: 'hs://s000abcdef...' // URL or raw key\n})\n\nawait hs.ready()\n\nconsole.log('Client connected:', hs.info)\n```\n\n**API**\n\n`new Holesail(opts)`\n\nOptions:\n\n- server Boolean Start as server (default false)\n- client Boolean Start as client (default false)\n- key String Optional. URL or raw key for connecting\n- secure Boolean Enable secure mode (default false)\n- port Number Optional. Specific port to bind/connect\n- host String Optional. Specific host to bind/connect\n- udp Boolean Optional. Force UDP usage (advanced)\n\n`.ready()`\nWait for Holesail to initialize and connect.\n\n`.pause()`\n\n`.resume()`\n\n`.info()`\nGet metadata about the current Holesail instance:\n\n`.close()`\nGracefully shuts down the connection and releases resources.\n\n## URL Format\n\nHolesail uses a simple URL format for sharing server locations:\n\n- Secure server: hs://s000\u003ckey\u003e\n\n- Insecure server: hs://0000\u003ckey\u003e\n\nThe parser will auto-detect and split the prefix for you.\nIf you pass a full hs:// URL to the constructor, it'll Just Work\n\n## Documentation\n\nDocumentation for Holesail can be found at https://docs.holesail.io/\n\n## License\n\nThis project is licensed under the GNU AGPL v3 license — see the LICENSE\n\n## Contributing\n\nContributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.\n\n## Acknowledgments\n\nHolesail is built on and inspired by following open-source projects:\n\n- hypertele: https://github.com/bitfinexcom/hypertele\n- holepunch: https://holepunch.to\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholesail%2Fholesail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fholesail%2Fholesail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholesail%2Fholesail/lists"}