Status: Approved for implementation
Owner: Abduaziz Umarov
Target: Public v0.1 in four focused weeks; polished v1.0 around weeks seven to eight
Backup jobs answer “were bytes copied?” Operators still need to answer “can those bytes recreate a working application?” Recovery tests are often manual, infrequent, undocumented, or limited to storage integrity. Configuration drift, expired credentials, incompatible schemas, incomplete dependencies, and broken boot order remain hidden until an incident.
Given an existing backup and a drill plan, Rehearse creates an isolated environment, restores application state, starts the workload, verifies meaningful behavior, reports evidence, and cleans up automatically.
- Solo developers and small teams running Docker Compose applications
- DevOps/SRE engineers responsible for recovery readiness
- Maintainers using restic or object-storage-based backups who lack application-level restore verification
A new user on macOS or Linux can install Rehearse, configure the included queued-orders workload, select a real restic recovery point, run a drill from the UI or CLI, watch each stage, receive a pass/fail report with measured recovery time, and verify that all temporary resources were removed.
- Plans: Create, validate, version, enable, disable, and schedule drill plans.
- Sources: Resolve and fetch a selected recovery point through a source-adapter interface.
- Targets: Restore files or databases through a separate target-adapter interface.
- Sandbox: Create uniquely labeled Docker Compose resources with CPU, memory, time, and network policy limits.
- Orchestration: Persist a deterministic state machine supporting cancellation, timeout, retries only where safe, and restart reconciliation.
- Probes: Run required and optional HTTP, TCP, command, SQL, and data assertions.
- Evidence: Store redacted logs, stage durations, selected recovery point, probe results, cleanup result, and final status.
- Interfaces: Offer authenticated localhost web UI plus a CI-friendly CLI returning JSON and JUnit.
- Observability: Export Prometheus metrics and provide an optional Grafana dashboard.
- Notifications: Support at least one webhook-compatible completion/failure notification in v1.
- Source: restic
- Target: PostgreSQL plus generic files/Docker volumes
- Sandbox: local Docker Compose
- Workload: queued-orders API, RabbitMQ worker, PostgreSQL
- Sources: restic, local files/archives, S3 objects, trusted custom command
- Targets: generic files/volumes, PostgreSQL, MySQL/MariaDB, SQLite, trusted custom command
Custom commands require explicit trust, a restricted environment, timeouts, output limits, redaction, and clear warnings.
- Native signed release artifacts for macOS and Linux
- Embedded React/TypeScript production assets and SQLite database
- Default bind address
127.0.0.1; authenticated access even locally - No secret persistence; environment/keychain/file references only
- Crash-safe cleanup and no interference with non-Rehearse Docker resources
- Deterministic reports suitable for CI retention
- Accessible UI covering keyboard navigation, focus, contrast, and screen-reader labels
- Five consecutive clean end-to-end reference drills on macOS and Linux CI/hosts
- Injected failure cases produce the expected stage and typed reason
- Forced termination leaves resources that the janitor removes on restart
- A user unfamiliar with the code completes the quickstart from documentation
- Public tagged v1.0 release and demo recording
- Architecture and failure-mode documentation
- CI, security scanning, Terraform deployment proof, Grafana dashboard, and real service integration tests visible in the repository
- Resume bullets written only from measured shipped behavior
Electron, Windows, Kubernetes, hosted multi-tenancy, organizations/RBAC, production failover automation, native managed-cloud database APIs, and exhaustive backup-provider coverage.
v1 is complete when the adapter matrix works through the same orchestration contract; cleanup, cancellation, crash recovery, and secret redaction are tested; macOS/Linux packages and checksums are published; CI mode and reports are documented; Terraform provisions the AWS demonstration path; the quickstart is independently reproducible; and the final security/accessibility/project-completion audits have no unresolved release blockers.