> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Environment configuration

> Configure Devin's environment so every session starts with your repos cloned, tools installed, and dependencies ready.

<Tip>
  **Devin can configure its own environment for you.** Just start a session and ask. [Learn more →](/onboard-devin/environment/blueprints#getting-started)
</Tip>

## What is Devin's environment?

Devin's environment is the workspace where Devin operates: a Linux-based virtual machine with your repositories cloned, tools installed, dependencies resolved, and configuration applied. It's the equivalent of a developer's laptop: the OS, the terminal, the installed toolchain, the cloned repos.

Your environment configuration is saved as a **snapshot**, a frozen, bootable image that every session starts from. Configure it once, and every session boots into that known-good state.

## Why environment configuration matters

Devin works the same way any developer does: it clones repos, installs dependencies, runs lint, compiles code, and executes tests. To do any of that, it needs a working environment. Without one, Devin can't build your project, can't run your tests, and can't verify its own work. It would be like hiring a developer and not giving them a laptop.

Environment configuration gives Devin the tools, runtimes, credentials, and project knowledge it needs to be productive from the first session. It also makes sessions faster: your snapshot already has repos cloned and dependencies installed, so Devin boots straight into productive work instead of setting up from scratch every time.

**This is the single highest-leverage thing you can do to improve Devin's effectiveness on your codebase.**

## How sessions work

Every session boots from a **snapshot**, a frozen, bootable image of the environment.

1. **Snapshot**: A pre-built image containing your repos, tools, and dependencies. Prepared in advance through configuration.
2. **Session**: Devin boots a fresh copy of the snapshot. Every session starts from the same clean state. Session changes don't persist back to the snapshot.

When your configuration changes, a new snapshot is built automatically. Each organization has exactly one active snapshot. Every session in that org boots from the same snapshot.

## Before you start

Before configuring Devin's environment, make sure Devin can access your repositories:

<AccordionGroup>
  <Accordion title="Non-enterprise users">
    1. **Connect your SCM provider.** Go to **Settings > Integrations** and connect GitHub, GitLab, Bitbucket, or Azure DevOps. Select which repositories Devin can access during setup. See the [integration guides](/integrations/overview) for detailed instructions.

    That's it. Once connected, you can proceed to environment configuration.
  </Accordion>

  <Accordion title="Enterprise users">
    1. **Connect your SCM provider (enterprise admin).** Go to **Enterprise Settings > Integrations** and connect your SCM provider. See [Git Integrations](/enterprise/integrations/git-integrations) for setup instructions.
    2. **Grant each org access to its repos (enterprise admin).** Go to **Enterprise Settings > Repository Permissions** and assign repositories to each organization. Orgs cannot see or use repos until you explicitly grant access. See [Repository Permissions](/enterprise/integrations/git-integrations#repository-permissions).
    3. **Configure the environment (org admin).** Once an org has repo access, proceed to environment configuration below.
  </Accordion>
</AccordionGroup>

<Warning>
  If you skip these steps, repos won't appear when you try to add them to your environment. Devin needs repository access through your Git integration before it can clone and build.
</Warning>

## Choose your approach

There are two ways to configure Devin's environment:

<CardGroup cols={2}>
  <Card title="Declarative configuration" icon="file-code" href="/onboard-devin/environment/blueprints">
    **Recommended.** Define your environment configuration in YAML format (blueprint). Specify what to install, how to set up dependencies, and what Devin should know about your project. Builds run automatically to produce snapshots.

    * Version controlled
    * Auto-updating
    * Composable across tiers
    * Reproducible
  </Card>

  <Card title="Classic configuration" icon="wand-magic-sparkles" href="/onboard-devin/repo-setup">
    Configure Devin's environment through an interactive wizard in the web UI. Step through guided screens (secrets, dependencies, lint, test, run) using an embedded terminal.

    * Visual, step-by-step
    * No YAML required
    * [Migrate to declarative →](/onboard-devin/environment/migration)
  </Card>
</CardGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Blueprint reference" icon="book" href="/onboard-devin/environment/blueprint-reference">
    Full field specification for blueprints: sections, GitHub Actions support, env vars, file attachments.
  </Card>

  <Card title="Template library" icon="copy" href="/onboard-devin/environment/templates">
    Copy-paste blueprints for Python, Node.js, Go, Java, Ruby, Rust, and advanced patterns.
  </Card>

  <Card title="Migrating from classic setup" icon="arrow-right" href="/onboard-devin/environment/migration">
    Step-by-step guide to move from the interactive wizard to declarative blueprints.
  </Card>

  <Card title="Enterprise environment management" icon="building" href="/enterprise/environment-management/overview">
    Enterprise-wide environment management: 3-tier hierarchy, secrets, and cross-org configuration.
  </Card>
</CardGroup>
