{"id":47929896,"url":"https://github.com/nymtech/nym-bridges","last_synced_at":"2026-04-04T07:14:33.683Z","repository":{"id":319252622,"uuid":"1068629215","full_name":"nymtech/nym-bridges","owner":"nymtech","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-03T00:53:35.000Z","size":924,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-03T05:41:27.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nymtech.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-02T17:07:05.000Z","updated_at":"2026-02-02T16:33:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"29e7bce7-f3f4-468c-8883-03481ef55502","html_url":"https://github.com/nymtech/nym-bridges","commit_stats":null,"previous_names":["nymtech/nym-bridges"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/nymtech/nym-bridges","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fnym-bridges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fnym-bridges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fnym-bridges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fnym-bridges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nymtech","download_url":"https://codeload.github.com/nymtech/nym-bridges/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fnym-bridges/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31391065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: 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":[],"created_at":"2026-04-04T07:14:33.070Z","updated_at":"2026-04-04T07:14:33.675Z","avatar_url":"https://github.com/nymtech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\".github/images/header.png\" width=\"600\"/\u003e\n\n\n\u003c/div\u003e\n\n# Nym Transport Bridges\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/nymtech/nym-bridges/actions/workflows/rust.yml\"\u003e\n    \u003cimg src=\"https://github.com/nymtech/nym-bridges/actions/workflows/rust.yml/badge.svg?branch=main\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href='https://coveralls.io/github/nymtech/nym-bridges?branch=main'\u003e\u003cimg src='https://coveralls.io/repos/github/nymtech/nym-bridges/badge.svg?branch=main' alt='Coverage Status' /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis repository implements and provides tooling for a pluggable transport system used to secure and\nobfuscate [Nym VPN](https://github.com/nymtech/nym-vpn-client/) traffic. The\n[nym-bridge](./nym-bridge/) is a server-side transparent forwarder accepting and unwrapping\nobfuscated traffic to be passed on to a colocated [nym-node](https://github.com/nymtech/nym) entry\ngateway.\n\nThe larger Nym system provides a secure distributed multi-hop VPN and mixnet.\n\n\u003cdiv align=\"center\"\u003e\n\n⚠️⚠️  This repository is under active development and encodings, serialization formats, interfaces,\netc. are subject to change  ⚠️⚠️\n\u003c/div\u003e\n\n## Usage\n\n#### Build\n\n\nThe nym-bridge binary runs the server side listener for the transports defined by the bridge\nconfiguration. The binary can be built using:\n\n```sh\ncargo build --release -p nym-bridge -p bridge-cfg\n\n# sudo cp target/release/nym-bridge /usr/local/bin/\n```\n\n#### Automatic Configuration\n\nThe [`bridge-cfg`](../bridge-cfg/) tool is provided to assist with key generation and configuration\nmanagement -- for more details on automatic configuration see\n[`bridge-cfg/README.md`](../bridge-cfg/README.md).\n\nThis tool assumes that the `nym-bridge` is going to be run alongside a `nym-node`, but attempts to configure expected defaults if a nym-node config is not present.\n\n```sh\n# Try a dry run to preview the configuration changes / file locations\nbridge-cfg --gen --dry-run\n\n# Allow configuration changes to be persisted\nbridge-cfg --gen\n```\n\n**Security Note:** After generating your bridge configuration, ensure proper file permissions to protect sensitive key material:\n\n```sh\n# Restrict config file to owner only (recommended for production)\nsudo chmod 600 /etc/nym/bridges.toml\n\n# Protect keys directory\nsudo chmod 700 /etc/nym/keys\nsudo chmod 600 /etc/nym/keys/*\n```\n\n**Refreshing Configuration:** If your server's public IPs change after initial setup, you can refresh the configuration:\n\n```sh\n# Re-detect public IPs while preserving existing keys\nbridge-cfg --gen -i /etc/nym/bridges.toml -o /etc/nym/bridges.toml\n```\n\nManual configuration instructions can be found in [`nym-bridge/README.md`](./nym-bridge/README.md)\n\n#### Usage\n\n```sh\n$ nym-bridge -h\nUsage: nym-bridge [OPTIONS]\n\nOptions:\n  -c, --config \u003cCONFIG_PATH\u003e  Provide a path to the configuration for launching server listeners [default: /etc/nym/default-nym-node/bridges.toml]\n  -h, --help                  Print help\n\n$ nym-bridge -c \"\u003cpath_to_bridge_config\u003e\"\n```\n\n## Protocols\n\n#### Quic\n\nQUIC is a UDP-based, stream-multiplexing, connection-oriented, encrypted transport protocol that creates a stateful interaction between a client and server. The protocol published as [RFC 9000](https://www.rfc-editor.org/rfc/rfc9000.html).\n\nThis tool uses ed25519 keys to sign certificates for the TLS handshake used by Quic. The public (verifying) key is shared to clients as part of the node description and can be used to verify the server identity and secure a Quic TLS connection.\n\n**TLS over TCP**\n\nTLS over TCP is the most common protocol used across the public internet. It provides a connection-oriented, encrypted transport protocol.\n\nThis tool uses ed25519 keys to sign certificates for the TLS handshake. The public (verifying) key is shared to clients as part of the node description and can be used to verify the server identity and secure a TLS connection.\n\n**[Future]** Shadowsocks | ssh | obfs4 | vmess | webrtc | ...\n\n\n## Testing\n\nA minimal docker test environment is provided for testing the tunneling and connection handling of\nthe nym-bridge binaries. The [`bridge-tools`](./bridge-tools/) are intended for use in this\nenvironment.\n\nSee [`./test-env/`](./test-env/) for more details. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnymtech%2Fnym-bridges","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnymtech%2Fnym-bridges","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnymtech%2Fnym-bridges/lists"}