-
v1.6.0 Stable
released this
2026-04-01 15:47:10 +00:00 | 0 commits to mainline since this releaseHeadless workflow server + security hardening
New
- wfe-server: Single-binary headless workflow server
- gRPC API with 13 RPCs: workflow CRUD, lifecycle streaming, log streaming, log search
- HTTP webhooks: GitHub and Gitea with HMAC-SHA256 verification, configurable triggers
- OIDC/JWT auth with JWKS discovery and asymmetric algorithm allowlist
- Real-time log streaming via
StreamLogswith follow mode - Full-text log search via OpenSearch with
SearchLogsRPC - Layered config: CLI flags > env vars > TOML file
- wfe-server-protos: gRPC service definitions (tonic 0.14)
- wfe-core:
LogSinktrait for real-time step output streaming - wfe-core: Lifecycle publisher wired into executor
- wfe-yaml: Shell step streaming mode with
tokio::select!
Security
- JWT algorithm confusion prevention (derive alg from JWK, reject symmetric)
- Constant-time static token comparison via
subtlecrate - OIDC issuer HTTPS validation (SSRF prevention)
- Fail-closed on OIDC discovery failure
- Authenticated generic webhook endpoint
- 2MB webhook payload size limit
- Config parse errors fail loudly
- Blocked sensitive env var injection (PATH, LD_PRELOAD, etc.)
- Security regression tests for all critical findings
Fixed
- Shell step streaming respects
timeout_mswithchild.kill() - LogSink threaded from WorkflowHostBuilder through executor to steps
- LogStore OpenSearch indexing wired in server
- Webhook publish failures return 500 instead of 200
Crates published
wfe-core,wfe-sqlite,wfe-postgres,wfe-opensearch,wfe-valkey,wfe-buildkit,wfe-buildkit-protos,wfe-containerd,wfe-containerd-protos,wfe-rustlang,wfe-server-protos,wfe,wfe-yamlDownloads
- wfe-server: Single-binary headless workflow server