Projects

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

  1. GitHub Action (recommended for CI) — uses: 277pawan/revenant-action@v1.0.3
  2. Download binary from GitHub Releases (Linux, Mac, Windows)
  3. 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

CommandWhat it does
revenant doctorConfig, env vars, DB connectivity
revenant initScan live DB → starter revenant.yaml
revenant verifyRun checks; optional AWS snapshot restore
revenant snapshotValidate source, then RDS snapshot
revenant reapDelete orphaned AWS sandboxes
revenant migrateDemo tables only (learning)

Check types in revenant.yaml

typePurpose
connectDB accepts connections
schemaexpect_tables exist
row_countmin/max rows
foreign_keyFK + no orphans
golden_querySQL rule + expect_min
freshnesscolumn max_age
indexexpect_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.