Files
wakey/wakey-control-plane/Cargo.toml
T
lda Verified f6f419277c
release / build (push) Successful in 4m0s
oh three seven the big tracing update
37 + 73 = 100 btw

1. tracing
   - much more tracing across agent and cc
   - metrics, logs and spans exported through otlp (grpc)
   - console logs, otlp logs and traces have independent filters now
   - follow a command from cc to agent, or a snapshot from collection to storage, in one trace
   - exporters retry temporary failures with backoff and keep queues bounded
   - prolonged collector outages can lose telemetry
   - exporter and transport diagnostics stay in console logs so exports don't generate more exports
   - check out them fields at docs/telemetry.md
   - process them with guides from docs/telemetry-recipes.md

2. more process info
   - agent and cc report process/host uptime, process RSS, CPU time and open file descriptors
   - the FD count includes files, sockets and pipes
   - host total/available memory and 1/5/15-minute load are included where supported
   - these are available through otlp now, with a UI view planned later

3. config duration now uses time strings
   - instead of `*_seconds` or `*_days` which is bullshit
   - write durations like "30s", "60d" or "1h 30m", parsed by humantime
   - check docs/config-durations.md
   - old numeric keys still load and produce a deprecation warning
   - init-config --from-config rewrites those keys into the new format and keeps your telemetry and access settings
   - api/ws numeric fields and existing numeric cli flags are unchanged

4. devices
    - clearer labels in the UI
    - rename or forget saved devices
    - remember, attach and merge keep the details dialog open
    - details stay accessible even when the device drops out of your current list filters
    - presence comes from endpoints, and unnamed devices get better fallback names
    - renaming with an invalid name returns 400, while storage failures return 500

5. backend cleanup
    - this helps with tracing
    - ~~no more~~ less long asf fns
    - related device reads share a SQLite transaction for a consistent view
    - snapshot traces show pool wait, transaction begin, row writes and commit separately
    - wake lookup searches the full fleet, including devices beyond the UI list's 1,000-row cap

6. fleet collection caching
    - reuse the grouped view until DB or connected-agent state changes
    - if changes keep interrupting a rebuild, return 503 fleet_busy so the caller can retry
    - current fleet/device/endpoint counts are also available as metrics
    - cool

7. origin auth
    - docs/origin-auth.md
    - validate Cloudflare Access tokens at the origin
    - caddy calls cc's /internal/auth/verify before proxying protected routes
    - configure [access] with the protected app's issuer and AUD
    - the signing-key URL defaults from the issuer and can be overridden
    - cache signing keys according to HTTP freshness headers and revalidate with ETag/Last-Modified
    - update the caddy config!
    - keep cc bound to loopback so requests go through caddy's auth checks
    - agent endpoints continue using their own authentication
    - closing the confirmed origin bypass requires BOTH the cc config and the caddy update

8. retention + deployment bits
    - device_retention defaults to "60d", and "0d" disables expiry
    - an agent-collected device's retention age resets whenever cc receives a snapshot containing it
    - complete snapshots immediately remove rows the agent has omitted
    - saved devices and their manually attached identifiers remain saved
    - OpenWrt UCI/environment setup, credential-entry fixes and an updated copy script

Ping, multi-CC, the process-info UI and profiling are planned for later.

all codex btw idfk what these do
there are things to do.
2026-10-13 02:28:32 +07:00

50 lines
1.5 KiB
TOML

[package]
name = "wakey-control-plane"
version = "0.3.7"
edition = "2024"
publish = ["gitea"]
[dependencies]
anyhow = { workspace = true }
axum = { version = "0.8", features = ["ws", "json"] }
clap = { version = "4", features = ["derive"] }
futures-util = "0.3"
humantime-serde = "1"
http-cache-semantics = { version = "3", default-features = false, features = ["reqwest"] }
jsonwebtoken = { version = "10.3", default-features = false, features = ["aws_lc_rs"] }
macaddr = { workspace = true }
nix = { version = "0.31", default-features = false, features = [
"signal",
"process",
] }
reqwest = { version = "0.13", default-features = false, features = [
"json",
"rustls",
] }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = "2"
sqlx = { version = "0.8", features = [
"runtime-tokio",
"sqlite",
"macros",
"migrate",
"uuid",
"json",
] }
toml = "1.1"
tokio = { workspace = true }
tower-http = { version = "0.6.8", features = ["fs"] }
tracing = { workspace = true }
uuid = { workspace = true }
wakey-agent = { path = "../wakey-agent", registry = "gitea", version = "0" }
wakey-core = { path = "../wakey-core", registry = "gitea", version = "0", features = ["telemetry"] }
[target.'cfg(target_os = "linux")'.dependencies]
wakey-linux = { path = "../wakey-linux", registry = "gitea", version = "0", features = ["telemetry"] }
[dev-dependencies]
tower = { version = "0.5", features = ["util"] }
jsonwebtoken = { version = "10.3", default-features = false, features = ["use_pem", "aws_lc_rs"] }