[package] name = "ops-exec" version = "0.1.0" edition = "2024" license = "MIT" description = "The trusted executor: run a typed, capability-gated step on a host and observe a host, over local exec, SSH, or an in-session agent. Trust root is SSH keys + Tailscale/Headscale only. Used by sando and bento." [features] default = [] # AgentRpc transport (the client half) — used by drivers that talk to ops-agent. rpc = ["dep:reqwest", "dep:serde_json", "dep:futures-util"] # The ops-agent binary (the on-host half). Pulls in the HTTP server + rpc. agent = ["rpc", "dep:axum", "dep:tokio-stream", "dep:tracing-subscriber", "dep:toml"] [dependencies] tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "io-util", "fs", "process", "sync"] } async-trait = "0.1.83" serde = { version = "1.0.228", features = ["derive"] } anyhow = "1.0.102" thiserror = "2.0.18" tracing = "0.1.44" # rpc / agent only reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json"], optional = true } serde_json = { version = "1", optional = true } futures-util = { version = "0.3", optional = true } axum = { version = "0.8.8", optional = true } tokio-stream = { version = "0.1", optional = true } tracing-subscriber = { version = "0.3.22", features = ["env-filter"], optional = true } toml = { version = "0.8", optional = true } [[bin]] name = "ops-agent" path = "src/bin/ops-agent.rs" required-features = ["agent"] [dev-dependencies] tempfile = "3.20" tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "time"] }