---
title: Development mode
description: Outlines development mode in Cube Cloud—branch-scoped APIs, save and commit flows, and safe iteration before promoting changes to production.
---

Development mode allows to test and debug the data model in an isolated
[development environment][ref-environments-dev] before releasing any changes to production.

When you enter the development mode, you'll have access to your personal API endpoints
that will track the branch you're on and will be updated automatically when you make
changes to the data model.

## Development flow

### Save changes

When you make changes to the data model, you can save them by clicking the "Save all" button in the actions bar at the top of the screen.

<Frame>
  <img src="https://ucarecdn.com/8d3c7115-1407-4738-846b-b50032a42841/" alt="Save all button" />
</Frame>

### Commit & Sync

After saving changes, you can commit them to the branch you're working on by clicking the "Commit & Sync" button in the actions bar.

<Frame>
  <img src="https://ucarecdn.com/526317a4-bd17-4063-a5aa-27c3b8b2f9b3/" alt="Commit & Sync button" />
</Frame>

<Frame>
  <img src="https://ucarecdn.com/f9eb4f6a-143f-4363-af9f-3cc1eafcd2d8/" alt="Commit & Sync modal" />
</Frame>

### Merge or Create a Pull Request

After committing changes, you can merge them into the parent branch or create a pull request by clicking the "Merge" or "Create a Pull Request" button in the actions bar.
<Frame>
  <img src="https://ucarecdn.com/ab121677-960a-45c5-a47f-2ef3d4e5f4ea/" alt="Merge and Create a Pull Request buttons" />
</Frame>

<Frame>
  <img src="https://ucarecdn.com/e08ab537-e9aa-4bc9-af3f-0db567bfb6b5/" alt="Merge modal" />
</Frame>

### Updating the branch

When there are changes in the parent branch, you can update your active branch by pulling changes from the parent branch.
If your active branch got updated in the connected repository, you can update it by pulling changes from the remote.
<Frame>
  <img src="https://ucarecdn.com/a3f498ba-05d6-4d28-967c-314c6d2cd3cc/" alt="Pull from Parent branch button" />
</Frame>

### Resolving conflicts
In some cases, you may encounter conflicts when merging or pulling changes from the parent branch or remote.
If this happens, you'll see a warning about conflicts in the actions bar.
You'll then be able to either resolve them manually or discard the changes.
<Frame>
  <img src="https://ucarecdn.com/4834bbf0-7b9c-41ae-b562-4362c25ec3fe/" alt="Conflict Resolution UI" />
</Frame>

## Deep-link into development mode

You can link directly into development mode on the Semantic Model IDE by
adding query parameters to the page URL:

- `?branch=<name>` switches to the given branch, entering development mode
  if you're already in it (or staying read-only otherwise).
- `?devmode=true` enters development mode on the current branch. Combine it
  with `?branch=` to enter development mode on a specific branch in one step:

```text
https://your-tenant.cubecloud.dev/d/DEPLOYMENT_ID/schema?branch=my-branch&devmode=true
```

Both parameters are stripped from the URL once applied. They're a no-op for
users without permission to use development mode.

## Finding endpoints

In Development Mode, you'll have dedicated endpoints that will track the branch you're on.
They will be shown on the Overview page:

<div style={{ textAlign: "center" }}>
  <img
    alt="Development Mode Overview page showing available endpoints"
    src="https://ucarecdn.com/85d92844-09bd-4254-a87c-e19ae6989da5/"
    style={{ border: "none" }}
    width="100%"
  />
</div>

Read more about the available endpoints on the [Environments][ref-environments-endpoints] page.

## Behavior with CLI deployments

Development mode is fully available on deployments that are configured to
[deploy with CLI][ref-deploy-with-cli]: you can enter dev mode, switch
branches, save and commit changes, and merge into the production branch from
the Cube Cloud UI.

However, on CLI deployments, **none of these actions trigger a production
build or redeploy** — production only changes when somebody explicitly runs
`cubejs-cli deploy` against the deployment, and the next deploy overwrites
any changes made through the UI. See [Deploy with CLI →
Development mode][ref-deploy-with-cli-dev-mode] for the full behavior.

## Limitations

The Development API has some limitations compared to Production, and it is
important to be aware of these as they may affect your development process.

### Autoscaling

The Development API **does not** support autoscaling. If you need to test
autoscaling, we recommend creating a separate deployment using a different Git
branch of the same repository.

### Scheduled refresh

Scheduled refresh is also disabled in the Development API. If you need to test
scheduled refreshes, we recommend creating a separate deployment using a
different Git branch of the same repository.


[ref-environments-dev]: /admin/deployment/environments#development-environments
[ref-environments-endpoints]: /admin/deployment/environments#api-endpoints
[ref-deploy-with-cli]: /admin/deployment/continuous-deployment#deploy-with-cli
[ref-deploy-with-cli-dev-mode]: /admin/deployment/continuous-deployment#development-mode-with-cli-deployments