sluice

See sluice in action

Every command and surface shows a clean, legible view — from a one-shot migration to a live continuous-sync stream, a fleet dashboard, and even the alert emails. Piped or scripted, the output stays the plain structured logs; these views appear only at an interactive terminal or in a browser.

sluice sync start — MySQL → Postgres: a consistent snapshot, then live CDC with position, freshness, rows applied, and throughput.

sync start

A continuous-sync stream as a live status panel — mode, position, freshness, rows applied, throughput, health, and recent events.

CDC engaged
CDC engagedSnapshot done; streaming live changes, position advancing.
Applying
ApplyingRows applied and throughput climb as source changes arrive.
Drain & stop
Drain & stopq / ctrl+c drains in-flight changes, then exits cleanly.

migrate

A one-shot schema-and-data copy with a live phase checklist — tables, a per-table bulk-copy bar, then deferred indexes and constraints.

Phases
PhasesTables created; bulk copy begins, indexes and constraints deferred.
Bulk copy
Bulk copyThe per-table bar reads 100%+ once InnoDB's row estimate is passed.
Complete
CompleteSummary panel: tables, rows, duration, and any warnings.

verify

Reconcile the target against the source, row-for-row (or by count), and report exactly what matched.

Checking
CheckingSchema compared, then the data comparison runs.
Clean
CleanTables checked / clean / mismatched / skipped.

backup full

A chunked, optionally encrypted and signed logical backup — with an EndPosition so a later incremental resumes exactly where it left off.

Copying
CopyingSchema captured; rows stream out in size-bounded chunks.
Complete
CompleteTables, rows, chunks, encrypted?, signed?, EndPosition.

restore

Replay a backup chain into a fresh target — schema, data, then constraints.

Applying
ApplyingSchema restored; data replayed, constraints deferred.
Complete
CompleteTables and rows restored.

sync tui

The fleet dashboard in your terminal — every stream's state, restarts, and time-in-state, with a detail pane for the selected stream.

Fleet
FleetLive fleet status; select any stream for its detail.

sync run --dashboard-listen

The same fleet status as a browser dashboard, served on a local port — no terminal required.

Web view
Web viewThe embedded HTML dashboard at --dashboard-listen.

sync health

A scriptable per-stream health probe — freshness, position, lag, and spill — exit-code and JSON friendly for cron and CI.

Probe
ProbePer-stream state, seconds-since-apply, lag, and spill.

metrics-watch

Live PlanetScale target metrics as a status panel — CPU, memory, storage, lag, and connections, sampled on a cadence, with threshold breaches surfaced as live events.

Watching
WatchingThe live metrics panel; breaches appear in the events region.

notifications

Threshold-breach alerts as a rendered HTML email (or Slack / webhook) — advisory, failure-isolated, never affecting the sync.

Email alert
Email alertThe HTML email template for a storage-utilisation breach.

cutover

Prime the target's sequences and AUTO_INCREMENT columns past the migrated data so the app can write safely after the switch. Runs in milliseconds — here's the result panel.

Sequences primed
Sequences primedPer-engine rollup: primed / noop / skipped / refused.

matview refresh

Refresh the target's materialized views after a load or a sync catch-up.

Refreshed
RefreshedViews refreshed / skipped.

trigger setup

Install trigger-based CDC capture on a source with no native replication stream — reporting exactly what DDL it applied.

Installed
InstalledStatements applied, DDL-detection mode, server version.

slot list

List the logical-replication slots on a Postgres source — the ACTIVE column shows at a glance which have a live consumer.

Slots
SlotsName, plugin, active, WAL status, and LSNs — mirroring pg_replication_slots.

More demos

Migrate in motionA full MySQL → Postgres migration: phases, bulk-copy bar, summary.
Encrypted backup → restoreTake an encrypted backup, then restore it into a fresh target — the safe roundtrip.
Schema drift, refusedsluice catches a hand-edited target and refuses loudly with a per-column diff and copy-paste DDL.
Schema change, forwardedA column added to the source mid-sync is applied to the target automatically — the stream stays online, no drain and no recovery.
PII, redacted in flightMigrate real customer PII with a redaction rule per column — mask presets, PCI first-6/last-4, SSN, email — applied on the bulk copy and on every live CDC change.