Files
zeekay a671dee75a State a version once
A version written into a manifest is written into every manifest that wants it,
which is how eslint came to exist in a hundred and four forms across this estate
and how a package came to resolve twice at run time. The catalog moves the number
out of the manifest: a manifest names the package, the workspace names the
version.

Four are held below their latest because the newer release cannot be used, and
the reason is recorded rather than the version alone: @noble/hashes 2 renamed
every subpath the web3 stack imports, @splinetool/runtime 2 depends on a package
that was never published, @dynamic-labs 5.4.1 the same, and react-resizable-panels
3 points its types condition at the bundle.
2026-08-29 13:46:58 -07:00

1.4 KiB

replicate

Hanzo Replicate

Hanzo Replicate is a standalone disaster recovery tool for SQLite. It runs as a background process and safely replicates changes incrementally to another file or S3. Replicate only communicates with SQLite through the SQLite API so it will not corrupt your database.

Module: github.com/hanzoai/replicate

Docker

ghcr.io/hanzoai/replicate:latest

Features

  • WAL streaming to S3 (continuous incremental replication)
  • End-to-end encryption via luxfi/age v1.4.0 (X25519, PQ upgrade path via X-Wing/ML-KEM-768)
  • Compatible with hanzoai/s3 (Apache-2.0, SeaweedFS-derived) and any S3-compatible target
  • Init container restore + sidecar replication pattern for K8s

Encryption

Replicated data is encrypted before leaving the process using luxfi/age. Configure encryption in replicate.yml:

dbs:
  - path: /data/db.sqlite
    replicas:
      - type: s3
        bucket: my-bucket
        path: service/pod-0
        endpoint: s3.local:9000
        age-identities: /secrets/age-identity.txt
        age-recipients: /secrets/age-recipients.txt

Files on S3 are stored as .zap.age (age-encrypted ZAP binary format).

Usage

replicate replicate [arguments]
replicate restore [arguments] DB_PATH
replicate version

License

See LICENSE.