xbp 10.18.2

XBP is a zero-config build pack that can also interact with proxies, kafka, sockets, synthetic monitors.
Documentation
# AGENTS.md


## Cursor Cloud specific instructions


### Codebase overview


XBP is a deployment/operations CLI written in Rust. The repo contains three independent Rust crates (not a Cargo workspace):

| Crate | Path | Description |
|-------|------|-------------|
| `xbp` | `/workspace/` | Main CLI binary (v10.15.1) |
| `xbp_monitor` | `/workspace/xbp_monitor/` | Synthetic monitoring service (actix-web) |
| `xbp_logs` | `/workspace/xbp_logs/` | WebSocket log tailing server (axum + rdkafka) |

### Build & test commands


CI-equivalent commands for the main crate (see `.github/workflows/`):
- `cargo fmt --all -- --check`
- `cargo clippy --all-targets --locked -- -D warnings`
- `cargo test --locked`

Sub-crates are built/tested independently from their own directories.

### Gotchas


- **Cargo.lock was truncated in main**: the committed `Cargo.lock` ends at an incomplete TOML header. Regenerate it with `cargo generate-lockfile` before building.
- **`.cargo/config.toml` limits `jobs = 1`**: builds are intentionally single-threaded and take a while.
- **`xbp_logs` requires `CXX=g++`**: the `rdkafka-sys` crate builds librdkafka via cmake. On this VM, clang is the default C++ compiler but doesn't find `<iostream>`. Use `CXX=g++ cargo build` in `xbp_logs/`, or ensure `libstdc++-13-dev` and `libc++-dev` are installed with the symlink at `/usr/lib/x86_64-linux-gnu/libstdc++.so`.
- **Pre-existing clippy error**: `src/commands/done.rs:393` has an `unnecessary_unwrap` lint that fails `clippy -D warnings`. This is in the committed code.
- **No feature flags needed for default build**: the main crate builds with no features enabled. Feature-gated builds (`kafka`, `monitoring`, `docker`, `kubernetes`) require additional dependencies.
- **`.env` files are committed**: both `/workspace/.env` and `/workspace/xbp_monitor/.env` contain config values (Supabase URLs, GitHub app keys) used at runtime. No additional secrets are required for building or running tests.