Koo Docs
View as Markdown

The canvas & staged changes

The environment canvas is where you work on an environment: a board with one node per service. Edits on the canvas are staged into a draft and nothing touches your running services until you press Deploy — this page covers exactly what stages, what doesn't, and how a batch applies.

The canvas and its drawers

Each node shows a service's type, name, and live health. Click a node to open its drawer, with tabs Deployments · Metrics · Logs · Variables · Console · Settings.

Databases get a smaller set — Metrics · Variables · Console · Settings — because they have no deploy pipeline and no logs of their own.

The open drawer lives in the URL as ?service=<name>&tab=<id>, so a drawer view is shareable: send the link and it opens the same service on the same tab.

Board overlays

A switch in the bottom-left corner of the canvas draws extra information over the board. One overlay is active at a time; press its button again to turn it off. Your choice is remembered.

Variable references draws a line from each service to the database it reads through a connection variable, so you can see at a glance what depends on what. A dashed line is a reference you've staged but not deployed yet. A line drawn in the warning colour is a reference that doesn't currently resolve to anything — usually a database that was renamed or removed.

What gets staged

Three kinds of change are staged rather than applied:

  • Spec edits — changing a service's settings marks its node with an orange edited badge.
  • Creates — a new service appears as a green ghost node with a new badge; it exists only in your draft until you deploy.
  • Deletes — a service staged for deletion turns red with a delete badge; it keeps running until you deploy.

Variable changes join the same batch too: edits staged in a drawer's Variables tab, and environment-scoped edits made from the project's Variables page. Only project-wide variable edits apply immediately — see Variables.

The changes bar

While anything is staged, a bar at the top of the canvas reads Apply N changes, with two buttons:

  • Details opens the review sheet: every staged change grouped by service, each group with its own Discard (a staged deletion shows Keep instead, since discarding it means keeping the service), and a Discard all in the footer.
  • Deploy applies the whole batch. Shift+Enter (⇧↵) does the same from anywhere on the canvas.

The review sheet is the batch's confirmation — its title names the action and the destination, for example "Deploy 3 staged changes to production". A batch that only deletes things reads Delete instead of Deploy.

A batch that would destroy disk data — a staged volume deletion, or an edit that moves an attached volume to another location — always routes through the review sheet, where each data loss must be acknowledged in its own group before Deploy unlocks.

Drafts persist and survive failures

Your staged draft is saved as you go: navigate away or reload the tab and it comes back, with a "Restored your unsaved changes" notice.

While you have staged work, the draft is frozen — changes that land on the server out of band never overwrite your edits. Once the board is clean it mirrors the server again.

On Deploy, each staged change applies as its own operation. If some fail, the succeeded ones clear and the failed ones stay staged — review the error in the sheet and deploy again.

What applies immediately

Two things skip staging and apply the moment you confirm them:

  • Custom domains — adding or removing a hostname on a service. See Custom domains.
  • Volume commands — expand, snapshot, and restore on an attached disk. See Volumes.

Walk through one change

  1. Open your environment's canvas and click a service's node. Its drawer opens.
  2. Go to the Settings tab and change a setting — say, the memory size.
  3. Close the drawer. The node now carries an orange edited badge, and the changes bar reads Apply 1 change.
  4. Click Details to review the exact field changes. Discard here if you change your mind.
  5. Press Deploy (or Shift+Enter). The change applies and the service rolls out.
  6. Follow the rollout on the node, or in the drawer's Deployments tab — see Deployments & rollback.