[package]
name = "koi-net"
description = "Local network toolkit: service discovery, DNS, health monitoring, TLS proxy, and certificate mesh"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
readme = "README.md"
keywords = ["networking", "mdns", "dns", "tls-proxy", "service-discovery"]
categories = ["command-line-utilities", "network-programming"]

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

[dependencies]
koi-common.workspace = true
koi-dashboard.workspace = true
koi-compose.workspace = true
koi-serve.workspace = true
koi-mdns.workspace = true
koi-certmesh.workspace = true
# The batteries-included binary ships every optional backend. Request the leaf features
# explicitly so a future default-features flip cannot silently strip Docker / the
# credential store / QR from the daemon.
koi-crypto = { workspace = true, features = ["keyring", "qr"] }
os-truststore.workspace = true
koi-config.workspace = true
koi-dns.workspace = true
koi-health.workspace = true
koi-proxy.workspace = true
koi-udp.workspace = true
koi-runtime = { workspace = true, features = ["docker"] }
koi-client.workspace = true
koi-mcp.workspace = true
chrono.workspace = true
clap.workspace = true
tokio.workspace = true
tokio-stream.workspace = true
tokio-util.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
tracing-appender.workspace = true
anyhow.workspace = true
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
async-trait.workspace = true
async-stream.workspace = true
axum.workspace = true
tower-http.workspace = true
hostname = "0.4"
if-addrs.workspace = true
hickory-proto.workspace = true
crossterm.workspace = true
url.workspace = true
# Terminal-profile-aware help rendering (folded in from the former command-surface
# crate in P09; these were transitive via that crate's `render` feature).
console.workspace = true
is-terminal.workspace = true
supports-color.workspace = true
terminal_size.workspace = true
utoipa.workspace = true
utoipa-scalar = { workspace = true }
open.workspace = true
rand.workspace = true
base64.workspace = true
subtle.workspace = true
rustls.workspace = true
tokio-rustls.workspace = true
hyper-util.workspace = true

[dev-dependencies]
tower = { version = "0.5", features = ["util"] }
rcgen.workspace = true
# A real MCP client (over a bound TCP listener) for the /v1/mcp e2e test.
rmcp = { workspace = true, features = [
    "client",
    "transport-streamable-http-client-reqwest",
] }
# Async HTTP client for the ADR-018 Tier-2 two-daemon integration test
# (crates/koi/tests/two_daemon_certmesh.rs). Already in the lockfile via rmcp's
# reqwest transport, so `--locked` is unaffected.
reqwest = { workspace = true, features = ["json"] }

[target.'cfg(unix)'.dependencies]
libc.workspace = true

[target.'cfg(windows)'.dependencies]
windows-service = "0.8"
