Revenant
Prove your database backups actually recover
Connects to PostgreSQL (local or AWS RDS), runs validation checks from revenant.yaml, measures recovery time, writes reports, and tears down test sandboxes. Language-agnostic — your app can be Node, Python, Go, or anything.
Free CLI (this repo)
- 1 DB, yaml + CLI
- Local or AWS verify
- report.json + report.md
GitHub Action
- Any repo, CI/CD
- No Go install in pipeline
- revenant-action@v1
Install options
- GitHub Action (recommended for CI) — uses: 277pawan/revenant-action@v1.0.3
- Download binary from GitHub Releases (Linux, Mac, Windows)
- Build from source: go build for contributors
- uses: 277pawan/revenant-action@v1.0.3
with:
version: v0.1.1
config: revenant.yaml
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
Quick start (local Postgres)
export DATABASE_URL='postgres://user:pass@localhost:5432/mydb?sslmode=disable'
revenant init --plan my-app --force
revenant verify
Commands
| Command | What it does |
|---|---|
| revenant doctor | Config, env vars, DB connectivity |
| revenant init | Scan live DB → starter revenant.yaml |
| revenant verify | Run checks; optional AWS snapshot restore |
| revenant snapshot | Validate source, then RDS snapshot |
| revenant reap | Delete orphaned AWS sandboxes |
| revenant migrate | Demo tables only (learning) |
Check types in revenant.yaml
| type | Purpose |
|---|---|
| connect | DB accepts connections |
| schema | expect_tables exist |
| row_count | min/max rows |
| foreign_key | FK + no orphans |
| golden_query | SQL rule + expect_min |
| freshness | column max_age |
| index | expect_indexes |
checks:
- type: connect
- type: schema
expect_tables: [customers, orders]
- type: row_count
table: orders
min: 1
- type: foreign_key
table: orders
references: customers
- type: golden_query
query: "SELECT count(*) FROM orders"
expect_min: 1
- type: freshness
table: orders
column: created_at
max_age: 24h
AWS RDS workflow
Optional recovery.engine: aws-rds restores latest snapshot to a temporary sandbox, runs checks, destroys sandbox. Use revenant reap in CI with if: always() as a safety net.
- JSON + MD Reports
- Artifacts CI
- Never read App code
- Apache-2.0 License
Product demo
Revenant marketing site Product story, features, and links to CLI + Action repos.
GitHub Action marketplace 277pawan/revenant-action — publish and run verify in any repository.