DetMir ADK-Rust Workspace
This directory is the Rust workspace for replacing operational Python and shell scripts with durable standalone Rust modules.
Layout
Cargo.toml- workspace manifest and shared dependency versions.Cargo.lock- pinned dependency graph for reproducible builds.crates/<module>- one binary or library module per operational function.target/- local build output, ignored by git.
Current Modules
detmir-auto- no-heal autonomous orchestration shadow binary for runningdetmir-check,detmir-dlp, state/report writes, latest symlink updates, and retention cleanup.detmir-core- shared status levels, exit codes, and UTC timestamp helpers.detmir-state- DetMir autonomous state models, normalization, and atomic JSON writes.detmir-aw-client- small blocking ActivityWatch HTTP client and event timestamp helpers.detmir-check- read-only DetMir contour check replacement for the legacy Python command.detmir-dlp- SSH wrapper replacement for remote DLP health JSON collection.dlp-health-check- AW server DLP health check replacement.aw-db-maintenance- guarded weekly SQLite maintenance for old allowlisted process-level session events, with backup-before-delete.aw-ensure-reliability- safe dry-run/apply planner for AW service reliability repair actions that were previously immediate Bash mutations.aw-linux-install- safe dry-run/apply planner for Linux ActivityWatch install wrappers; legacy shell install is explicit.check-aw-full- read-only local AW/RDP full check replacement for the legacy shell helper.dlp-aggregator- AW server DLP warehouse aggregator replacement.dlp-influx-exporter- AW server DLP InfluxDB line protocol exporter replacement.worktime-autoheal- AW server worktime autoheal and backfill replacement.worktime-influx-exporter- AW server worktime InfluxDB line protocol exporter replacement.worktime-prewarm- AW server worktime report cache prewarm replacement.worktime-ui-bridge- AW server worktime sessions to AFK/window bridge replacement.dlp-syslog-forwarder- AW server DLP syslog integration replacement.dlp-webhook-sender- AW server DLP webhook integration replacement.dlp-cef-exporter- AW server DLP CEF/syslog exporter replacement.extract-ioc-from-sigma- offline Sigma/Hayabusa IOC export replacement used by the DLP IOC preload wrapper.merge-aw-server-dbs- ActivityWatch SQLite DB merge replacement used by legacy root DB recovery/deploy tooling.prod-backup-restore- safe planner/checker for the destructive production backup-restore flow; apply remains explicit legacy-only at this stage.prod-rollout- safe planner/orchestrator for production AW server/Windows rollout; normal script runs are plan-only and real rollout requires explicit--apply.rdp-worktime-report- local RDP worktime CSV/JSON report helper replacement for the legacy shell/Python script.aw-contour-smoke- Rust replacement for the Proxmox-side DetMir contour smoke checks, used through a Rust-first project wrapper.diag-and-manual-restart- Rust replacement for the AW/DLP diagnostic and explicit manual restart helper, with conservative no-restart healthy path.aw-browser-smoke- Rust launcher for the browser smoke test; Playwright remains the execution engine and the legacy Node script remains fallback.detmir-status- read-only DetMir state normalizer with text, JSON, and ADKContentoutput. Also buildsdetmir-adk-statusas a compatibility binary.
Migration Runbook
Use RUNBOOK.md as the operational plan for replacing Python and shell modules
with Rust. It defines migration phases, safety gates, rollback rules, and the
order in which DetMir modules should be moved.
Commands
cd adk-rust
cargo fmt --all
cargo check --workspace
cargo build --release --workspace
Run the current status module:
cd adk-rust
cargo run -p detmir-status -- --json
cargo run -p detmir-status -- --adk-json
cargo run -p detmir-status -- status --json
Migration Rules
- New replacements go under
crates/and are added to workspacemembers. - Keep modules standalone: config comes from files, environment variables, or explicit CLI flags; no laptop-only assumptions.
- Default to read-only behavior first; add mutation/recovery paths only with tests and explicit operator-safe failure modes.
- Do not embed secrets in binaries, source files, or examples.
- Every module should expose machine-readable JSON output where practical.