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.
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.
Scripts
Ordered shell scripts that bring your application to a healthy, running state. Common scripts include:| Script | Purpose |
|---|---|
| install | Install dependencies (e.g., npm install, pip install -r requirements.txt) |
| build | Compile or bundle the application |
| run | Start the application process |
| healthcheck | Verify the application is responding (e.g., curl http://localhost:3000/health) |
| test | Run the project’s test suite |

- 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.

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:| Status | Meaning |
|---|---|
| Validated | All 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. |
| Failed | Validation ran but one or more scripts failed. Check the error output for details. |
| Pending | Validation has not run yet or is queued. |

Editing and Re-validating
After making changes to scripts, environment variables, or the lifecycle document:- Click Save Changes to persist your edits
- Click Re-validate to run the full validation sequence again
Lifecycle Discovery
For cloud projects, discovers the lifecycle configuration automatically at two points:- 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.
- 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.
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.
Related Docs
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