nautalid 0.1.0

Scratch container substrate — TLS 1.3 HTTP/2+3 kernel, LID/AetherDB, optional filter bus (GPL-3.0-or-later).
[package]
name = "nautalid"
version = "0.1.0"
edition = "2024"
rust-version = "1.88"
authors = ["TheMapleseed"]
description = "Scratch container substrate — TLS 1.3 HTTP/2+3 kernel, LID/AetherDB, optional filter bus (GPL-3.0-or-later)."
license = "GPL-3.0-or-later"
readme = "README.md"
include = [
    "src/**/*",
    "Cargo.toml",
    "Cargo.lock",
    "README.md",
    "LICENSE",
    "rust-toolchain.toml",
]
repository = "https://github.com/TheMapleseed/Nautalid"
documentation = "https://docs.rs/nautalid"
keywords = ["scratch", "container", "rustls", "axum", "aetherdb"]
categories = ["web-programming::http-server"]

[dependencies]
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
webpki-roots = "0.26"

bytes = "1"
http = "1"
hyper = { version = "1", default-features = false, features = ["http2", "server"] }
http-body-util = "0.1"
hyper-util = { version = "0.1", default-features = false, features = [
    "tokio",
    "server-auto",
    "service",
] }
h3 = { version = "0.0.8", features = [
    "i-implement-a-third-party-backend-and-opt-into-breaking-changes",
] }
h3-quinn = { version = "0.0.10", features = ["datagram"] }
h3-axum = "0.2"
quinn = { version = "0.11", default-features = false, features = ["runtime-tokio", "rustls-ring"] }

tokio = { version = "1", features = [
    "macros",
    "rt-multi-thread",
    "signal",
    "net",
    "time",
    "fs",
    "io-util",
] }

axum = { version = "0.8", features = ["ws"] }
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace", "limit", "timeout", "fs"] }
futures-util = { version = "0.3", default-features = false, features = ["sink"] }
futures-channel = { version = "0.3", features = ["sink"] }
futures-io = "0.3"
futures-task = "0.3"
async-trait = "0.1"
parking_lot = "0.12"
rand = "0.8"
dashmap = "5"
crossbeam-queue = "0.3"
asynchronous-codec = "0.7"
regex = { version = "1", default-features = false, features = ["std", "unicode-perl"] }
once_cell = "1"
log = "0.4"
num-traits = "0.2"
tokio-util = { version = "0.7", features = ["compat"] }

tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "registry"] }

reqwest = { version = "0.12", default-features = false, features = [
    "rustls-tls-webpki-roots",
    "http2",
    "stream",
    "json",
] }
tokio-tungstenite = { version = "0.26", default-features = false, features = ["connect", "rustls-tls-webpki-roots"] }
ocsp-staple = { version = "0.0.2", features = ["fetch"] }
tonic = { version = "0.12", optional = true, default-features = false, features = ["transport"] }
tonic-health = { version = "0.12", optional = true }

hickory-resolver = { version = "0.26.1", features = ["tokio", "system-config"] }

chrono = { version = "0.4", default-features = false, features = ["clock", "std"] }
chrono-tz = "0.10"
# RUSTSEC-2026-0009 — force patched `time` for ACME/OCSP transitive x509 stack.
time = "0.3.47"

# ECDSA P-256 (NIST ECC) over SHA-256 — image trust envelopes, WASM/DOM bundle digests, OCI runtime binding.
p256 = { version = "0.13", optional = true, features = ["ecdsa", "pem", "std", "pkcs8"] }
sha2 = { version = "0.10" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
hex = "0.4"
base64 = "0.22"
thiserror = "2"

# KWT — https://crates.io/crates/kwt (https://github.com/TheMapleseed/KWT)
kwt = { version = "0.2.1", optional = true }
uuid = { version = "1", optional = true, features = ["v4", "v7"] }

clap = { version = "4", features = ["derive"], optional = true }
rand_core = { version = "0.6", features = ["getrandom"], optional = true }
rayon = { version = "1", optional = true }
kdl = "6"
rustls-acme = { version = "0.15", default-features = false, features = ["ring", "tokio", "webpki-roots"] }
aws-lc-rs = { version = "1", optional = true }
aetherdb = { version = "0.1.1", optional = true }
tempfile = { version = "3", optional = true }
tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
rustls-pemfile = "2"
h3-webtransport = "0.1.2"
h3-datagram = "0.0.2"

[features]
default = ["filter", "kwt", "image-trust"]
filter = []
# Embedded zmq.rs (src/zeromq/) — feature names match upstream cfg gates.
bus = ["dep:uuid", "tokio-runtime", "all-transport"]
tokio-runtime = []
all-transport = ["ipc-transport", "tcp-transport"]
ipc-transport = []
tcp-transport = []
# Upstream zmq.rs optional runtimes (unused; satisfies `check-cfg`).
async-std-runtime = []
async-dispatcher-runtime = []
async-dispatcher-macros = []
# Dead code paths retained after Marmot/DaHT removal.
daht-vpn = []
filter-control = ["filter", "bus"]
tls-aws-lc = ["dep:aws-lc-rs", "rustls/aws-lc-rs", "tokio-rustls/aws-lc-rs", "quinn/rustls-aws-lc-rs"]
compute = ["dep:rayon"]
grpc-surface = ["dep:tonic", "dep:tonic-health"]
kwt = ["dep:kwt", "dep:uuid", "dep:aetherdb", "dep:tempfile"]
image-trust = ["dep:p256"]
nautalid-tool = ["dep:clap", "dep:rand_core", "image-trust"]

[dev-dependencies]
rand_core = { version = "0.6", features = ["getrandom"] }
tempfile = "3"
tower = { version = "0.5", features = ["util"] }
rcgen = { version = "0.14", default-features = false, features = ["crypto", "pem", "ring"] }
rustls-pemfile = "2"
futures-util = { version = "0.3", default-features = false }

[package.metadata.docs.rs]
all-features = true
features = ["filter-control"]

# Patched `h3` for integration-test WebTransport client only (`tests/wt_client.rs`).
# Not included in the crates.io tarball; production server uses crates.io `h3` 0.0.8.
[patch.crates-io]
h3 = { path = "vendor/h3" }

[[bin]]
name = "nautalid"
path = "src/main.rs"

[[bin]]
name = "nautalid-tool"
path = "src/bin/nautalid_tool.rs"
required-features = ["nautalid-tool", "image-trust"]

[[bin]]
name = "aetherdb-hub"
path = "src/bin/aetherdb_hub.rs"
required-features = ["kwt"]

[[bin]]
name = "aetherdb-node"
path = "src/bin/aetherdb_node.rs"
required-features = ["kwt"]

[[test]]
name = "bus_ipc"
path = "tests/bus_ipc.rs"
required-features = ["filter-control"]

[[test]]
name = "server_lifecycle"
path = "tests/server_lifecycle.rs"
required-features = ["filter-control"]

[[test]]
name = "aetherdb_shared_replay"
path = "tests/aetherdb_shared_replay.rs"
required-features = ["kwt"]

[[test]]
name = "aetherdb_mtls_replay"
path = "tests/aetherdb_mtls_replay.rs"
required-features = ["kwt"]

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

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

[[test]]
name = "wt_aether_transport"
path = "tests/wt_aether_transport.rs"
required-features = ["kwt", "filter"]

[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
strip = true
panic = "abort"