Skip to content

Platform

A million lines of legacy code, running on Go or Rust in 30 days.

Fine-tuned models read the whole repository in one pass and rewrite it slice by slice. Every slice is replayed against your production traffic and signed off by an engineer who has shipped code for 25+ years.

codehero · pipeline

  1. Ingest

    Everything in the tree

  2. Map

    One dependency graph

  3. Rewrite

    Slice by slice

  4. Verify

    Parity on real traffic

  5. Ship

    Cutover with no maintenance window

Pipeline

Five stages. All automated, all signed off by a senior engineer.

The same pipeline takes a PHP monolith and a million lines of COBOL. The model that reads the code changes with the dialect. The engineer who signs it off always has 25+ years of production code behind them.
  1. 01

    Ingest

    Everything in the tree

    Source, build scripts, job schedules, schemas and stored procedures go in together. Every language in the tree is parsed in parallel.

  2. 02

    Map

    One dependency graph

    Modules, calls, data flows and dead code land in one graph. The service boundaries fall straight out of its structure.

  3. 03

    Rewrite

    Slice by slice

    Fine-tuned models rewrite one bounded slice at a time into idiomatic Go, Rust, TypeScript or SQL, with the tests written first.

  4. 04

    Verify

    Parity on real traffic

    Recorded production inputs replay against the old system and the new one. We fix every difference, or you sign it off in writing.

  5. 05

    Ship

    Cutover with no maintenance window

    Traffic moves over slice by slice. The old system stays warm on standby until the new one carries the full load.

Fine-tuned models

Trained on the code everyone else forgot.

Frontier models write good code for today's GitHub. Legacy systems are written in dialects that barely exist there. We fine-tuned our models on paired legacy and modern code, so they know what a copybook means, how a JCL step hands a dataset to the next one and what a Struts action was really doing. Send us your system and in 48 hours you know exactly what it takes.

Dialects the models are trained on

  • COBOL
  • JCL
  • CICS
  • RPG IV
  • PL/I
  • Natural
  • Fortran
  • VB6
  • Delphi
  • PowerBuilder
  • ColdFusion
  • PHP 4–5
  • Perl
  • Classic ASP
  • Java EE
  • Struts
  • PL/SQL
  • T-SQL
  • DB2 SQL
  • Oracle Forms
  • ABAP
  • AngularJS
  • A specialist for every family

    Separate fine-tunes for mainframe, midrange, desktop, web and data. Each one knows the idioms of its family and where the traps are.

  • Code your team will want to keep

    Idiomatic Go, Rust or TypeScript with the names, tests and structure a senior engineer would write. Your team can read it on day one.

  • Your code stays yours

    Your repository never trains our models without your written consent. On-premise, the weights stay inside your building too.

Real production graph

This is how the platform sees a system.

This is a Go service running in production. We replaced the package names with M01 to M45 and left the structure exactly as it is. Drag the scrubber from how the code sits today to how it splits along domain boundaries. Each node's class comes out of the graph itself: a module inside one domain gets a mechanical rewrite, and a module that four domains hold on to gets an engineer who cuts the boundary by hand. Your system gets this map in its first 3 days.

As it sits today

Mechanical rewrite60%

Boundary cut by an engineer29%

Deletion candidate11%

45 modules, 167 dependencies and 45,990 lines across 7 domains. Real graph from a service in production, package names removed, no other edits. The three classes are counted from the structure of the graph itself.
The same graph as a table
Sorted by size. A module is mechanical when it sits inside one domain, it goes to an engineer when three or more domains depend on it or it sits in a cycle, and it becomes a deletion candidate when nothing imports it and it is not an entry point.
ModuleLinesImported byImportsDomainClass
M01326loc010S01Mechanical rewrite
M02142loc03S02Mechanical rewrite
M0355loc03S02Mechanical rewrite
M0489loc03S02Mechanical rewrite
M055,194loc315S03Boundary cut by an engineer
M06239loc51S03Boundary cut by an engineer
M07884loc200S03Boundary cut by an engineer
M08485loc46S03Mechanical rewrite
M099,835loc47S03Boundary cut by an engineer
M10514loc20S03Mechanical rewrite
M11677loc15S03Mechanical rewrite
M12236loc411S03Boundary cut by an engineer
M13187loc33S04Boundary cut by an engineer
M14454loc11S05Mechanical rewrite
M1558loc31S05Mechanical rewrite
M16356loc42S05Mechanical rewrite
M17247loc42S05Mechanical rewrite
M1859loc31S04Boundary cut by an engineer
M19139loc00S04Deletion candidate
M20330loc132S04Boundary cut by an engineer
M21414loc11S06Mechanical rewrite
M221,670loc33S06Mechanical rewrite
M231,218loc180S06Boundary cut by an engineer
M242,574loc153S06Boundary cut by an engineer
M25163loc41S04Boundary cut by an engineer
M26251loc25S04Mechanical rewrite
M27161loc12S04Mechanical rewrite
M2899loc20S04Mechanical rewrite
M2945loc00S04Deletion candidate
M3025loc00S04Deletion candidate
M311,417loc240S04Boundary cut by an engineer
M3282loc10S04Mechanical rewrite
M3330loc41S04Boundary cut by an engineer
M34141loc31S03Mechanical rewrite
M3579loc11S03Mechanical rewrite
M363,036loc310S03Mechanical rewrite
M37173loc11S03Mechanical rewrite
M382,501loc19S03Mechanical rewrite
M391,452loc34S03Mechanical rewrite
M4050loc11S03Mechanical rewrite
M412,148loc09S01Deletion candidate
M42167loc01S01Deletion candidate
M434,873loc215S07Mechanical rewrite
M442,241loc110S07Mechanical rewrite
M45474loc213S07Mechanical rewrite

Parity harness

Same inputs, same outputs, to the cent.

Every slice runs the same recorded inputs through the old system and the new one. We compare the outputs field by field, down to the cent, and a slice ships only when the diff is empty. That is why the date goes into the contract.

  • Your recorded production traffic is the test suite
  • Field-by-field comparison, including rounding and date edge cases
  • Every accepted difference signed off by you, in writing
Legacy systemNew systemDiff
  • ACCT 0048213 41.36ACCT 0048213 41.36
  • ACCT 0048214 0.00ACCT 0048214 0.00
  • ACCT 0051120 1,208.04ACCT 0051120 1,208.04
  • ACCT 0051121 17.90ACCT 0051121 17.90
  • ACCT 0060007 342.11ACCT 0060007 342.11
  • ACCT 0060008 5.02ACCT 0060008 5.02
Diff0 differences

The alternatives

Three ways to modernize. Only one fits in 30 days.

Manual rewriteGeneric AI toolsCodeHero
Time to productionMonths to yearsUnclear, stalls at scale30 days per phase
PriceTime and materialsYour engineers' timeFixed per phase, quoted in 48 hours
Proof of behaviorManual QANoneParity on your own traffic
Whole-repository contextIn people's headsA few files at a timeOne graph, every language
Runs air-gappedYesRarelyYes, our hardware or yours
Who is accountableA large teamYouOne senior engineer with 25+ years