> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modelcode.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Switch between environments

> Why the build environment, daemon pool, and platform are permanent for a project

Three choices you make during Build Environment setup are permanent for the life of a project: **where it is hosted**, **which daemon pool it uses** if self hosted, and **which platform it runs on**.

They are permanent for the same underlying reason. From the moment a project is set up, everything that follows — how dependencies are installed, how scripts are written, how each milestone is built and validated — accumulates against those three choices. Changing one mid-project would mean re-deriving all of that work, and the failures that come out of a half-converted project are the hard kind: quiet, intermittent, and difficult to attribute.

So Modelcode treats these as foundational decisions rather than settings. **To move a project to a different environment, pool, or platform, create a new project with the setup you want.**

**Why hosting can't be switched**

Modelcode hosted and Self hosted resolve, install, and cache dependencies differently, and run your scripts differently. A project carries those conventions from the start.

**Why the daemon pool can't be switched**

When a project joins a pool, its dependencies are prepared on that pool's machines. Another pool's machines would need the same preparation before they could serve the project.

You *can* move an individual machine between pools — that is a separate operation, and a useful one if you are reorganizing capacity. What you cannot move is the project.

A pool also cannot be deleted while a project is connected to it. Deleting the project is what releases the pool.

**Why the platform can't be changed after setup**

A project's platform — Linux or Windows — is chosen at the same step, and it reaches further than the other two. It decides the shell every generated command is written in, the base image a sandbox is built from, and the syntax of the lifecycle scripts stored with the project. From the first milestone onward, that work accumulates in one dialect.

Pick the platform your application already builds on. A project that needs the other one is a new project.
