Manifest Lifecycle
Universal container management with manifest-driven operations
Manifest Lifecycle
The manifest (.onelift.json) is the identity card, health record, and migration guide for every deployment on the platform. Every lifecycle operation -- deploy, scale, clone, backup, restore, rollback -- consults the manifest as its primary reference.
What the Manifest Provides
The manifest has four sections:
- Identity -- What is this app? Services, databases, images, ports, routing.
- State -- Compose/env hashes for drift detection, image digests, current scale, full operation history.
- Capabilities -- Which services are scalable, cloneable, what backup targets and commands exist.
- Migration Guide -- Routing mode (domain or port), volume priorities, database dump/restore commands, dependency order.
All 7 deployment sources (cli_push, marketplace, provision, custom_compose, migration, cli_sync, scan) generate a manifest automatically after deployment.
Key Commands
lift scan
Discover all Docker deployments on a server and generate manifests for each.
lift scan
Scans for both Docker Compose projects and standalone containers. Standalone containers are reverse-engineered into compose files for unified management.
Flags:
--force-- Regenerate manifests even if.onelift.jsonalready exists--adopt-- Sync discovered tools to the platform (requires auth)--json-- Output scan results as JSON
lift manifest check
Detect drift between the manifest and the actual Docker state.
lift manifest check <tool>
Checks for:
- Compose file changes since last deploy
- Environment variable additions/removals
- Scale mismatches (manifest vs actual replicas)
- Missing or extra running services
Backup & Restore
Backup archives are self-contained -- they include the manifest, compose file, env, database dumps, and volume data. Restore can rebuild a deployment from the archive alone.
lift backup <tool> --to r2://bucket/path
lift restore <tool> --from r2://bucket/path
Clone (Port-Based Fallback)
Clone automatically detects whether the target server has Traefik. If not, it falls back to port-based routing instead of failing.
lift clone <tool> --target <server>
Full Specification
For the complete technical specification including schema details, test scenarios, and architecture decisions, see the Manifest Lifecycle Spec in the repository.