# ---
# tags: foculus, config
# crystal-type: source
# crystal-domain: cyber
# ---
[workspace]
[package]
name = "foculus"
version = "0.1.0"
edition = "2024"
description = "Consensus by convergence โ VEC substrate (structural sync) plus pluggable fork-choice"
bin
name = "foculus"
path = "src/bin/main.rs"
# no required-features: the consensus CLI (focus, reconcile, finality, settle,
# chain) builds without net; the `node` daemon subcommand is gated on `net`.
[features]
default = ["net"]
# Networked operation: iroh transport, tokio runtime, device discovery.
# Disable to use the consensus + protocol primitives (fork-choice, finality,
# chain, vdf, erasure, das, nmt) without pulling in the iroh dep tree.
net = ["dep:iroh", "dep:tokio", "dep:tracing-subscriber"]
[dependencies]
nebu = { package = "cyb-nebu", path = "../strata/nebu/rs" }
cyber-hemera = { path = "../hemera/rs" }
bbg = { path = "../bbg/rs" }
zheng = { path = "../zheng/rs" }
tape = { path = "../tape/impl/rust" }
tru = { path = "../tru/rs" } # attribution: value / marginals (the settlement estimator draws against these)
iroh = { path = "../radio/iroh", features = ["address-lookup-mdns"], optional = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["full"], optional = true }
anyhow = "1"
rand = "0.9"
clap = { version = "4", features = ["derive"] }
tracing-subscriber = { version = "0.3", optional = true }
[dev-dependencies]
proptest = "1"
tempfile = "3"
[patch.crates-io]
cyber-hemera = { path = "../hemera/rs" }
iroh-quinn = { git = "https://github.com/n0-computer/quinn", rev = "ebbd7654658415a3c5e627f0c0113e6abc2ac020" }
iroh-quinn-proto = { git = "https://github.com/n0-computer/quinn", rev = "ebbd7654658415a3c5e627f0c0113e6abc2ac020" }
iroh-quinn-udp = { git = "https://github.com/n0-computer/quinn", rev = "ebbd7654658415a3c5e627f0c0113e6abc2ac020" }