iroh 0.93.2

p2p quic connections dialed by public key
Documentation
[build-dependencies.cfg_aliases]
version = "0.2.1"

[dependencies.aead]
features = ["bytes"]
version = "=0.6.0-rc.2"

[dependencies.axum]
optional = true
version = "0.8"

[dependencies.backon]
version = "1.4"

[dependencies.bytes]
version = "1.7"

[dependencies.crypto_box]
features = ["serde", "chacha20"]
version = "0.10.0-pre.0"

[dependencies.data-encoding]
version = "2.2"

[dependencies.der]
features = ["alloc", "derive"]
version = "0.8.0-rc.9"

[dependencies.derive_more]
features = ["debug", "display", "from", "try_into", "deref", "from_str"]
version = "2.0.1"

[dependencies.ed25519-dalek]
features = ["serde", "rand_core", "zeroize", "pkcs8", "pem"]
version = "3.0.0-pre.1"

[dependencies.futures-buffered]
version = "0.2.11"

[dependencies.futures-util]
version = "0.3"

[dependencies.http]
version = "1"

[dependencies.iroh-base]
default-features = false
features = ["key", "relay"]
version = "0.93.2"

[dependencies.iroh-metrics]
default-features = false
version = "0.36"

[dependencies.iroh-relay]
default-features = false
version = "0.93"

[dependencies.n0-future]
version = "0.2.0"

[dependencies.n0-snafu]
version = "0.2.2"

[dependencies.n0-watcher]
version = "0.3"

[dependencies.nested_enum_utils]
version = "0.2.1"

[dependencies.netwatch]
version = "0.9"

[dependencies.pin-project]
version = "1"

[dependencies.pkarr]
default-features = false
features = ["relays"]
version = "5"

[dependencies.pkcs8]
version = "0.11.0-rc.7"

[dependencies.quinn]
default-features = false
features = ["rustls-ring"]
package = "iroh-quinn"
version = "0.14.0"

[dependencies.quinn-proto]
package = "iroh-quinn-proto"
version = "0.13.0"

[dependencies.quinn-udp]
package = "iroh-quinn-udp"
version = "0.5.7"

[dependencies.rand]
version = "0.9.2"

[dependencies.reqwest]
default-features = false
features = ["rustls-tls", "stream"]
version = "0.12"

[dependencies.ring]
version = "0.17"

[dependencies.rustls]
default-features = false
features = ["ring"]
version = "0.23"

[dependencies.serde]
features = ["derive", "rc"]
version = "1.0.219"

[dependencies.smallvec]
version = "1.11.1"

[dependencies.snafu]
features = ["rust_1_81"]
version = "0.8.5"

[dependencies.strum]
features = ["derive"]
version = "0.27"

[dependencies.stun-rs]
version = "0.1.11"

[dependencies.swarm-discovery]
optional = true
version = "0.4"

[dependencies.tokio]
features = ["io-util", "macros", "sync", "rt"]
version = "1.44.1"

[dependencies.tokio-stream]
features = ["sync"]
version = "0.1.15"

[dependencies.tokio-util]
features = ["io-util", "io", "rt"]
version = "0.7"

[dependencies.tracing]
version = "0.1"

[dependencies.url]
features = ["serde"]
version = "2.5"

[dependencies.webpki]
features = ["ring"]
package = "rustls-webpki"
version = "0.103"

[dependencies.webpki-roots]
version = "1.0"

[dependencies.webpki_types]
package = "rustls-pki-types"
version = "1.12"

[dependencies.z32]
version = "1.0.3"

[dev-dependencies.console_error_panic_hook]
version = "0.1"

[dev-dependencies.postcard]
features = ["use-std"]
version = "1.1.1"

[dev-dependencies.rand_chacha]
version = "0.9"

[dev-dependencies.tracing-subscriber]
features = ["env-filter"]
version = "0.3"

[[example]]
name = "0rtt"
path = "examples/0rtt.rs"
required-features = []

[[example]]
name = "connect"
path = "examples/connect.rs"
required-features = []

[[example]]
name = "connect-unreliable"
path = "examples/connect-unreliable.rs"
required-features = []

[[example]]
name = "dht_discovery"
path = "examples/dht_discovery.rs"
required-features = ["discovery-pkarr-dht"]

[[example]]
name = "echo"
path = "examples/echo.rs"
required-features = []

[[example]]
name = "echo-no-router"
path = "examples/echo-no-router.rs"
required-features = []

[[example]]
name = "listen"
path = "examples/listen.rs"
required-features = []

[[example]]
name = "listen-unreliable"
path = "examples/listen-unreliable.rs"
required-features = []

[[example]]
name = "locally-discovered-nodes"
path = "examples/locally-discovered-nodes.rs"
required-features = ["discovery-local-network"]

[[example]]
name = "screening-connection"
path = "examples/screening-connection.rs"

[[example]]
name = "search"
path = "examples/search.rs"
required-features = []

[[example]]
name = "transfer"
path = "examples/transfer.rs"
required-features = []

[features]
default = ["metrics"]
discovery-local-network = ["dep:swarm-discovery"]
discovery-pkarr-dht = ["pkarr/dht"]
metrics = ["iroh-metrics/metrics", "iroh-relay/metrics", "portmapper/metrics"]
test-utils = ["iroh-relay/test-utils", "iroh-relay/server", "dep:axum"]

[lib]
crate-type = ["lib", "cdylib"]
name = "iroh"
path = "src/lib.rs"

[lints.clippy]
unused-async = "warn"

[lints.rust]
missing_debug_implementations = "warn"

[lints.rust.unexpected_cfgs]
check-cfg = ["cfg(iroh_docsrs)", "cfg(iroh_loom)"]
level = "warn"
priority = 0

[package]
authors = ["dignifiedquire <me@dignifiedquire.com>", "n0 team"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = "build.rs"
description = "p2p quic connections dialed by public key"
edition = "2024"
keywords = ["quic", "networking", "holepunching", "p2p"]
license = "MIT OR Apache-2.0"
name = "iroh"
readme = "README.md"
repository = "https://github.com/n0-computer/iroh"
resolver = "2"
rust-version = "1.85"
version = "0.93.2"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "iroh_docsrs"]

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies.getrandom]
features = ["wasm_js"]
version = "0.3.2"

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies.instant]
features = ["wasm-bindgen"]
version = "0.1"

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies.time]
features = ["wasm-bindgen"]
version = "0.3"

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies.wasm-bindgen-futures]
version = "0.4"

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dev-dependencies.tracing-subscriber-wasm]
version = "0.1.0"

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dev-dependencies.wasm-bindgen-test]
version = "0.3"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.hickory-resolver]
version = "0.25.1"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.igd-next]
features = ["aio_tokio"]
version = "0.16"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.netdev]
version = "0.36.0"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.portmapper]
default-features = false
version = "0.10"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.quinn]
default-features = false
features = ["runtime-tokio", "rustls-ring"]
package = "iroh-quinn"
version = "0.14.0"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.surge-ping]
version = "0.8.0"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies.tokio]
features = ["io-util", "macros", "sync", "rt", "net", "fs", "io-std", "signal", "process"]
version = "1"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.axum]
version = "0.8"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.clap]
features = ["derive"]
version = "4"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.indicatif]
features = ["tokio"]
version = "0.18"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.iroh-base]
default-features = false
features = ["key", "relay", "ticket"]
version = "0.93.2"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.parse-size]
features = ["std"]
version = "1.1.0"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.pretty_assertions]
version = "1.4"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.rand_chacha]
version = "0.9"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.serde_json]
version = "1"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.tokio]
features = ["io-util", "sync", "rt", "net", "fs", "macros", "time", "test-util"]
version = "1"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.tracing-subscriber]
features = ["env-filter"]
version = "0.3"

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies.tracing-test]
version = "0.2.5"

[[test]]
name = "integration"
path = "tests/integration.rs"