Oracle โ†’ Postgres migration that never leaves your network.

hafen is a self-hosted migration platform. Download the Docker image, run it inside your VPC, point it at your Oracle and Postgres. Nothing phones home. AI conversion uses your own Anthropic API key.

Air-gap friendly. Audit-safe. Open source at the core.

๐Ÿณ Docker + OVA + tarballยท๐Ÿ”’ Runs in your VPCยท๐Ÿง  Bring your own AI keyยท๐Ÿ“– MIT at the core

Oracle is a tax. PostgreSQL is the way out.

70โ€“90%
TCO savings over Oracle per-core licensing
2026
is the year Oracle audits get aggressive โ€” and announcing a migration often triggers one
73%
of enterprise SaaS already runs on Postgres. The readiness question is dead.

But the tools to get there are old. Ora2Pg caps at 4 billion rows per table and needs ~25% manual PL/SQL correction. EDB Migration Portallocks you into EDB Postgres Advanced Server. AWS SCT locks you into AWS. Ispirer won't show you pricing.

A migration platform built for 2026.

๐Ÿ”’

Runs entirely in your infra

Single Docker image (or OVA, or tarball). Everything โ€” UI, parser, AI gateway, runner โ€” inside your firewall. Air-gapped installs supported. No telemetry by default. We cannot see your DDL, your data, or even know you're running it.

๐Ÿง 

AI conversion, your key

Bring your own Anthropic API key (or OpenAI, or a local model). The key lives in your local config. Claude calls go from your server to theirs โ€” we are not in that path. Every conversion shows a diff with reasoning before anything gets applied.

๐ŸŽฏ

Target-neutral

Postgres is Postgres. No upsell to EDB Advanced Server, no lock-in to AWS. Works against RDS, Aurora, Azure Database, Cloud SQL, Crunchy Bridge, Supabase, self-hosted โ€” whatever you already run.

Three steps. No surprises.

1

Install inside your VPC

docker compose up on your own host or Kubernetes cluster. The UI and API come up locally (ports 3000 and 8000). No accounts, no cloud signup, no outbound calls. Takes about 2 minutes on a fresh host.

2

Assess & plan

Point hafen at a read-only Oracle account. It introspects the schema, scores complexity, flags risky constructs (MERGE, CONNECT BY, autonomous txns), and generates a table-by-table load plan โ€” parents first, cycles with deferred constraints, sequence catch-up, rollback points.

3

Run & verify

The runner streams rows via keyset-paginated COPY while Merkle verification runs behind it. Checkpointed and resumable โ€” if a batch dies, --migration-id <id> picks up from the last verified keyset cursor. When it finishes, every row is hash-verified on both sides.

Built on solid primitives.

ANTLR-backed parser
with dialect-agnostic IR. Handles PL/SQL, PL/pgSQL, T-SQL.
Keyset pagination
with composite PK support. Oracle ROWNUM / OFFSET death spirals do not happen here.
Binary COPY protocol
for target-side writes. ~200K rows/sec on commodity hardware.
Merkle-tree row verification
at every batch. Mismatches flagged per-table, not silently swallowed.
Sequence catch-up
constraint deferral for FK cycles, resumable-from-last-checkpoint.
Open source under MIT
Read the code. Run it without us. Fork it if we disappear.

Pricing that matches how you buy.

Migrations are capex events and enterprises want to own their tools. We ship signed license files that run offline. No subscription, no phone-home, no vendor lock-in.

OSS Core

Free
Parser + runner + CLI. MIT.
  • โœ“ANTLR parser + IR
  • โœ“Data-movement runner
  • โœ“Merkle verification
  • โœ“CLI, Docker image
View on GitHub

Community

Free
Full self-hosted install. No license.
  • โœ“Everything in OSS Core
  • โœ“Web UI (localhost)
  • โœ“Assessment + risk list
  • โœ“Canonical AI examples
Download โ†’
Hero SKU

Pro

$25kโ€“$75k
Per-project license. 90 days. Offline.
  • โœ“Everything in Community
  • โœ“AI conversion on your actual code (BYOK)
  • โœ“Runbook PDF generator
  • โœ“Priority grammar fixes + email support
Buy a license

Enterprise

Custom
Site license + air-gap install.
  • โœ“Everything in Pro
  • โœ“Multi-project, unlimited
  • โœ“Air-gap installer + SSO
  • โœ“Dedicated support + SLA
Contact sales

Pro + Enterprise ship as signed offline license files (JWT). Verified locally, valid for the stated term, no network check required. A single successful migration typically recoups its license cost in Oracle savings within 90 days.

How hafen compares.

hafenOra2PgEDB PortalAWS SCT
Fully self-hosted installโœ“โœ“K8s onlyโ€”
Air-gap friendlyโœ“โœ“โ€”โ€”
Open source coreโœ“โœ“โ€”โ€”
AI-assisted PL/SQL conversionโœ“โ€”Limitedโ€”
Bring your own AI key (BYOK)โœ“โ€”โ€”โ€”
Merkle row verificationโœ“โ€”โ€”โ€”
Target-neutral (any Postgres)โœ“โœ“EDB onlyAWS only
Transparent pricingโœ“freefreeAWS metering

FAQ

Will Oracle sue us for using this?

No. Reading your own Oracle schema via ALL_* views is something your DBA does every day. We don't decompile Oracle binaries, bypass licensing, or ship any Oracle IP.

How is this different from Ora2Pg?

Ora2Pg is a Perl script that dumps schema. We have a parser that builds an IR, an AI that fixes what the parser flags, a runner that verifies every row, and a dashboard you can hand to your CTO. We also don't have a 4-billion-row table limit.

Do we need a new Postgres SKU from EDB?

No. hafen targets any Postgres 13+. Plain RDS, Aurora, CloudSQL, Crunchy, Supabase, self-hosted โ€” all equivalent.

Is AI conversion actually safe for production code?

Every generated conversion is shown as a diff against the original with reasoning. You approve each change. Nothing runs unreviewed. The AI call goes from your server to Anthropic (or whichever provider you choose) using your API key โ€” we are not in that path.

Does hafen phone home? Can it run fully air-gapped?

No phone-home. The product image runs entirely inside your network; license verification is offline (signed JWT checked locally). Air-gap installs work โ€” we ship a separate installer bundle with all dependencies vendored.

What if we hit a construct you don't handle?

The parser falls back to a permissive scanner and logs the unsupported construct. The runbook flags it as "manual." You can also open an issue โ€” our ANTLR grammar is open source, and we merge grammar PRs from the community.

How does the license check work offline?

When you buy a Pro license we send you a signed JWT with the project ID, seat count, and expiry. hafen verifies the signature against our public key bundled with the image. No network call. If your license expires, AI conversion and PDF generation stop working โ€” the OSS core (parser, runner) keeps running forever.

Can we start with a free install and upgrade later?

Yes. Run the Community tier forever if you only need assessment + the open-source runner. Drop a Pro license file into the install directory when you're ready for AI conversion and the runbook PDF โ€” no reinstall needed.

Stop paying Oracle. Start this afternoon.

Two commands. The whole platform runs on your laptop or a VM in your VPC.

git clone https://github.com/davidnhg74/hafen
cd hafen && docker compose up