Skip to main content
This guide walks you through creating a migration project and getting to your first milestone.

Prerequisites

  • A GitHub account
  • One or more repositories you want to modernize

Step 1: Sign In

Go to modelcode.ai and sign in with your GitHub account.

Step 2: Connect GitHub

After signing in, connect your GitHub account to access your repositories:
  1. Click Connect GitHub
  2. Authorize to access your repositories
  3. Select which repositories can access
You can grant access to specific repositories only. You can always add more later.

Step 3: Create a Project

  1. Click Create Project on the Projects page
  2. Enter a project name (auto-filled from your first repository name)
  3. Select one or more repositories from the dropdown
  4. For each repository, confirm or change the origin branch
  5. Set a feature branch name (prefixed with morph-)
  6. Click Create Project
clones your repositories and prepares them for analysis. This takes a few moments.
You can add multiple repositories to a single project. This is useful when your modernization spans several repos — for example, migrating a backend and a shared library together.

Step 4: Set Up the Build Environment

Once your project is created, the onboarding flow guides you through configuration. The first steps set up how your project builds and runs:
  1. Setup Build Environment — Choose between the cloud environment or a Self-hosted Daemon for projects that depend on private services
  2. Review Lifecycle Setup — For cloud projects, automatically discovers your lifecycle configuration (scripts, environment variables, lifecycle document) by analyzing the codebase. Review the discovered setup on the Lifecycle Setup page and make corrections if needed. For self-hosted daemon projects, manually configure lifecycle commands and environment variables.
  3. Validate Setup — Run an end-to-end validation that executes each script in sequence to confirm the application installs, builds, starts, and passes a health check
If your project builds and runs with standard, publicly accessible dependencies, the cloud environment works out of the box — will discover the lifecycle setup automatically. Use a Self-hosted Daemon only when your project requires access to private registries, internal APIs, or on-premise infrastructure.

Step 5: Define Your Modernization Goals

This is where you tell what you want to achieve. Describe your goal in plain language: Examples:
  • “Translate the source code from Ada to C++”
  • “Upgrade Python 2.7 to Python 3.12”
  • “Migrate from AngularJS to React with TypeScript”
  • “Upgrade Java Spring framework to the latest version”
Be specific about your target. Instead of “modernize the code,” say “migrate from Express.js to FastAPI” or “upgrade to React 18 with hooks.”

Project Overview

As part of defining your goals, you’ll configure the Project Overview — a summary of the repositories involved and their roles in the migration:
  • Repos at start — The repositories you’re beginning with and their current state
  • Repos at end — The target repositories after migration, including any new repos and each repo’s modernization role (Modified, New, Reference Only, One-to-One Migration)

Step 6: Review and Approve the Project Spec

generates your Project Spec — the full migration plan for your project. The first time it is ready, the Knowledge Hub opens automatically. Select Project Spec in the tree if needed, and review it carefully:
  • Does it capture your intent?
  • Are the target technologies correct?
  • Is anything missing?
You can:
  • Use the chat in the Knowledge Hub to ask questions and request updates to the Project Spec
  • Run Auto-review to have check the spec against the codebase and your goals
  • Approve from the Knowledge Hub when you’re satisfied
Once approved, the Project Spec cannot be edited. Take time to review before approving.

Step 7: Generate Roadmap

After approval, generates a Roadmap — a sequence of milestones that progressively execute your migration. Each milestone represents a logical chunk of work, ordered so each builds on the previous one.

Step 8: Execute Your First Milestone

  1. Open the first milestone
  2. Review what it will accomplish
  3. Click Generate Tasks to create the specific work items
  4. Click Execute Tasks to run the migration
When complete, a Pull Request appears in your GitHub repository. Review it, and when satisfied, merge it to complete the milestone.

What’s Next