Dev environments
An agent's sandbox is a real coding environment, a place where the agent runs, builds, and tests the software, and does much more than edit files. This page explains the two paths that make it one: the project's prepared environment, applied from its stack when the sandbox starts, and the bigger environments the agent builds itself when a task needs databases, services, or a running full-stack application.
The prepared path covers most work. The project's stack decides the language runtime, the package manager, and the developer tooling; a devenv.nix file at the repository root describes that environment, and a sandbox that finds one loads it before the agent begins. The agent's first go build or pytest finds a working toolchain instead of a bare container.
Stacks
Every scaffolded project has a stack: a marketplace pack that declares the language, framework, data store, directory layout, preview setup, and quality gates for one kind of application. Around twenty stack packs ship with the platform, covering categories such as full-stack web (web-fullstack-react-fastapi-postgres, the default), APIs (api-go-postgres, api-java-spring-postgres), background workers (workers-temporal, workers-python-celery), CLIs (cli-go-cobra, cli-rust-clap), and mobile (mobile-flutter, mobile-react-native).
The stack is chosen when the high-level design is generated. A stack you picked for the project wins. Otherwise the platform scores each available stack pack against the project's requirements text and takes the best match; when nothing matches, it falls back to the bundled default. The chosen stack is bound to the project and drives the scaffold, so the repository, its service configuration, and its dev environment agree with each other from the first commit.
How the environment is defined
When the platform scaffolds a repository, it resolves devenv.nix in order:
- An explicit
nixcode block in the project's tech-stack artifact is used verbatim. Author one when you need exact control over the toolchain. - With dev-environment template packs enabled, marketplace
devenvpacks matched against the tech stack are composed into the file. This source is off by default; an administrator turns it on in platform settings. - Otherwise the file is derived from the detected tech keywords: each detected language family contributes its runtime plus a language server and a debug adapter, so agent tooling works out of the box. A Go project gets
goplsanddelve; a Python project getspyright,ruff, anddebugpy.
A repository you import that already carries a devenv.nix keeps it; the sandbox loads whatever the file declares.
To keep startup fast, a prebuild step after design approval builds the toolchain into a per-project store and caches the evaluated environment in the repository under .sdlc/, keyed by a hash of devenv.nix. A sandbox launch that finds a matching snapshot sources it directly; when the file has changed since the snapshot, the launch evaluates it fresh.
Dev-environment packs
A devenv pack is a reusable environment fragment in the marketplace. Four ship with the platform: devenv-python-ml, devenv-go-service, devenv-node-web, and devenv-rust-cli. Each pack provides:
A pack matches a project when its declared language family is detected in the tech stack, or when one of its keywords appears there. When several packs match, their fragments are merged: the union of language settings and the union of packages, in a deterministic order.
Packs are managed in Settings → Marketplace under the devenv and stack kinds, where you can subscribe, override, or add your own. See Marketplace.
Stack and devenv packs define the environment a project runs in. They are separate from lifecycle blueprints, which define the SDLC pipeline a project moves through.
Building a bigger environment
The prepared toolchain is a starting point, not a ceiling. The agent runs arbitrary commands inside its sandbox, so when a task needs more it installs extra packages, generates code, runs migrations, and starts processes the same way you would in a terminal.
When the software under work needs its supporting services, the agent brings them up. A repository scaffolded from a stack ships a docker-compose.yml describing its real services; the default web stack's file defines a db service running Postgres, an api service built from the backend, and a web service built from the frontend, wired together with health checks. The agent deploys that composition as a preview environment straight from the sandbox: it gets back a URL and the container list, checks per-container status and logs, and executes commands inside a running container to debug it. See Preview environments.
Verifying what it built
The stack declares quality gates, and the scaffolded repository carries the commands for them in .sdlc/quality-gates.yaml: a typecheck, test, build, and lint command each. The gates and the stack's pinned toolchain are placed in front of the agent during implementation, with typecheck, build, tests, and secret scanning blocking, and lint advisory. After the agent's changes, the platform's check suite runs against the workspace and any failing check is fed back into the next implementation attempt with the instruction to fix it first.
The same check suite verifies the environment itself before a run begins; see Preflight checks.
Next steps
- Agent sandboxes: sandbox lifecycle and what runs inside.
- Preview environments: running the composed application and sharing it.
- Preflight checks: what is verified before an agent run.
- Marketplace: manage stack and devenv packs and their overrides.