Blueprints & duplication

Environment drift is the problem where staging slowly stops resembling production, and reproducing a bug means rebuilding a project from memory. Blueprints and duplication exist to make "give me another one of those" a single action.

Two related things

Duplicate copies a live project into a new one—right now, from the project you're looking at.

Save as blueprint captures a project's shape as a reusable template stored at the organization level. You can spawn new projects from a blueprint whenever you need one, long after the original has changed.

Use duplication when you want a copy today. Use a blueprint when you want a repeatable starting point.

Duplicating a project

  1. Open the project and choose Duplicate.
  2. Name the new project and pick which server it should land on—it does not have to be the one the source runs on.
  3. Choose what to carry over: apps, configs and secrets, services, and domains.
  4. Confirm.

Kaja creates the new project and recreates everything you selected inside it.

What to think about before you confirm

  • Secrets. Duplication can copy real credentials into the new project. The confirmation step tells you exactly which secrets are involved—read it. Copying a production key into a staging environment is easy to do by accident and hard to undo.
  • Services. Managed services are recreated as new instances with their own storage and credentials. The copy does not share a database with the original.
  • Domains. A generated hostname is issued fresh for the copy. A custom domain can only point at one place, so it stays with the original.
  • Auto-deploy. Decide whether the copy should redeploy on push. A duplicate that shares a repo with the original will otherwise rebuild every time that repo changes.

Blueprints

Blueprints live at the organization level, not inside a single project, so any project in the organization can be spawned from one. Create a blueprint from a project you're happy with, then use it as the starting point for new environments.

Because a blueprint is captured at a point in time, it does not track later changes to the project it came from. If the source project moves on, create a new blueprint from it.

Freezing a project

Related but different: freeze stops everything in a project without deleting it, so an environment you're not using stops consuming resources. Resume it when you need it again. Freezing is manual—Kaja will not freeze a project on your behalf.

Next steps