git: 7363e53716b5 - main - net/rayfish: New port

From: Mark Felder <feld_at_FreeBSD.org>
Date: Tue, 29 Sep 2026 16:34:40 UTC
The branch main has been updated by feld:

URL: https://cgit.FreeBSD.org/ports/commit/?id=7363e53716b52eece3c002ea852957648487958e

commit 7363e53716b52eece3c002ea852957648487958e
Author:     Mark Felder <feld@FreeBSD.org>
AuthorDate: 2026-09-29 16:32:55 +0000
Commit:     Mark Felder <feld@FreeBSD.org>
CommitDate: 2026-09-29 16:32:55 +0000

    net/rayfish: New port
    
    Rayfish is a peer-to-peer mesh VPN for your computers, phones, servers,
    and friends' machines. It creates encrypted private networks without an
    account, control server, or infrastructure to host.
    
    Peers connect directly when possible and use encrypted relays when they
    cannot. Each device has a stable address derived from its cryptographic
    identity, plus a name such as alice.gaming.ray through Magic DNS.
---
 GIDs                         |    2 +-
 net/Makefile                 |    1 +
 net/rayfish/Makefile         |   23 +
 net/rayfish/Makefile.crates  |  827 +++++++++++++++++++++
 net/rayfish/distinfo         | 1657 ++++++++++++++++++++++++++++++++++++++++++
 net/rayfish/files/rayfish.in |   33 +
 net/rayfish/pkg-descr        |    4 +
 net/rayfish/pkg-message      |   25 +
 8 files changed, 2571 insertions(+), 1 deletion(-)

diff --git a/GIDs b/GIDs
index cff0cfd1207d..f17deb934ed0 100644
--- a/GIDs
+++ b/GIDs
@@ -259,7 +259,7 @@ promscale:*:314:
 lavinmq:*:315:
 nut:*:316:
 hedgedoc:*:317:
-# free: 318, UID used by icingadirector
+rayfish:*:318:
 rustdesk:*:319:
 teleirc:*:320:
 caldera:*:321:
diff --git a/net/Makefile b/net/Makefile
index 67f37619ed27..64f923f5c5ff 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1236,6 +1236,7 @@
     SUBDIR += radsecproxy
     SUBDIR += radvd
     SUBDIR += rathole
+    SUBDIR += rayfish
     SUBDIR += rclone
     SUBDIR += rclone-browser
     SUBDIR += rdapper
diff --git a/net/rayfish/Makefile b/net/rayfish/Makefile
new file mode 100644
index 000000000000..b797d930b9d6
--- /dev/null
+++ b/net/rayfish/Makefile
@@ -0,0 +1,23 @@
+PORTNAME=	rayfish
+DISTVERSIONPREFIX=v
+DISTVERSION=	0.5.3
+CATEGORIES=	net
+
+MAINTAINER=	feld@FreeBSD.org
+COMMENT=	P2P mesh VPN powered by Iroh
+WWW=		https://rayfish.xyz
+
+LICENSE=	MPL20
+
+USES=		cargo
+
+GROUPS=	rayfish
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	rayfish
+
+USE_RC_SUBR=	rayfish
+
+PLIST_FILES=	bin/ray
+
+.include <bsd.port.mk>
diff --git a/net/rayfish/Makefile.crates b/net/rayfish/Makefile.crates
new file mode 100644
index 000000000000..bb60f41dcd8b
--- /dev/null
+++ b/net/rayfish/Makefile.crates
@@ -0,0 +1,827 @@
+CARGO_CRATES=	acto-0.8.2 \
+		adler2-2.0.1 \
+		aead-0.5.2 \
+		aead-0.6.1 \
+		aes-0.8.4 \
+		aes-0.9.3 \
+		aes-gcm-0.10.3 \
+		aes-gcm-0.11.1 \
+		ahash-0.8.12 \
+		aho-corasick-1.1.5 \
+		allocator-api2-0.2.21 \
+		android_system_properties-0.1.6 \
+		anes-0.1.6 \
+		anstream-1.0.0 \
+		anstyle-1.0.14 \
+		anstyle-parse-1.0.0 \
+		anstyle-query-1.1.5 \
+		anstyle-wincon-3.0.11 \
+		anyhow-1.0.104 \
+		arc-swap-1.9.2 \
+		argon2-0.5.3 \
+		argon2-0.6.0 \
+		arraydeque-0.5.1 \
+		arrayvec-0.7.8 \
+		askama-0.13.1 \
+		askama_derive-0.13.1 \
+		askama_parser-0.13.0 \
+		async-broadcast-0.7.2 \
+		async-channel-2.5.0 \
+		async-recursion-1.1.1 \
+		async-task-4.7.1 \
+		async-trait-0.1.92 \
+		async_io_stream-0.3.3 \
+		atk-0.18.2 \
+		atk-sys-0.18.2 \
+		atomic-polyfill-1.0.3 \
+		atomic-waker-1.1.2 \
+		attohttpc-0.30.1 \
+		autocfg-1.5.1 \
+		backon-1.6.0 \
+		bao-tree-0.16.1 \
+		base16ct-1.0.0 \
+		base32-0.4.0 \
+		base64-0.13.1 \
+		base64-0.22.1 \
+		base64ct-1.8.3 \
+		basic-toml-0.1.10 \
+		bcrypt-pbkdf-0.11.0 \
+		binary-merge-0.1.2 \
+		bit-set-0.8.0 \
+		bit-vec-0.8.0 \
+		bitflags-2.13.1 \
+		blake2-0.10.6 \
+		blake2-0.11.0 \
+		blake3-1.8.7 \
+		block-buffer-0.9.0 \
+		block-buffer-0.10.4 \
+		block-buffer-0.12.1 \
+		block-padding-0.2.1 \
+		block-padding-0.4.2 \
+		block2-0.6.2 \
+		blocking-1.7.0 \
+		blowfish-0.10.0 \
+		borsh-1.8.1 \
+		bs58-0.5.1 \
+		bumpalo-3.20.3 \
+		bytemuck-1.25.2 \
+		byteorder-1.5.0 \
+		byteorder-lite-0.1.0 \
+		bytes-1.12.1 \
+		bytesize-2.7.0 \
+		cairo-rs-0.18.5 \
+		cairo-sys-rs-0.18.2 \
+		camino-1.2.5 \
+		cargo-platform-0.1.9 \
+		cargo_metadata-0.19.2 \
+		cast-0.3.0 \
+		cbc-0.2.1 \
+		cc-1.4.4 \
+		cesu8-1.1.0 \
+		cfg-expr-0.15.8 \
+		cfg-if-1.0.4 \
+		cfg_aliases-0.2.2 \
+		chacha20-0.9.1 \
+		chacha20-0.10.2 \
+		chacha20poly1305-0.10.1 \
+		chrono-0.4.45 \
+		ciborium-0.2.2 \
+		ciborium-io-0.2.2 \
+		ciborium-ll-0.2.2 \
+		cipher-0.4.4 \
+		cipher-0.5.2 \
+		clap-4.6.6 \
+		clap_builder-4.6.6 \
+		clap_complete-4.6.9 \
+		clap_derive-4.6.4 \
+		clap_lex-1.1.0 \
+		clocksource-0.8.3 \
+		cmov-0.5.4 \
+		cobs-0.3.0 \
+		colorchoice-1.0.5 \
+		combine-4.6.8 \
+		concurrent-queue-2.5.0 \
+		config-0.15.25 \
+		console-0.16.4 \
+		const-oid-0.10.2 \
+		constant_time_eq-0.4.2 \
+		convert_case-0.4.0 \
+		convert_case-0.10.0 \
+		cookie-0.18.2 \
+		cordyceps-0.3.5 \
+		core-foundation-0.9.4 \
+		core-foundation-0.10.1 \
+		core-foundation-sys-0.8.7 \
+		core-graphics-0.25.0 \
+		core-graphics-types-0.2.0 \
+		cpubits-0.1.1 \
+		cpufeatures-0.2.17 \
+		cpufeatures-0.3.1 \
+		crc32fast-1.5.1 \
+		criterion-0.5.1 \
+		criterion-plot-0.5.0 \
+		critical-section-1.2.0 \
+		crossbeam-channel-0.5.16 \
+		crossbeam-deque-0.8.7 \
+		crossbeam-epoch-0.9.20 \
+		crossbeam-utils-0.8.22 \
+		crossterm-0.28.1 \
+		crossterm-0.29.0 \
+		crossterm_winapi-0.9.1 \
+		crunchy-0.2.4 \
+		crypto-bigint-0.7.5 \
+		crypto-common-0.1.7 \
+		crypto-common-0.2.2 \
+		crypto-mac-0.11.0 \
+		cssparser-0.37.0 \
+		cssparser-macros-0.7.1 \
+		ctr-0.9.2 \
+		ctr-0.10.1 \
+		ctutils-0.4.2 \
+		curve25519-dalek-3.2.0 \
+		curve25519-dalek-5.0.0-rc.0 \
+		curve25519-dalek-derive-0.1.1 \
+		dashmap-6.2.1 \
+		data-encoding-2.11.1 \
+		data-encoding-macro-0.1.21 \
+		data-encoding-macro-internal-0.1.19 \
+		delegate-0.13.5 \
+		der-0.8.1 \
+		deranged-0.5.8 \
+		derive_more-0.99.20 \
+		derive_more-2.1.1 \
+		derive_more-impl-2.1.1 \
+		des-0.9.0 \
+		diatomic-waker-0.2.3 \
+		digest-0.9.0 \
+		digest-0.10.7 \
+		digest-0.11.3 \
+		dirs-6.0.0 \
+		dirs-7.0.0 \
+		dirs-sys-0.5.0 \
+		dispatch2-0.3.1 \
+		displaydoc-0.2.7 \
+		dlopen2-0.8.2 \
+		dlopen2_derive-0.4.3 \
+		document-features-0.2.12 \
+		dom_query-0.28.0 \
+		dpi-0.1.2 \
+		dtoa-1.0.11 \
+		dtoa-short-0.3.5 \
+		dunce-1.0.5 \
+		ecdsa-0.17.0-rc.18 \
+		ed25519-1.5.3 \
+		ed25519-3.0.0 \
+		ed25519-dalek-1.0.1 \
+		ed25519-dalek-3.0.0-rc.0 \
+		either-1.18.0 \
+		elliptic-curve-0.14.0-rc.33 \
+		embedded-io-0.4.0 \
+		embedded-io-0.6.1 \
+		enable-ansi-support-0.3.1 \
+		encode_unicode-1.0.0 \
+		encoding_rs-0.8.35 \
+		endi-1.1.1 \
+		enum-assoc-1.4.1 \
+		enum_dispatch-0.3.13 \
+		enumflags2-0.7.12 \
+		enumflags2_derive-0.7.12 \
+		equivalent-1.0.2 \
+		errno-0.3.14 \
+		event-listener-5.4.2 \
+		event-listener-strategy-0.5.4 \
+		fastrand-2.5.0 \
+		fdeflate-0.3.7 \
+		ff-0.14.0 \
+		fiat-crypto-0.3.0 \
+		field-offset-0.3.6 \
+		filetime-0.2.29 \
+		find-msvc-tools-0.1.11 \
+		flate2-1.1.10 \
+		flume-0.12.0 \
+		fnv-1.0.7 \
+		foldhash-0.2.0 \
+		foreign-types-0.5.0 \
+		foreign-types-macros-0.2.4 \
+		foreign-types-shared-0.3.1 \
+		form_urlencoded-1.2.2 \
+		fs-err-2.11.0 \
+		futures-0.3.34 \
+		futures-buffered-0.2.13 \
+		futures-channel-0.3.34 \
+		futures-core-0.3.34 \
+		futures-executor-0.3.34 \
+		futures-io-0.3.34 \
+		futures-lite-2.6.1 \
+		futures-macro-0.3.34 \
+		futures-sink-0.3.34 \
+		futures-task-0.3.34 \
+		futures-util-0.3.34 \
+		gdk-0.18.2 \
+		gdk-pixbuf-0.18.5 \
+		gdk-pixbuf-sys-0.18.0 \
+		gdk-sys-0.18.2 \
+		gdkwayland-sys-0.18.2 \
+		genawaiter-0.99.1 \
+		genawaiter-macro-0.99.1 \
+		genawaiter-proc-macro-0.99.1 \
+		generator-0.8.9 \
+		generic-array-0.14.7 \
+		generic-array-1.4.5 \
+		getifaddrs-0.6.2 \
+		getrandom-0.1.16 \
+		getrandom-0.2.17 \
+		getrandom-0.3.4 \
+		getrandom-0.4.3 \
+		ghash-0.5.1 \
+		ghash-0.6.0 \
+		gio-0.18.4 \
+		gio-sys-0.18.1 \
+		glib-0.18.5 \
+		glib-macros-0.18.5 \
+		glib-sys-0.18.1 \
+		glob-0.3.4 \
+		gloo-timers-0.3.0 \
+		gobject-sys-0.18.0 \
+		goblin-0.8.2 \
+		group-0.14.0 \
+		gtk-0.18.2 \
+		gtk-sys-0.18.2 \
+		gtk3-macros-0.18.2 \
+		h2-0.4.19 \
+		half-2.7.1 \
+		hash32-0.2.1 \
+		hashbrown-0.14.5 \
+		hashbrown-0.16.1 \
+		hashbrown-0.17.1 \
+		hashlink-0.11.1 \
+		heapless-0.7.17 \
+		heck-0.4.1 \
+		heck-0.5.0 \
+		hermit-abi-0.5.3 \
+		hex-0.4.3 \
+		hex-literal-1.1.0 \
+		hickory-net-0.26.1 \
+		hickory-proto-0.26.1 \
+		hickory-resolver-0.26.1 \
+		hkdf-0.13.0 \
+		hmac-0.11.0 \
+		hmac-0.13.0 \
+		html5ever-0.39.0 \
+		http-1.5.0 \
+		http-body-1.1.0 \
+		http-body-util-0.1.5 \
+		httparse-1.10.1 \
+		httpdate-1.0.3 \
+		humansize-2.1.3 \
+		humantime-2.4.0 \
+		hybrid-array-0.4.14 \
+		hyper-1.11.1 \
+		hyper-rustls-0.27.9 \
+		hyper-util-0.1.20 \
+		iana-time-zone-0.1.65 \
+		iana-time-zone-haiku-0.1.2 \
+		icu_collections-2.3.0 \
+		icu_locale_core-2.3.0 \
+		icu_normalizer-2.3.0 \
+		icu_normalizer_data-2.3.0 \
+		icu_properties-2.3.0 \
+		icu_properties_data-2.3.0 \
+		icu_provider-2.3.1 \
+		identity-hash-0.1.0 \
+		idna-1.1.0 \
+		idna_adapter-1.2.2 \
+		igd-next-0.17.1 \
+		image-0.25.10 \
+		indexmap-2.14.1 \
+		indicatif-0.18.6 \
+		inotify-0.11.5 \
+		inotify-sys-0.1.8 \
+		inout-0.1.4 \
+		inout-0.2.2 \
+		inplace-vec-builder-0.1.1 \
+		internal-russh-num-bigint-0.5.0 \
+		ipconfig-0.3.4 \
+		ipnet-2.12.1 \
+		iroh-blobs-0.103.0 \
+		iroh-io-0.6.2 \
+		iroh-metrics-1.0.1 \
+		iroh-metrics-derive-1.0.1 \
+		iroh-tickets-1.0.0 \
+		iroh-tor-transport-0.1.0 \
+		iroh-util-0.6.0 \
+		irpc-0.17.0 \
+		irpc-derive-0.17.0 \
+		is-terminal-0.4.17 \
+		is_executable-1.0.6 \
+		is_terminal_polyfill-1.70.2 \
+		itertools-0.10.5 \
+		itertools-0.14.0 \
+		itoa-1.0.18 \
+		jni-0.21.1 \
+		jni-0.22.4 \
+		jni-macros-0.22.4 \
+		jni-sys-0.3.1 \
+		jni-sys-0.4.1 \
+		jni-sys-macros-0.4.1 \
+		js-sys-0.3.104 \
+		keccak-0.1.6 \
+		keccak-0.2.2 \
+		kem-0.3.0 \
+		keyboard-types-0.8.3 \
+		lazy_static-1.5.0 \
+		libc-0.2.189 \
+		libloading-0.9.0 \
+		libm-0.2.16 \
+		libredox-0.1.23 \
+		linux-raw-sys-0.4.15 \
+		linux-raw-sys-0.12.1 \
+		litemap-0.8.3 \
+		litrs-1.0.0 \
+		lock_api-0.4.14 \
+		log-0.4.34 \
+		loom-0.7.2 \
+		lru-0.18.3 \
+		lru-slab-0.1.2 \
+		mac-addr-0.3.0 \
+		markup5ever-0.39.0 \
+		matchers-0.2.0 \
+		md5-0.8.1 \
+		memchr-2.8.3 \
+		memoffset-0.9.1 \
+		mime-0.3.17 \
+		mime_guess-2.0.5 \
+		minimal-lexical-0.2.1 \
+		miniz_oxide-0.8.9 \
+		miniz_oxide-0.9.1 \
+		mio-1.2.2 \
+		ml-kem-0.3.2 \
+		module-lattice-0.2.3 \
+		moka-0.12.16 \
+		moxcms-0.8.1 \
+		muda-0.20.0 \
+		n0-error-1.0.1 \
+		n0-error-macros-1.0.0 \
+		n0-future-0.3.2 \
+		n0-watcher-1.0.0 \
+		ndk-0.9.0 \
+		ndk-context-0.1.1 \
+		ndk-sys-0.6.0+11769913 \
+		nested_enum_utils-0.2.3 \
+		netconfig-rs-0.1.6 \
+		netdev-0.45.0 \
+		netdev-0.46.2 \
+		netlink-packet-core-0.8.2 \
+		netlink-packet-core-0.9.0 \
+		netlink-packet-route-0.25.1 \
+		netlink-packet-route-0.30.0 \
+		netlink-packet-route-0.31.0 \
+		netlink-packet-route-0.33.0 \
+		netlink-proto-0.12.2 \
+		netlink-sys-0.8.8 \
+		netlink-sys-0.9.0 \
+		new_debug_unreachable-1.0.6 \
+		nix-0.30.1 \
+		nix-0.31.3 \
+		nom-7.1.3 \
+		noq-1.3.0 \
+		noq-proto-1.3.0 \
+		noq-udp-1.3.0 \
+		noyalib-0.0.5 \
+		nu-ansi-term-0.50.3 \
+		num-bigint-0.4.8 \
+		num-conv-0.2.2 \
+		num-integer-0.1.47 \
+		num-traits-0.2.19 \
+		num_enum-0.7.6 \
+		num_enum_derive-0.7.6 \
+		objc2-0.6.4 \
+		objc2-app-kit-0.3.2 \
+		objc2-cloud-kit-0.3.2 \
+		objc2-core-data-0.3.2 \
+		objc2-core-foundation-0.3.2 \
+		objc2-core-graphics-0.3.2 \
+		objc2-core-image-0.3.2 \
+		objc2-core-location-0.3.2 \
+		objc2-core-text-0.3.2 \
+		objc2-core-wlan-0.3.2 \
+		objc2-encode-4.1.0 \
+		objc2-exception-helper-0.1.1 \
+		objc2-foundation-0.3.2 \
+		objc2-io-surface-0.3.2 \
+		objc2-quartz-core-0.3.2 \
+		objc2-security-0.3.2 \
+		objc2-security-foundation-0.3.2 \
+		objc2-system-configuration-0.3.2 \
+		objc2-ui-kit-0.3.2 \
+		objc2-user-notifications-0.3.2 \
+		objc2-web-kit-0.3.2 \
+		once_cell-1.21.4 \
+		once_cell_polyfill-1.70.2 \
+		oorandom-11.1.5 \
+		opaque-debug-0.3.1 \
+		openssl-probe-0.2.1 \
+		opentelemetry-0.32.0 \
+		opentelemetry-http-0.32.0 \
+		opentelemetry-otlp-0.32.0 \
+		opentelemetry-proto-0.32.0 \
+		opentelemetry_sdk-0.32.1 \
+		option-ext-0.2.0 \
+		ordered-stream-0.2.0 \
+		p256-0.14.0-rc.10 \
+		p384-0.14.0-rc.10 \
+		p521-0.14.0-rc.10 \
+		pageant-0.2.2 \
+		pango-0.18.3 \
+		pango-sys-0.18.0 \
+		papaya-0.2.5 \
+		parking-2.2.1 \
+		parking_lot-0.12.5 \
+		parking_lot_core-0.9.12 \
+		password-hash-0.5.0 \
+		password-hash-0.6.1 \
+		paste-1.0.15 \
+		pathdiff-0.2.3 \
+		pbkdf2-0.13.0 \
+		pem-rfc7468-1.0.0 \
+		percent-encoding-2.3.2 \
+		pharos-0.5.3 \
+		phc-0.6.1 \
+		phf-0.13.1 \
+		phf_codegen-0.13.1 \
+		phf_generator-0.13.1 \
+		phf_macros-0.13.1 \
+		phf_shared-0.13.1 \
+		pin-project-1.1.13 \
+		pin-project-internal-1.1.13 \
+		pin-project-lite-0.2.17 \
+		piper-0.2.5 \
+		pkcs5-0.8.1 \
+		pkcs8-0.11.0 \
+		pkg-config-0.3.34 \
+		plain-0.2.3 \
+		plist-1.10.0 \
+		plotters-0.3.7 \
+		plotters-backend-0.3.7 \
+		plotters-svg-0.3.7 \
+		png-0.18.1 \
+		poly1305-0.8.0 \
+		poly1305-0.9.1 \
+		polyval-0.6.2 \
+		polyval-0.7.3 \
+		portable-atomic-1.15.0 \
+		portmapper-0.19.3 \
+		positioned-io-0.3.5 \
+		postcard-1.1.3 \
+		postcard-derive-0.2.2 \
+		potential_utf-0.1.6 \
+		powerfmt-0.2.0 \
+		ppv-lite86-0.2.21 \
+		precomputed-hash-0.1.1 \
+		prefix-trie-0.8.4 \
+		primefield-0.14.0 \
+		primeorder-0.14.0-rc.10 \
+		proc-macro-crate-1.3.1 \
+		proc-macro-crate-2.0.2 \
+		proc-macro-crate-3.5.0 \
+		proc-macro-error-0.4.12 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-0.4.12 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro-hack-0.5.20+deprecated \
+		proc-macro2-1.0.107 \
+		proptest-1.11.0 \
+		prost-0.14.4 \
+		prost-derive-0.14.4 \
+		pty-process-0.5.3 \
+		pxfm-0.1.30 \
+		qr2term-0.3.3 \
+		qrcode-0.14.1 \
+		quick-error-1.2.3 \
+		quick-xml-0.41.0 \
+		quote-1.0.47 \
+		r-efi-5.3.0 \
+		r-efi-6.0.0 \
+		rand-0.7.3 \
+		rand-0.9.5 \
+		rand-0.10.2 \
+		rand_chacha-0.2.2 \
+		rand_chacha-0.9.0 \
+		rand_core-0.5.1 \
+		rand_core-0.6.4 \
+		rand_core-0.9.5 \
+		rand_core-0.10.1 \
+		rand_hc-0.2.0 \
+		rand_pcg-0.10.2 \
+		rand_xorshift-0.4.0 \
+		range-collections-0.4.6 \
+		ratelimit-0.10.1 \
+		raw-window-handle-0.6.2 \
+		rayon-1.12.0 \
+		rayon-core-1.13.0 \
+		redb-4.2.0 \
+		redox_syscall-0.5.18 \
+		redox_users-0.5.2 \
+		ref-cast-1.0.27 \
+		ref-cast-impl-1.0.27 \
+		reflink-copy-0.1.30 \
+		regex-1.13.1 \
+		regex-automata-0.4.18 \
+		regex-syntax-0.8.11 \
+		reqwest-0.13.4 \
+		resolv-conf-0.7.6 \
+		rfc6979-0.5.0 \
+		ring-0.17.14 \
+		rmp-0.8.15 \
+		rmp-serde-1.3.1 \
+		route_manager-0.2.13 \
+		rpassword-7.5.4 \
+		rtnetlink-0.21.0 \
+		rtoolbox-0.0.6 \
+		russh-0.61.2 \
+		russh-cryptovec-0.61.0 \
+		russh-util-0.52.0 \
+		rustc-hash-2.1.3 \
+		rustc_version-0.4.1 \
+		rustix-0.38.44 \
+		rustix-1.1.4 \
+		rustls-0.23.43 \
+		rustls-native-certs-0.8.4 \
+		rustls-pki-types-1.15.1 \
+		rustls-platform-verifier-0.7.0 \
+		rustls-platform-verifier-android-0.1.1 \
+		rustls-webpki-0.103.15 \
+		rustversion-1.0.23 \
+		rusty-fork-0.3.1 \
+		ryu-1.0.23 \
+		salsa20-0.11.0 \
+		same-file-1.0.6 \
+		schannel-0.1.29 \
+		scoped-tls-1.0.1 \
+		scopeguard-1.2.0 \
+		scroll-0.12.0 \
+		scroll_derive-0.12.1 \
+		scrypt-0.12.0 \
+		sec1-0.8.1 \
+		security-framework-3.7.0 \
+		security-framework-sys-2.17.0 \
+		seize-0.5.1 \
+		selectors-0.38.0 \
+		self-replace-1.5.0 \
+		self_cell-1.3.0 \
+		semver-1.0.28 \
+		send_wrapper-0.6.0 \
+		serde-1.0.229 \
+		serde_bytes-0.11.19 \
+		serde_core-1.0.229 \
+		serde_derive-1.0.229 \
+		serde_json-1.0.151 \
+		serde_repr-0.1.21 \
+		serde_spanned-0.6.9 \
+		serde_spanned-1.1.1 \
+		serde_yml-0.0.13 \
+		serdect-0.4.3 \
+		servo_arc-0.4.3 \
+		sha1-0.11.0 \
+		sha1_smol-1.0.1 \
+		sha2-0.9.9 \
+		sha2-0.10.9 \
+		sha2-0.11.0 \
+		sha3-0.9.1 \
+		sha3-0.11.0 \
+		sharded-slab-0.1.7 \
+		shlex-2.0.1 \
+		signal-hook-0.3.18 \
+		signal-hook-mio-0.2.5 \
+		signal-hook-registry-1.4.8 \
+		signature-1.6.4 \
+		signature-3.0.0 \
+		simd-adler32-0.3.10 \
+		simd_cesu8-1.2.0 \
+		simdutf8-0.1.5 \
+		simple-dns-0.11.3 \
+		simple-dns-0.12.0 \
+		siphasher-0.3.11 \
+		siphasher-1.0.3 \
+		slab-0.4.12 \
+		smallvec-1.15.2 \
+		smawk-0.3.3 \
+		smol_str-0.1.24 \
+		smol_str-0.3.6 \
+		socket2-0.6.5 \
+		sorted-index-buffer-0.2.1 \
+		spez-0.1.2 \
+		spin-0.9.9 \
+		spin-0.10.1 \
+		spki-0.8.0 \
+		ssh-cipher-0.3.0-rc.9 \
+		ssh-encoding-0.3.0-rc.9 \
+		ssh-key-0.7.0-rc.10 \
+		stable_deref_trait-1.2.1 \
+		static_assertions-1.1.0 \
+		string_cache-0.9.0 \
+		string_cache_codegen-0.6.1 \
+		strsim-0.11.1 \
+		strum-0.28.0 \
+		strum_macros-0.28.0 \
+		subtle-2.6.1 \
+		swarm-discovery-0.6.3 \
+		symlink-0.1.0 \
+		syn-1.0.109 \
+		syn-2.0.119 \
+		syn-3.0.4 \
+		syn-mid-0.5.4 \
+		sync_wrapper-1.0.2 \
+		synstructure-0.13.2 \
+		system-configuration-0.7.0 \
+		system-configuration-sys-0.6.0 \
+		system-deps-6.2.2 \
+		tagptr-0.2.0 \
+		tao-0.37.0 \
+		tao-macros-0.1.4 \
+		tar-0.4.46 \
+		target-lexicon-0.12.16 \
+		tempfile-3.27.0 \
+		tendril-0.5.1 \
+		terminal_size-0.4.4 \
+		textwrap-0.16.2 \
+		thiserror-1.0.69 \
+		thiserror-2.0.20 \
+		thiserror-impl-1.0.69 \
+		thiserror-impl-2.0.20 \
+		thread_local-1.1.10 \
+		time-0.3.55 \
+		time-core-0.1.9 \
+		time-macros-0.2.32 \
+		tinystr-0.8.4 \
+		tinytemplate-1.2.1 \
+		tinyvec-1.12.0 \
+		tinyvec_macros-0.1.1 \
+		tokio-1.53.1 \
+		tokio-macros-2.7.2 \
+		tokio-rustls-0.26.4 \
+		tokio-socks-0.5.3 \
+		tokio-stream-0.1.19 \
+		tokio-util-0.7.19 \
+		tokio-websockets-0.13.3 \
+		toml-0.5.11 \
+		toml-0.8.2 \
+		toml-1.1.4+spec-1.1.0 \
+		toml_datetime-0.6.3 \
+		toml_datetime-1.1.1+spec-1.1.0 \
+		toml_edit-0.19.15 \
+		toml_edit-0.20.2 \
+		toml_edit-0.25.13+spec-1.1.0 \
+		toml_parser-1.1.3+spec-1.1.0 \
+		toml_writer-1.1.2+spec-1.1.0 \
+		torut-0.2.1 \
+		tower-0.5.3 \
+		tower-http-0.6.11 \
+		tower-layer-0.3.3 \
+		tower-service-0.3.3 \
+		tracing-0.1.44 \
+		tracing-appender-0.2.5 \
+		tracing-attributes-0.1.31 \
+		tracing-core-0.1.36 \
+		tracing-log-0.2.0 \
+		tracing-opentelemetry-0.33.0 \
+		tracing-oslog-0.3.0 \
+		tracing-subscriber-0.3.23 \
+		tray-icon-0.25.1 \
+		try-lock-0.2.5 \
+		tun-rs-2.8.9 \
+		typenum-1.20.1 \
+		uds_windows-1.2.1 \
+		unarray-0.1.4 \
+		unicase-2.9.0 \
+		unicode-ident-1.0.24 \
+		unicode-segmentation-1.13.3 \
+		unicode-width-0.2.2 \
+		unicode-xid-0.2.6 \
+		uniffi-0.29.5 \
+		uniffi_bindgen-0.29.5 \
+		uniffi_core-0.29.5 \
+		uniffi_internal_macros-0.29.5 \
+		uniffi_macros-0.29.5 \
+		uniffi_meta-0.29.5 \
+		uniffi_pipeline-0.29.5 \
+		uniffi_udl-0.29.5 \
+		unit-prefix-0.5.2 \
+		universal-hash-0.5.1 \
+		universal-hash-0.6.1 \
+		untrusted-0.9.0 \
+		url-2.5.8 \
+		utf8_iter-1.0.4 \
+		utf8parse-0.2.2 \
+		uuid-1.26.0 \
+		uzers-0.12.2 \
+		valuable-0.1.1 \
+		version-compare-0.2.1 \
+		version_check-0.9.5 \
+		wait-timeout-0.2.1 \
+		walkdir-2.5.0 \
+		want-0.3.1 \
+		wasi-0.9.0+wasi-snapshot-preview1 \
+		wasi-0.11.1+wasi-snapshot-preview1 \
+		wasip2-1.0.4+wasi-0.2.12 \
+		wasm-bindgen-0.2.127 \
+		wasm-bindgen-futures-0.4.77 \
+		wasm-bindgen-macro-0.2.127 \
+		wasm-bindgen-macro-support-0.2.127 \
+		wasm-bindgen-shared-0.2.127 \
+		wasm-streams-0.5.0 \
+		web-sys-0.3.104 \
+		web-time-1.1.0 \
+		web_atoms-0.2.6 \
+		webpki-root-certs-1.0.9 \
+		webpki-roots-1.0.9 \
+		webview2-com-0.39.1 \
+		webview2-com-macros-0.8.1 \
+		webview2-com-sys-0.39.1 \
+		weedle2-5.0.0 \
+		widestring-1.2.1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.11 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-0.61.3 \
+		windows-0.62.2 \
+		windows-collections-0.2.0 \
+		windows-collections-0.3.2 \
+		windows-core-0.61.2 \
+		windows-core-0.62.2 \
+		windows-future-0.2.1 \
+		windows-future-0.3.2 \
+		windows-implement-0.60.2 \
+		windows-interface-0.59.3 \
+		windows-link-0.1.3 \
+		windows-link-0.2.1 \
+		windows-numerics-0.2.0 \
+		windows-numerics-0.3.1 \
+		windows-registry-0.6.1 \
+		windows-result-0.3.4 \
+		windows-result-0.4.1 \
+		windows-service-0.8.1 \
+		windows-strings-0.4.2 \
+		windows-strings-0.5.1 \
+		windows-sys-0.45.0 \
+		windows-sys-0.52.0 \
+		windows-sys-0.59.0 \
+		windows-sys-0.61.2 \
+		windows-targets-0.42.2 \
+		windows-targets-0.52.6 \
+		windows-threading-0.1.0 \
+		windows-threading-0.2.1 \
+		windows-version-0.1.7 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.5.40 \
+		winnow-0.7.15 \
+		winnow-1.0.4 \
+		winreg-0.56.0 \
+		winresource-0.1.31 \
+		wit-bindgen-0.57.1 \
+		wmi-0.18.4 \
+		writeable-0.6.4 \
+		wry-0.57.0 \
+		ws_stream_wasm-0.7.5 \
+		xattr-1.6.1 \
+		xml-rs-0.8.29 \
+		xmltree-0.10.3 \
+		yaml-rust2-0.11.1 \
+		yoke-0.8.3 \
+		yoke-derive-0.8.2 \
+		zbus-5.19.0 \
+		zbus_macros-5.19.0 \
+		zbus_names-4.3.4 \
+		zcheapstr-1.1.0 \
+		zerocopy-0.8.56 \
+		zerocopy-derive-0.8.56 \
+		zerofrom-0.1.8 \
+		zerofrom-derive-0.1.7 \
+		zeroize-1.9.0 \
+		zeroize_derive-1.5.0 \
+		zerotrie-0.2.5 \
+		zerovec-0.11.8 \
+		zerovec-derive-0.11.6 \
+		zlib-rs-0.6.7 \
+		zmij-1.0.23 \
+		zvariant-5.15.0 \
+		zvariant_derive-5.15.0 \
+		zvariant_utils-4.2.0 \
+		netwatch@git+https://github.com/n0-computer/net-tools?branch=main\#d73b994abce8f683d7d6dcc163eee5eaefb952f5 \
+		iroh,iroh-base,iroh-dns,iroh-relay@git+https://github.com/rayfish/iroh?branch=rayfish-integration\#251af60ba1ca39645b6dd62ba0f845a74a764cb0 \
+		iroh-mdns-address-lookup@git+https://github.com/rayfish/iroh-address-lookups?rev=3c439994559d15fd6683695757ca72f70eccc060\#3c439994559d15fd6683695757ca72f70eccc060
diff --git a/net/rayfish/distinfo b/net/rayfish/distinfo
new file mode 100644
index 000000000000..143eda39b583
--- /dev/null
+++ b/net/rayfish/distinfo
@@ -0,0 +1,1657 @@
+TIMESTAMP = 1790642452
+SHA256 (rust/crates/acto-0.8.2.crate) = 598381761ee991bf2f1455f700380e2191fb370dc9df1ee764f348b7f089d8b6
+SIZE (rust/crates/acto-0.8.2.crate) = 19344
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/aead-0.5.2.crate) = d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0
+SIZE (rust/crates/aead-0.5.2.crate) = 15509
+SHA256 (rust/crates/aead-0.6.1.crate) = 1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99
+SIZE (rust/crates/aead-0.6.1.crate) = 18672
+SHA256 (rust/crates/aes-0.8.4.crate) = b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0
+SIZE (rust/crates/aes-0.8.4.crate) = 124812
+SHA256 (rust/crates/aes-0.9.3.crate) = 35f0f96ce78e38c3dc6d8948aa8163d06385be74000f3c7a95bf1eef35d3ea32
+SIZE (rust/crates/aes-0.9.3.crate) = 112408
+SHA256 (rust/crates/aes-gcm-0.10.3.crate) = 831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1
+SIZE (rust/crates/aes-gcm-0.10.3.crate) = 148991
+SHA256 (rust/crates/aes-gcm-0.11.1.crate) = 7f2b8006a0c83f52b62ba44a97b58bf76fe2f70a329e588f67f89691d93d498f
+SIZE (rust/crates/aes-gcm-0.11.1.crate) = 155976
+SHA256 (rust/crates/ahash-0.8.12.crate) = 5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75
+SIZE (rust/crates/ahash-0.8.12.crate) = 43413
+SHA256 (rust/crates/aho-corasick-1.1.5.crate) = c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba
+SIZE (rust/crates/aho-corasick-1.1.5.crate) = 184315
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/android_system_properties-0.1.6.crate) = ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc
+SIZE (rust/crates/android_system_properties-0.1.6.crate) = 5625
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstream-1.0.0.crate) = 824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d
+SIZE (rust/crates/anstream-1.0.0.crate) = 28916
+SHA256 (rust/crates/anstyle-1.0.14.crate) = 940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000
+SIZE (rust/crates/anstyle-1.0.14.crate) = 17787
+SHA256 (rust/crates/anstyle-parse-1.0.0.crate) = 52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e
+SIZE (rust/crates/anstyle-parse-1.0.0.crate) = 22042
+SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc
+SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264
+SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d
+SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638
+SHA256 (rust/crates/anyhow-1.0.104.crate) = 330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470
+SIZE (rust/crates/anyhow-1.0.104.crate) = 48819
+SHA256 (rust/crates/arc-swap-1.9.2.crate) = c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b
+SIZE (rust/crates/arc-swap-1.9.2.crate) = 81495
+SHA256 (rust/crates/argon2-0.5.3.crate) = 3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072
+SIZE (rust/crates/argon2-0.5.3.crate) = 28795
+SHA256 (rust/crates/argon2-0.6.0.crate) = 134c52ddac6d63c576bef8168db10c83c49c26444ecbc68060fef078925a901c
+SIZE (rust/crates/argon2-0.6.0.crate) = 34538
+SHA256 (rust/crates/arraydeque-0.5.1.crate) = 7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236
+SIZE (rust/crates/arraydeque-0.5.1.crate) = 17671
+SHA256 (rust/crates/arrayvec-0.7.8.crate) = d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56
+SIZE (rust/crates/arrayvec-0.7.8.crate) = 33260
+SHA256 (rust/crates/askama-0.13.1.crate) = 5d4744ed2eef2645831b441d8f5459689ade2ab27c854488fbab1fbe94fce1a7
+SIZE (rust/crates/askama-0.13.1.crate) = 41236
+SHA256 (rust/crates/askama_derive-0.13.1.crate) = d661e0f57be36a5c14c48f78d09011e67e0cb618f269cca9f2fd8d15b68c46ac
+SIZE (rust/crates/askama_derive-0.13.1.crate) = 63648
+SHA256 (rust/crates/askama_parser-0.13.0.crate) = cf315ce6524c857bb129ff794935cf6d42c82a6cff60526fe2a63593de4d0d4f
+SIZE (rust/crates/askama_parser-0.13.0.crate) = 57577
+SHA256 (rust/crates/async-broadcast-0.7.2.crate) = 435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532
+SIZE (rust/crates/async-broadcast-0.7.2.crate) = 22746
+SHA256 (rust/crates/async-channel-2.5.0.crate) = 924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2
+SIZE (rust/crates/async-channel-2.5.0.crate) = 18624
+SHA256 (rust/crates/async-recursion-1.1.1.crate) = 3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11
+SIZE (rust/crates/async-recursion-1.1.1.crate) = 14874
+SHA256 (rust/crates/async-task-4.7.1.crate) = 8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de
+SIZE (rust/crates/async-task-4.7.1.crate) = 38077
+SHA256 (rust/crates/async-trait-0.1.92.crate) = 82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667
*** 1673 LINES SKIPPED ***