| 1 |
[package] |
| 2 |
name = "ops-exec" |
| 3 |
version = "0.1.0" |
| 4 |
edition = "2024" |
| 5 |
license = "MIT" |
| 6 |
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." |
| 7 |
|
| 8 |
[features] |
| 9 |
default = [] |
| 10 |
# AgentRpc transport (the client half) — used by drivers that talk to ops-agent. |
| 11 |
rpc = ["dep:reqwest", "dep:serde_json", "dep:futures-util"] |
| 12 |
# The ops-agent binary (the on-host half). Pulls in the HTTP server + rpc. |
| 13 |
agent = ["rpc", "dep:axum", "dep:tokio-stream", "dep:tracing-subscriber", "dep:toml"] |
| 14 |
|
| 15 |
[dependencies] |
| 16 |
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "io-util", "fs", "process", "sync"] } |
| 17 |
async-trait = "0.1.83" |
| 18 |
serde = { version = "1.0.228", features = ["derive"] } |
| 19 |
anyhow = "1.0.102" |
| 20 |
thiserror = "2.0.18" |
| 21 |
tracing = "0.1.44" |
| 22 |
|
| 23 |
# rpc / agent only |
| 24 |
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json"], optional = true } |
| 25 |
serde_json = { version = "1", optional = true } |
| 26 |
futures-util = { version = "0.3", optional = true } |
| 27 |
axum = { version = "0.8.8", optional = true } |
| 28 |
tokio-stream = { version = "0.1", optional = true } |
| 29 |
tracing-subscriber = { version = "0.3.22", features = ["env-filter"], optional = true } |
| 30 |
toml = { version = "0.8", optional = true } |
| 31 |
|
| 32 |
[[bin]] |
| 33 |
name = "ops-agent" |
| 34 |
path = "src/bin/ops-agent.rs" |
| 35 |
required-features = ["agent"] |
| 36 |
|
| 37 |
[dev-dependencies] |
| 38 |
tempfile = "3.20" |
| 39 |
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "time"] } |
| 40 |
|