rusty_time-daemon 0.1.9

rtimed, the rusty_time daemon: a pure-Rust NTPv4 and NTS (RFC 8915) client and server with interleaved mode (RFC 9769), rate limiting, Kiss-o'-Death, batched send/receive and an NTP-over-HTTP gateway. The chronyd analog.
[package]
name = "rusty_time-daemon"
description = "rtimed, the rusty_time daemon: a pure-Rust NTPv4 and NTS (RFC 8915) client and server with interleaved mode (RFC 9769), rate limiting, Kiss-o'-Death, batched send/receive and an NTP-over-HTTP gateway. The chronyd analog."
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
homepage.workspace = true
documentation = "https://docs.rs/rusty_time-daemon"
readme = "README.md"
keywords = ["ntp", "nts", "chrony", "daemon", "timesync"]
categories = ["command-line-utilities", "date-and-time", "network-programming"]

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

[dependencies]
rusty_time-core = { workspace = true }
rusty_time-clock = { workspace = true }
rusty_time-api = { workspace = true }
rusty_time-alloc = { workspace = true }
# The daemon is where NTS-KE's TLS stack is actually wanted, so the deliverable
# turns the feature on; library consumers and wasm never see it.
rusty_time-nts = { workspace = true, features = ["ke"] }

# Not called from here. Declared solely to turn on blake3's `pure` feature
# across the whole graph (Cargo features are additive), because spacedb-sdk
# pulls blake3 and its DEFAULT aarch64 path compiles NEON **C/assembly** —
# which needs a `cc` toolchain and breaks the house rule that nothing in the
# build requires one (mission plan §2). Caught by the aarch64 legs of the
# check matrix, which failed with "failed to find tool cc" while x86_64 passed.
# Remove only if spacedb-sdk stops depending on blake3, or blake3 stops
# needing a C compiler on aarch64.
blake3 = { version = "1", default-features = false, features = ["pure"] }
serde_json = { workspace = true }
oxitls-rcgen = "0.3.0"
spacedb-sdk = { version = "0.5.2", default-features = false }
argon2 = "0.5.3"
aes-gcm = "0.11.1"

[lints]
workspace = true

# ---------------------------------------------------------------------------
# Packaging metadata. `cargo deb` and `cargo generate-rpm` read these, so the
# package contents are declared next to the code they package rather than in a
# separate spec that drifts.
# ---------------------------------------------------------------------------

[package.metadata.deb]
name = "rusty-time"
maintainer = "Remade With Rust <noreply@mata.network>"
copyright = "2026, Remade With Rust"
extended-description = """
A pure-Rust NTP/NTS time daemon: chrony remade with Rust.
Speaks NTPv4 and NTS (RFC 8915) as both client and server, with interleaved
mode, per-client and global rate limiting, and no C toolchain anywhere in the
build."""
section = "net"
priority = "optional"
assets = [
    ["../../target/release/rtimed", "usr/sbin/", "755"],
    ["../../target/release/rtimec", "usr/bin/", "755"],
    ["../../README.md", "usr/share/doc/rusty-time/README.md", "644"],
]
# Type=notify readiness and CAP_SYS_TIME-only privileges live in the unit at
# packaging/linux/rusty_time.service, which a test keeps in agreement with what
# `rtimed service show` prints.
systemd-units = { unit-name = "rusty_time", enable = false, start = false, unit-scripts = "../../packaging/linux" }

[package.metadata.generate-rpm]
name = "rusty_time"
summary = "Pure-Rust NTP/NTS time daemon"
assets = [
    { source = "../../target/release/rtimed", dest = "/usr/sbin/rtimed", mode = "755" },
    { source = "../../target/release/rtimec", dest = "/usr/bin/rtimec", mode = "755" },
    { source = "../../packaging/linux/rusty_time.service", dest = "/usr/lib/systemd/system/rusty_time.service", mode = "644" },
]