Bascule shell runtime workspace — governed shell access layer for Substrate/Guildhouse FFC deployments. Crates: - bascule-agent: node agent with SSH server + command filtering - bascule-core: audit, grant engine, ceremony types, session - bascule-filter-core: log line filtering (stdio protocol) - bascule-gateway: OIDC auth, session management, SAT validation - bascule-node-agent: k8s DaemonSet agent (pod watcher, BPF manager) - bascule-proto: protobuf definitions - bascule-shell: governed SSH shell (commands, elevation, REPL) - bascule-tail: chronicle log tail + fanout - ceremony-engine: ceremony lifecycle (6 types + request/resolution) 172 tests passing. Implements SBS-SPEC-0001 shell model. Reference impl for SPEC-SHELLOPS-0001 Layer 1 (root shell).
86 lines
1.8 KiB
TOML
86 lines
1.8 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"bascule-proto",
|
|
"bascule-filter-core",
|
|
"bascule-node-agent",
|
|
"bascule-shell",
|
|
"bascule-tail",
|
|
"bascule-agent",
|
|
"bascule-core",
|
|
"bascule-gateway",
|
|
"ceremony-engine",
|
|
]
|
|
|
|
[workspace.dependencies]
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["full"] }
|
|
async-trait = "0.1"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
serde_json_canonicalizer = "0.3"
|
|
serde_yaml = "0.9"
|
|
|
|
# gRPC
|
|
tonic = "0.12"
|
|
tonic-build = "0.12"
|
|
prost = "0.13"
|
|
prost-types = "0.13"
|
|
|
|
# Kubernetes
|
|
kube = { version = "0.98", features = ["runtime", "derive"] }
|
|
k8s-openapi = { version = "0.24", features = ["latest"] }
|
|
schemars = "0.8"
|
|
|
|
# TLS
|
|
rustls = { version = "0.23", features = ["ring"] }
|
|
|
|
# Crypto
|
|
sha2 = "0.10"
|
|
hmac = "0.12"
|
|
|
|
# Observability
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
|
|
|
|
# Common
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
thiserror = "2"
|
|
anyhow = "1"
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
dashmap = "6"
|
|
regex = "1"
|
|
which = "7"
|
|
dirs = "6"
|
|
rand = "0.8"
|
|
hex = "0.4"
|
|
jsonwebtoken = "9"
|
|
|
|
# SSH
|
|
russh = "0.49"
|
|
russh-keys = "0.49"
|
|
ssh-key = { version = "0.6", features = ["ed25519", "rand_core"] }
|
|
|
|
# Database
|
|
sqlx = { version = "0.8", features = [
|
|
"runtime-tokio",
|
|
"tls-native-tls",
|
|
"postgres",
|
|
] }
|
|
|
|
# HTTP
|
|
axum = "0.8"
|
|
tower-http = { version = "0.6", features = ["trace"] }
|
|
config = "0.14"
|
|
tokio-stream = "0.1"
|
|
tempfile = "3"
|
|
|
|
# Internal crate deps
|
|
bascule-filter-core = { path = "./bascule-filter-core" }
|
|
bascule-core = { path = "./bascule-core" }
|
|
bascule-proto = { path = "./bascule-proto" }
|
|
ceremony-engine = { path = "./ceremony-engine" }
|