For the complete documentation index, see llms.txt.

Get started with Chainguard Workspaces

Sign up for Chainguard Workspaces, open your first development session, and learn how to detach from it and return.
  5 min read

This guide walks you through signing up for Chainguard Workspaces, opening a session on one of your repositories, detaching from the session, and returning to it. It takes about 15 minutes.

Note: Chainguard Workspaces is in beta. Available to organizations that turn it on with chainctl develop init, which comes with a free monthly allowance, or that arrange access with their Chainguard account team.

Step 1: Sign up

Sign up as described in Set up Chainguard Checks and Chainguard Workspaces. You install or update chainctl, install the Chainguard App on the account that owns your repository, and run chainctl develop init, which turns on Chainguard Workspaces and Chainguard Checks together. You also need a local clone of a repository on github.com that you can push to. Optionally, install and log in to Claude Code on your laptop, so you can use it in the session.

Step 2: Open a session

Change to your repository’s directory, then run chainctl develop. Replace $REPO_DIR with the path to your local clone, and $ORGANIZATION with the name of your Chainguard organization:

cd $REPO_DIR
chainctl develop --parent $ORGANIZATION

If you belong to only one Chainguard organization, you can omit --parent.

The first time you run the command in a directory, chainctl creates a session, syncs your directory into it, and attaches your terminal to a shell in the session. The session gets a name made of the repository name and two generated words, such as app/quiet-harbor, and a short ID, such as 3f9a2c1e. If your repository has neither a .chainguard/develop.yaml file nor a .chainguard/ci.yaml file, the session opens on the default environment.

While you’re attached, chainctl keeps a status row at the bottom of your terminal. The row lists the session’s terminals and shows messages from chainctl. To open more terminals in the session, refer to Use several terminals in a session. The first time you attach to a session from your laptop, chainctl also prints a short guide to the status row and the session menu’s keys above the shell’s prompt.

Step 3: Work in the session

Your shell runs as root in /work, which holds your repository. Try a few commands to look around:

git status
cat /etc/chainguard/session.yaml

The git status output matches your laptop’s checkout at the moment you opened the session, including uncommitted changes. The /etc/chainguard/session.yaml file records the session’s ID, repository, and commit, and the environment it was built from.

From here, you can work as you would on your laptop. For example:

  • Run claude to start Claude Code. It uses your laptop’s Claude Code login. Refer to Use Claude Code in a session.
  • Run run-ci to run your repository’s checks against the working tree, if your .chainguard/ci.yaml defines checks.
  • Commit and run git push. Your laptop’s git user.name and user.email are already set in the session, and the Chainguard App, or Chainguard Develop if you connected your GitHub account, adds the credential for the push.

Commits you make in a session aren’t signed, because the session gets your git user.name and user.email but not your signing key or settings. If a branch requires signed commits, GitHub rejects your push to it. To get your work onto that branch, refer to The branch requires signed commits.

Step 4: Detach and return to the session

To detach, press Ctrl+] to open the session menu, then press Enter or d to choose Detach — let it park. Your terminal returns to your laptop’s shell. The session keeps running for about 10 minutes, then parks to a snapshot and stops using compute.

To return, run chainctl develop again from the same directory:

chainctl develop --parent $ORGANIZATION

Because the directory has exactly one session, chainctl reattaches to it, resuming it first if it parked. Your files, running processes, and shell are as you left them.

Your directory syncs into the session only the first time you attach. Changes you make on your laptop after that don’t reach the session, and changes in the session don’t reach your laptop. To move work between them, push from one and pull on the other.

Step 5: Delete the session

A parked session expires 5 days after it parks, and until then it counts toward your session limit. With the free monthly allowance, you can have one session at a time, so delete it when you’re done. First, list your sessions to find its name:

chainctl develop list --parent $ORGANIZATION

Then delete the session by name. This example deletes app/quiet-harbor:

chainctl develop delete app/quiet-harbor --parent $ORGANIZATION

The delete command asks you to confirm, then destroys the session’s VM and its snapshot. Anything you didn’t push is gone.

Give teammates access

Each teammate opens and manages their own sessions, which count toward your organization’s limits. To open sessions, a teammate needs the owner or limited_owner role, or the sandbox.user role together with viewer. To give them one, refer to Give teammates access.

Next steps

Last updated: 2026-10-13 15:17