IBM i modernization

Migrate off IBM i.
Prove nothing broke.

Constat rewrites your RPG and COBOL as safe Rust, moves DB2 to PostgreSQL, and unhooks the middleware your programs depend on. Then, program by program, it proves the new system produces the same business result as the old one on your own inputs. No big-bang cutover. Nothing dropped silently. No vendor lock-in. It runs entirely on your own infrastructure, so your code and data stay with you.

  • 01

    Program-scoped equivalence

    old and new run on the same inputs, results you re-check yourself

  • 02

    Whole IBM i estate

    RPG, COBOL, DB2, middleware, dependencies

  • 03

    Verified engine

    code generation backed by machine-checked proofs (Lean 4, Z3, CVC5)

  • 04

    Humans and agents

    a CLI for engineers, MCP tools for AI agents

  • 05

    No big-bang

    old and new run side by side until you trust it

The proof, in numbers

33,784
machine-checked theorems0 sorry · 4 named axioms
53
programs sealed run-on-bothvs live IBM i V7R5
44
public NIST programs byte-exacton real IBM i, look them up
50/50
workspaces audit COHERENTre-checkable
See how we prove it

Why now

Your IBM i works. That's exactly the risk.

Because it runs, it never makes this quarter's roadmap. Meanwhile, three clocks are ticking.

  1. 01

    The experts are retiring

    The people who understand your RPG and COBOL are leaving. Every year the code gets harder to change and easier to break.

  2. 02

    The bills keep climbing

    Proprietary hardware. Proprietary database. Per-core licensing. You pay more every year just to stand still, and the migration you keep deferring only grows.

  3. 03

    The logic is irreplaceable

    Decades of business rules live only in this code. Lose them in a rewrite and you find out in production, in an audit, or in court.

Don't wait for a failure to force the change.

Plan the move while you're in control.

See how a migration looks

The whole estate

The whole stack moves, or the lock-in stays.

A converter that only touches source code leaves you on the same database, the same middleware, the same platform. Constat moves every layer, and marks each with the assurance behind it.

  1. 01 RPG, COBOL to Rust

    Your code

    RPG and COBOL become clean, memory-safe Rust with no unsafe code in your business logic. Readable, testable, and yours to recompile, so it drops into a modern stack.

    Rust memory-safe yours
  2. 02 DB2 to PostgreSQL

    Your data

    PROVEN

    DB2 for i moves to PostgreSQL with its schema and defined behavior preserved. This is the lane we test hardest.

    PostgreSQL schema intact behavior checked
  3. 03 CL, MQ, 5250 decoupled

    Your middleware

    Job control, message queues and green screens get unhooked from the platform instead of dragged along.

    unhooked replaceable independent
  4. 04 No vendor lock-in

    Your dependencies

    OPEN

    The lock-in leaves with the migration. You keep open Rust and open PostgreSQL, on your own infrastructure.

    open stack own infra no lock-in

What we read

Your whole source tree, not just the easy files

One pipeline takes the languages an IBM i estate is actually written in. Each lane is handled on its own terms, and each carries its own maturity label, never a blanket claim.

01 ILE COBOL Proven hardest
02 RPG IV, fixed and free Working frontier
03 DDS files Preserved
04 Control language Decoupled
05 Embedded SQL Rewritten to PostgreSQL

Proven, not promised

We don't ask you to trust it. We show you.

Proving a rewrite behaves like the original is hard, and most modernization tools do not attempt it. Constat runs your program on real IBM i and the Rust on the same inputs, then hands you the byte-for-byte comparison to check yourself.

Original on real IBM i
same inputs
Modernized in Rust
business state compared, byte for byte

Why Rust

A target you can still trust in twenty years

Moving off one legacy platform onto another buys you nothing. Rust is chosen for reasons that outlast the migration.

Memory safe, no garbage collector

The compiler rules out whole classes of failure: buffer overflows, use-after-free, null-pointer faults. There is no garbage collector, so there are no pauses in your batch window.

Reliable at compile time

The compiler rules out data races and dangling memory before the code runs. What used to be a 3am production incident becomes a build error on your screen.

No runtime, no lock-in

Rust compiles to a native binary. No JVM to license or tune, no proprietary runtime. It runs on your hardware, in your cloud, wherever you decide.

A workforce you can hire

COBOL and RPG expertise is retiring. Rust is among the most sought-after languages, with a growing pool of engineers who want to work in it.

Memory safety is now a mandate

Industry analyses from Microsoft, Google and CISA attribute around 70% of severe vulnerabilities to memory-safety bugs. Rust removes them by construction, which is why national security agencies now recommend memory-safe languages.

Why not Java

The usual COBOL target trades one runtime for another: a JVM to license and tune, and garbage-collection pauses that hit your batch window. Rust carries neither.

How we compare

The honest alternatives

Every path off IBM i has a catch. Here is where each one stands, without the marketing.

Constat · Rewrite by hand · Lift and shift
ConstatRewrite by handLift and shift
Behavior equivalence, re-checkable Advantage. run both, byte for byte Limitation. tests, if you trust them Conditional. same code, nothing gained
Off IBM i, no proprietary runtime Advantage. native Rust binary Advantage. if you finish it Limitation. the runtime comes along
Database modernized (DB2 to PostgreSQL) Advantage. the lane we prove hardest Conditional. by hand, separately Limitation. DB2 stays
Output safe and maintainable Advantage. memory-safe Rust Conditional. depends on the team Limitation. the same legacy code
Evidence you can audit Advantage. proofs and a dossier Limitation. none Limitation. none

How it works

From source to safe Rust, in one pipeline

One pipeline turns your IBM i sources into a Rust workspace that builds and runs. The arithmetic, the collation, the record layouts: reproduced exactly, not approximated.

Built for how you work now

Your engineers drive it. So can their agents.

Constat is a tool, not a black-box service. Engineers run it from the command line. AI agents call the same engine through MCP (Model Context Protocol) tools to transpile, audit, and verify. Same engine, same guarantees, either pair of hands.

For humans

A CLI your team owns

One command in, a Rust workspace and its evidence out. Scriptable, inspectable, and yours to run on your own machines.

axiom · CLI
$ axiom transpile payroll.rpgle --auditverify ok · audit COHERENT
For AI agents

MCP tools, same engine

An agent applies the same verified process to hundreds of programs, which is what an estate-scale migration actually needs. The same proofs hold at every step.

axiom · MCP
mcp__axiom__transpile(src, audit=true)→ { verdict: "COHERENT", rc: 0 }

Plain language

The jargon, defined

No decoder ring needed. Hover or tap any term to see it in plain words.

IBM i IBM's midrange platform, running on IBM Power hardware. It is not the mainframe, which is IBM Z. We keep the two distinct. COBOL A business language dating to 1959, still running core systems in banks, insurers and public bodies. RPG A language native to IBM i, in heavy use for business applications. Constat reads it in both fixed and free format. DB2 for i The database built into IBM i. Constat moves it to PostgreSQL with its schema and defined behavior preserved. EBCDIC The character encoding IBM systems use, where letters sort differently than in ASCII. Get it wrong and data quietly corrupts. Packed decimal A compact way IBM systems store numbers, exact to the last digit. Approximate it and financial totals break. DDS Data Description Specifications: how files, screens and printer layouts are defined on IBM i. Byte for byte Comparing two results with no tolerance: every byte of business state must match, or we flag it.

Questions

The hard questions, answered straight.

Do I have to trust that the output is correct?

No. We run your original on a real IBM i and the modernized Rust on the same inputs, then compare the resulting business state byte for byte. The evidence travels with each program, and one command re-checks it end to end. You verify the result; you do not take our word for it.

What about programs you have not run on both systems yet?

The equivalence claim is scoped to each program we run on both the original IBM i and the modern Rust. The pipeline still transpiles the rest and the verified engine still applies, but we do not call a program equivalent until it has been compared on real hardware against its modern twin. We tell you exactly which programs sit at which level, and an unproven program is never folded into a headline number. You grow the proven set one program at a time, at the pace you set.

Which languages and files can Constat read?

ILE COBOL, RPG IV in both fixed and free format, embedded SQL, DDS and CL. COBOL on IBM i is the lane we have proven hardest; RPG is a working and fast-moving frontier. If you are unsure whether your estate fits, send us one program and we will tell you plainly.

What happens to my DB2 database?

It moves to PostgreSQL with its schema and defined behavior preserved, and that is the lane we test hardest. Message queues, job control and green screens are modernization targets we validate inside each engagement. We label them as targets, never as proven.

Will the modernized system behave differently?

That is the exact thing we set out to rule out. On the same inputs, the Rust has to produce the same business state as your program on real IBM i, down to the last digit of decimal arithmetic and the collation of every field. If one byte differs, we see it before you do.

Is this a big-bang cutover?

No. You start with one program, get its evidence, and judge it before committing to more. Old and new run side by side, program by program, at the pace you set. There is no push-button switch for a whole estate, and we would not trust one either.

Is the Rust something my team can own?

Yes. It is readable, memory-safe Rust with no unsafe code in your business logic, on a runtime you compile yourself. It builds to a native binary with no proprietary runtime to license, on your own infrastructure. You trade IBM i lock-in for Rust your team owns and recompiles.

Start

Bring us one program.

Pick a real program from your estate. We modernize it, prove it equivalent, and hand you the evidence. You judge the result before you commit to anything bigger.

We use your details only to reply. No newsletter, nothing shared.