Summary
peat-sidecar currently assumes Kubernetes deployment (Helm chart, sidecar container, PVC storage). It also needs to run as a standalone systemd service alongside the remote agent's rpm/deb install path for bare-metal and VM deployments.
Current State
- Binary is built as a single static Rust binary (
target/release/peat-sidecar)
- Config is via CLI flags / env vars (already works outside K8s)
- Data dir defaults to
/data/peat-sidecar (K8s-oriented path)
- Deployment assumes Helm + Docker (
Dockerfile, chart/, zarf.yaml)
- No systemd unit file, no rpm/deb packaging, no FHS-compliant paths
Proposed Approach
1. FHS-Compliant Defaults
Add sensible defaults for non-K8s environments:
- Data dir:
/var/lib/peat-sidecar (instead of /data/peat-sidecar)
- Config:
/etc/peat-sidecar/config.yaml or env file at /etc/default/peat-sidecar
- Logs: stdout (systemd journal captures this)
- Socket:
unix:///var/run/peat-sidecar.sock or tcp://127.0.0.1:50051
2. Systemd Unit File
[Unit]
Description=Peat Sidecar - CRDT mesh sync for UDS Remote Agent
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
EnvironmentFile=-/etc/default/peat-sidecar
ExecStart=/usr/bin/peat-sidecar
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
3. RPM/DEB Packaging
- Use
cargo-deb for Debian packages
- Use
cargo-rpm or nfpm for RPM packages
- Package includes: binary, systemd unit, default env file, man page (optional)
- Coordinate with remote agent's packaging so they can be installed together or as a dependency
4. Install Script (for non-package-manager environments)
Simple install.sh that:
- Copies binary to
/usr/bin/
- Creates systemd unit
- Creates data dir with appropriate permissions
- Creates env file template
- Enables and starts the service
Testing
- CI builds rpm and deb artifacts
- Test install/uninstall cycle in a container (ubuntu, rocky)
- Verify sidecar starts, binds socket, and serves Connect RPC
References
src/main.rs:39 — current default data dir (/data/peat-sidecar)
Dockerfile — current container build
- Remote agent rpm/deb packaging (coordinate paths and dependencies)
Summary
peat-sidecar currently assumes Kubernetes deployment (Helm chart, sidecar container, PVC storage). It also needs to run as a standalone systemd service alongside the remote agent's rpm/deb install path for bare-metal and VM deployments.
Current State
target/release/peat-sidecar)/data/peat-sidecar(K8s-oriented path)Dockerfile,chart/,zarf.yaml)Proposed Approach
1. FHS-Compliant Defaults
Add sensible defaults for non-K8s environments:
/var/lib/peat-sidecar(instead of/data/peat-sidecar)/etc/peat-sidecar/config.yamlor env file at/etc/default/peat-sidecarunix:///var/run/peat-sidecar.sockortcp://127.0.0.1:500512. Systemd Unit File
3. RPM/DEB Packaging
cargo-debfor Debian packagescargo-rpmornfpmfor RPM packages4. Install Script (for non-package-manager environments)
Simple
install.shthat:/usr/bin/Testing
References
src/main.rs:39— current default data dir (/data/peat-sidecar)Dockerfile— current container build