Files
wakey/wakey-agent/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

43 lines
1.2 KiB
TOML

[package]
name = "wakey-agent"
version = "0.3.7"
edition = "2024"
publish = ["gitea"]
[dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive"] }
futures-util = "0.3"
http = "1"
humantime-serde = "1"
macaddr = { version = "1", features = ["serde", "serde_std"] }
nix = { version = "0.31", default-features = false, features = [
"signal",
"process",
] }
reqwest = { version = "0.13", default-features = false, features = [
"json",
"rustls",
] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = [
"fs",
"macros",
"io-util",
"rt-multi-thread",
"time",
"signal",
"sync",
] }
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
toml = "1.1"
tracing = "0.1"
url = "2"
vt100 = { package = "wakey-vt100", path = "../vendor/vt100", registry = "gitea", version = "=0.16.2-wakey.2" }
wakey = { path = "..", 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"] }