Skip to main content
automates the migration of codebases from one technology stack to another. Whether you’re upgrading Python 2 to Python 3, translating Ada to C++, or migrating a legacy framework to a modern one, handles the heavy lifting.

How It Works

connects to your repositories and modernizes them according to your goals. A project can include one or more repositories, each with a defined role in the migration. The process is designed to be transparent and controllable:
  1. You define the goal — Describe what you want: “Translate from Ada to C++” or “Upgrade to Python 3.12”
  2. You set up the build environment — Configure how your project builds, runs, and tests
  3. understands your code — We analyze your repositories and document their architecture
  4. You approve the plan — When your Project Spec is ready, opens the Knowledge Hub automatically the first time so you can review and approve it using chat before any code is generated
  5. executes in milestones — The migration happens in logical chunks, each delivered as a Pull Request for your review
  6. You control the merge — Every change goes through your normal code review process

Why This Approach

You Stay in Control

Automated migrations can be risky. is designed so you never lose control:
  • Nothing changes without your approval — The Project Spec must be explicitly approved before migration begins
  • Progressive delivery — Changes come in milestones, not one massive PR
  • Standard GitHub workflow — Every milestone produces a PR you can review, comment on, and merge like any other

The AI Understands Context

Before generating any code, builds a comprehensive understanding of your repositories:
  • What technologies and frameworks are in use
  • How components connect to each other
  • Architectural patterns and conventions
This context ensures the migrated code respects the intent and structure of your original application.

Multi-Repository Support

Real-world modernizations often span multiple repositories. supports multi-repo projects where each repository has a defined role:
  • Modified — An existing repository that will be transformed
  • New — A new repository created as part of the migration
  • Reference Only — A repository used for context but not modified
  • One-to-One Migration — Direct migration from one repository to another
Each project has a lifecycle configuration — scripts, environment variables, and a lifecycle document that define how the application builds, runs, and tests. For cloud projects, these are auto-discovered; for self-hosted daemon projects, they are configured manually.

Customizable to Your Standards

Every team has coding standards. lets you define Rules that encode your preferences:
  • “Always use dependency injection for database connections”
  • “Follow our naming convention for React components”
  • “Use our internal logging library instead of console.log”
These rules apply across all milestones, ensuring consistent output that matches your team’s expectations.

What You Can Migrate

handles a wide range of modernization scenarios:
ScenarioExamples
Language upgradesPython 2 → Python 3, Java 8 → Java 21
Language translationsAda → C++, COBOL → Java
Framework migrationsAngularJS → React, Express → FastAPI
Architecture modernizationMonolith → Microservices

Next Steps

Ready to start? Head to the Quickstart guide to create your first migration project.