PortaD
Local-first data portability · v0.1

Move your workspace.
Keep the truth.

PortaD exports a SaaS workspace into a neutral, checksummed package, reports exactly what will survive the trip, and imports it into the target system — with a diff at the end that proves nothing was invented.

checking API……
job · notion → hulylive preview
NSourceNotion
◆Packagenotion.portad
HTargetHuly
Export✓ done
Validate · 5 layers✓ done
Import · checkpoint 4/6resumable

Adapters being built for the tools you already use

How it works

Six stages, every one auditable

The same pipeline whether you run it from the terminal today or from the hosted plane tomorrow.

01

Export

Pull the workspace into a neutral, checksummed .portad package — attachments included.

02

Validate

Five layers check structure, references and integrity before a single byte is mapped.

03

Map

Field-level mapping rules translate the source schema — every decision is recorded.

04

Transform

One command rewrites the package for the target system with a per-field fidelity report.

05

Import

Resumable import writes into the target; checkpoints mean interruptions never redo work.

06

Verify

A round-trip diff proves what moved, what changed, and what could not be carried.

Every stage is a CLI command you can run, script, and audit locally.

Principles

Built so you can trust the result

Portability is only useful if the output is provable. These are the guarantees baked into every run.

Local-first

Your data leaves the machine only when you say so. The .portad package is fully usable without any PortaD service.

Resumable

Interrupted migrations continue from checkpoints — verified downloads and written files are reused, never redone.

Verifiable

Five validation layers, checksums, and a round-trip diff prove what migrated, what changed, and what cannot be carried.

Extensible

A small adapter SDK with entry-point discovery, stable errors, and a fixtures framework for contributors.

Coverage

Everything a workspace is made of

Drag through the record types the pipeline understands — each one carries a field-level fidelity status through the whole trip.

Documents

Pages, blocks, nested content and attachments

PRESERVED

Databases

Rows, relations, views and schema metadata

PRESERVED

Tasks

Issues, statuses, assignees, due dates

TRANSFORMED

Files

Uploads with checksums and original names

PRESERVED

People

Members, roles and workspace permissions

TRANSFORMED

Comments

Threads, replies, mentions and reactions

PRESERVED

Wikis

Knowledge bases with full link structure

PRESERVED

Issues

Boards, sprints and custom fields

TRANSFORMED

From your terminal

The hosted UI mirrors
the CLI, exactly.

Every button in this dashboard maps to a command you can run yourself. No black boxes: script it, audit it, pin it in CI. Hosted execution — upload a package, we run the pipeline — arrives with the hosted plane.

  • One binary, zero daemons on your machine
  • Exit codes and JSON reports for automation
  • The same checksums, wherever it runs
curl -fsSL portad.dev | sh
portad — zsh
$
✓ exported 1,284 records · 12 attachments
✓ 5 validation layers passed · checksums verified
✓ round-trip diff clean — nothing invented

Comparison

Why not just export and retype?

Vendor exports lose relationships. Copy-paste loses weekends. PortaD is the third option.

CapabilityPortaDManual copyVendor export
Field-level fidelity report~
Round-trip diff that proves the result
Resumes after interruption
Works offline on your machine
No vendor lock-in — open package format

Your data never moves
without you saying so.

The package format, the checksums and the diff report are designed so you can hand them to a security team and they can hand them back with questions — not shrugs.

  • Local-first: nothing uploads unless you choose the hosted plane
  • SHA-256 checksums on every file, verified on both ends
  • Explicit, per-run package upload — no background sync, ever

FAQ

Straight answers

By default, nowhere. Export, validate, transform and import all run on your machine against a local .portad package. The hosted plane only ever sees a package you explicitly upload — and that feature isn't enabled yet.

The open way to move your data

Start with the fixtures demo — no accounts, no credentials, the whole pipeline in under a minute.