Skip to main content
Every project needs a Lifecycle Setup — the scripts, environment variables, and documentation that define how the application installs dependencies, builds, runs, passes a health check, and tests. uses this configuration to validate your setup, run functional tests, and verify milestone output.

How It Works

maintains lifecycle configurations at the project level, with separate entries for origin and target:
  • Origin — How the source application builds and runs. Discovered during onboarding and used as the behavioral baseline for functional testing.
  • Target — How the destination application builds and runs. Discovered automatically during the foundation milestone (Milestone 1) and used to verify that migrated code works correctly.
For cloud projects, automatically discovers the lifecycle configuration by analyzing the codebase, attempting to start the application, and recording what works. You review the result, make corrections if needed, and validate. For self-hosted daemon projects, you configure lifecycle commands manually during onboarding. See Self-hosted Daemon for that flow.

The Lifecycle Setup Page

Open the lifecycle setup from the roadmap sidebar by clicking the Lifecycle entry. The drawer shows Origin and Target tabs — one for each side of the migration. Origin and Target tabs Each tab contains the same three sections:

Scripts

Ordered shell scripts that bring your application to a healthy, running state. Common scripts include:
ScriptPurpose
installInstall dependencies (e.g., npm install, pip install -r requirements.txt)
buildCompile or bundle the application
runStart the application process
healthcheckVerify the application is responding (e.g., curl http://localhost:3000/health)
testRun the project’s test suite
Scripts section with four lifecycle scripts Click a script name to expand it. The expanded view shows:
  • Inline code editor — Edit the script content directly. Scripts are executed as shell commands.
  • Logs — View the stdout output from the last validation run.
  • Errors — View stderr output. A bug icon appears on the script header if the last run failed with stderr output.
Expanded script showing inline editor, log viewer, and action buttons To add a script, click Add Script at the bottom of the list, enter a name, and press Enter. To remove a script, expand it and click Delete.

Environment Variables

Key-value pairs your application needs at build or runtime. Variables discovered from the codebase are pre-populated; you can add, edit, or remove them. Variables marked as secrets are encrypted at rest. Toggle the lock icon on a variable to mark it as a secret.

Lifecycle Document

A markdown overview describing how the application is structured, the execution order of scripts, and how each phase fits together. For cloud projects, this document is auto-generated during lifecycle discovery. You can edit it to add context the agent might have missed.

Validation Status

The status bar at the top of the lifecycle setup page shows the current validation state:
StatusMeaning
ValidatedAll scripts ran successfully. The application started and passed the health check.
Draft — Needs Review discovered a configuration but could not get the application running and healthy automatically. Review the scripts, fix any issues, and re-validate.
FailedValidation ran but one or more scripts failed. Check the error output for details.
PendingValidation has not run yet or is queued.
Status bar showing Validated state with timestamp When the status is Draft, a warning banner appears with the validation output so you can see what went wrong:

Editing and Re-validating

After making changes to scripts, environment variables, or the lifecycle document:
  1. Click Save Changes to persist your edits
  2. Click Re-validate to run the full validation sequence again
The Re-validate button automatically saves any unsaved changes before starting validation. During validation, a progress banner shows the current state.
If you only need to fix a small script error, edit the script inline, and click Re-validate — it handles saving for you.

Lifecycle Discovery

For cloud projects, discovers the lifecycle configuration automatically at two points:
  1. During onboarding — After you select the cloud build environment, analyzes the origin repository, identifies how to install, build, and run it, and creates the origin lifecycle configuration.
  2. During the foundation milestone — When Milestone 1 starts, runs a lifecycle discovery step for the target repository. This ensures the target application can build and run before the agent begins writing migration code.
Discovery uses the codebase structure, dependency files, and common framework conventions to generate scripts. It then executes each script in sequence to verify the configuration works end to end. If discovery cannot get the application healthy, the configuration is saved as Draft so you can review and correct it manually.

Tips

  • Check the Errors tab first. When a script fails, the stderr output usually points directly at the problem — a missing dependency, a wrong port, or a typo in the command.
  • Keep scripts minimal. Each script runs in a fresh shell process. If two commands need to share shell context (e.g., activating a virtual environment before running a command), concatenate them with && in a single script.
  • Use environment variables for configuration. Avoid hardcoding ports, database URLs, or API keys in scripts. Set them as environment variables so they are easy to change and can be encrypted if sensitive.

Self-hosted Daemon

Manual lifecycle setup for projects with private dependencies

Core Concepts

Build environment terminology and mental model

Milestones & Tasks

How lifecycle discovery fits into the foundation milestone

Functional Testing

How lifecycle configuration enables functional test execution