Skip to content
Quickstart10 min

Give your team devboxes

At the end of this guide, every member of your engineers group has a devbox: a VM built from your repository’s dev container, on servers in your pool, with a persistent home and AI coding tools that never hold long-lived keys. One devbox policy decides the template, size, placement, idle stop and what happens when someone leaves. Each engineer opens their box from VS Code or an editor built on it, the Frazer app or a terminal in one click.

You need:

  • A project for the boxes. This guide uses acme-staging.
  • Capacity: a server pool with the substrate-host role, of the project or shared with it, or the Frazer fleet.
  • An IAM group of the people who get boxes, here engineers: created by hand, synced from Google or provisioned with SCIM, under IAM › Groups and roles in your organization.
  • A repository with a .devcontainer/ folder for the template. This guide uses acme/storefront.
  • The Admin role (roles/admin) in the project.
  1. Install the CLI and sign in.

    Terminal window
    curl -fsSL https://get.frazer.ai | sh
    frazer login
  2. Create a template from your repository. In the console, open Compute › Devboxes, select the Templates tab and click New template. Pick acme/storefront: Frazer finds .devcontainer/ and builds the template as checkout-api@v1. Every template also carries the Frazer AI pack: the Frazer harness, Claude Code, Codex CLI and Hermes, with the Frazer MCP server already wired in.

  3. Write the policy. It binds the template and a size to the group:

    policy.yaml
    # projects/acme-staging/devboxPolicies/engineering-standard
    subjects: [groups/engineers]
    project: projects/acme-staging
    template: workspaceTemplates/checkout-api@v1
    size: standard # 8 vCPU, 32 GiB, 200 GiB home
    placement: { pool: projects/acme-infra/locations/us-virginia1/serverPools/vint-hill-default }
    perPerson: { count: 1, max: 2 }
    idle: { stopAfter: 30m, maxRunning: 12h, schedule: "Mon-Fri 08:00 local" }
    llm: { mode: gateway, key: llmKeys/anthropic-main, budgetPerPersonMonthly: 300 }
    onLeave: { stop: now, snapshotHome: true, deleteVmAfter: 30d, keepSnapshot: 90d }
    Field What it sets
    subjects The IAM groups whose members get boxes
    project The project the boxes are created in
    template The template and its version
    size small, standard, large or xlarge, within the sizes your organization allows
    placement A server pool of the project or one shared with it; { location: us-virginia1 } for the Frazer fleet
    perPerson Boxes each member gets, and the most they may have
    idle Stop after 30 idle minutes, run at most 12 hours, start on weekday mornings
    llm Models through the Frazer LLM gateway, with a gateway key of the project and a monthly budget per person in US dollars; leave it out to use your organization’s default
    onLeave When someone leaves the group: stop the box, snapshot the home, delete the VM after 30 days, keep the snapshot 90
  4. Plan the policy. Nothing is created yet:

    Terminal window
    frazer devboxes policies apply -f policy.yaml --dry-run
    Output
    Plan projects/acme-staging/devboxPolicies/engineering-standard (devboxes)
    + 5 devboxes (checkout-api@v1, standard) for 5 members of groups/engineers
    + 1,000 GiB of home volumes on pool vint-hill-default
    Capacity peak fits the pool, one server's worth kept free OK
    acme-staging's share of the pool: peak within its limit OK
    Cost no compute fee on your own servers · LLM budget up to 5 × 300 USD a month

    Run the same command without --dry-run and answer y to apply it. You can also review and apply it in the console under Compute › Devboxes › Team policies.

  5. Watch the boxes arrive. Open Compute › Devboxes › Team policies and select engineering-standard. The Members and boxes tab lists each person, their box and its state. When someone joins the group, they get a box at the next directory sync; when they leave, onLeave runs.

  6. Open a box. Each engineer opens their own:

    In the console, open My boxes from the avatar menu and click Open in VS Code on the box’s card. The button remembers the last tool you chose: VS Code or an editor built on it, JetBrains, the browser, SSH or Hermes. Once the Frazer app is installed, Open in Frazer app becomes the default. From a terminal:

    Terminal window
    frazer devboxes list --project acme-staging
    frazer devboxes open lena-01 --project acme-staging --vscode
    frazer devboxes ssh lena-01 --project acme-staging

    The CLI fetches an 8-hour SSH certificate from your organization’s SSH certificate authority and connects over Frazer Access, or through Frazer Link when the laptop is not connected. There are no keys to copy. IDEs connect over Remote-SSH with ProxyCommand frazer devboxes proxy %h.

  • Idle stop with a reason. A box stops after 30 minutes without activity: an IDE connection, an SSH session in use, the web terminal, a busy agent session or a recent preview request. The owner gets a warning 5 minutes before, with Keep running 2 h. A stopped box costs storage only, and its card always says why it is running or stopped.
  • Models without stored keys. Claude Code, Codex and Hermes reach models through the LLM gateway with tokens from frazer llm token, valid for an hour at most, within each person’s budget. Claude Code uses your organization’s own Anthropic credential behind the gateway.
  • Template updates on your terms. A new template version can notify owners, update each box on its next stop, or be forced by a date. A rebuild keeps the home.
  • Offboarding in one operation. Removing a person from the organization revokes their SSH, Frazer Access, LLM and Git access and stops their boxes.