Operate your server

Keep ccr-cloud running: restart it, update it, back it up and watch host resources. Commands on this page run on the server, in the ccr-cloud folder, as the service user.

#Where things run

Setup starts the control plane in a tmux session named ccr-cloud. Each task's runner runs in its own tmux session, so tasks keep running while you restart or update the control plane.

SHELL
tmux attach -t =ccr-cloud      # view the control plane console; detach with Ctrl-b, then d

#Restart the service

Restart after editing server.env or updating the code. Stopping the control plane doesn't stop tasks; their runners reconnect when it comes back.

SHELL
tmux kill-session -t =ccr-cloud
npm run setup -- --start
npm run doctor -- --service

npm run setup -- --start never restarts a service that's already running, so stop it first.

#Update ccr-cloud

SHELL
tmux kill-session -t =ccr-cloud   # stops the control plane only, not task runners
git pull --ff-only
npm ci
npm run setup -- --start
npm run doctor -- --service

Refresh the browser afterwards. If the app shows missing features or not found errors after an update, an older control plane is probably still running; see Troubleshooting.

In Docker mode, also rebuild the session image with npm run image.

#After a reboot

A reboot stops tmux, so it stops the control plane and every task. ccr-cloud doesn't install a boot service yet. After the server starts:

  1. Run npm run setup -- --start.
  2. Start Tailscale Serve or your Cloudflare tunnel again if you use one.
  3. Open each task you want to continue and select Resume session.

#Back up your data

Back up the data directory, ~/.local/share/ccr-cloud by default, or wherever CCR_CLOUD_DATA points. It holds the owner token, task records and logs, task workspaces with uncommitted edits, saved projects, push keys and registered devices.

Keep it private: it contains credentials and task content. Task branches alone don't preserve uncommitted work. Never delete the data directory to fix a login problem.

#Logs

WhatWhere
Control planetmux attach -t =ccr-cloud, or tmux capture-pane -p -S -200 -t =ccr-cloud:
A task's runnerDATA_DIR/host/SESSION_ID/runner.log
A task's filesDATA_DIR/host/SESSION_ID/workspace
Setup detailsnpm run setup -- --verbose

#Check host resources

SHELL
npm run resources

Setup, doctor and service startup run the same read-only check. It warns, and never blocks or deletes anything, at these thresholds:

ResourceWarningCritically low
MemoryUnder 1 GiB available, or under 2 GiB totalUnder 256 MiB available
DiskUnder 5 GiB or 10% freeUnder 1 GiB or 3% free
InodesUnder 5% or 1,000 free
CPUOne-minute load above twice the CPU count

If you see warnings, run fewer tasks at once or add capacity. Linux memory uses MemAvailable. Disk checks cover the data directory, your repository roots and, in Docker mode, default Docker storage.

#Rotating credentials

Each task snapshots its environment when it's created, and Resume reuses that snapshot. After rotating an environment-based credential, start new tasks to pick it up.

#Next steps

Edit this page on GitHub ↗