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.
Devin supports Windows as a build and session platform. Windows environments use the same bash shell (Git Bash) as Linux, so most blueprint commands work across both platforms without modification.
Windows support is currently available on a limited basis. If you’re interested in trying out Windows with Devin, please contact us to learn more and get access.
How it works
Windows support is built on the same declarative configuration system as Linux. The key difference is the runs-on field in your blueprint, which tells Devin which platform to build and run on.
Since both platforms use bash, you can write the same shell commands on Linux and Windows. The main differences are the file system layout and available package managers:
| Aspect | Linux (default) | Windows |
|---|
| Home directory | /home/ubuntu | /c/Users/Administrator |
| Repo directory | ~/repos/<repo-name> | /c/Users/Administrator/repos/<repo-name> |
| Package manager | apt-get | choco, winget, or direct installers |
Writing Windows blueprints
If your repository only targets Windows, use runs-on: windows at the top level:
runs-on: windows
initialize:
- name: "Install Node.js"
uses: github.com/actions/setup-node@v4
with:
node-version: "20"
- name: "Install build tools"
run: |
choco install visualstudio2022buildtools -y
choco install python --version=3.12 -y
maintenance: |
npm install
knowledge:
- name: lint
contents: npm run lint
- name: test
contents: npm test
- name: build
contents: npm run build
To build the same repository for both Linux and Windows, use the multi-block YAML format. Each block declares its own runs-on label:
- runs-on: default
initialize: |
curl -LsSf https://astral.sh/uv/install.sh | sh
apt-get update && apt-get install -y build-essential
maintenance: |
uv sync
knowledge:
- name: test
contents: uv run pytest
- runs-on: windows
initialize: |
choco install python --version=3.12 -y
maintenance: |
uv sync
knowledge:
- name: test
contents: uv run pytest
Each block produces a separate snapshot build for its platform. Sessions boot from the platform-specific snapshot.
The runs-on field
The runs-on field maps to a registered machine config on your account:
| Value | Platform |
|---|
default or linux | Linux (default platform) |
windows | Windows |
You can specify runs-on as a string or a list:
# Single platform
runs-on: windows
# Multiple platforms in one block (same commands run on each)
runs-on: [default, windows]
When a block lists multiple platforms, the build system creates one snapshot per platform using the same commands.
The list syntax runs identical commands on every platform in the list. Only use it when commands are truly cross-platform (e.g., npm install, uv sync). For platform-specific commands (like apt-get on Linux or choco on Windows), use the multi-block format instead — one block per platform.
Windows session behavior
Shell
Windows sessions use Git Bash as the default shell — the same bash shell used on Linux. Standard bash syntax works on both platforms:
- run: |
export MY_VAR="hello"
echo $MY_VAR
Paths
Windows uses Git Bash path format (/c/... instead of C:\...):
# Linux paths
- run: cp config.json ~/.config/myapp/config.json
# Windows paths (Git Bash format)
- run: cp config.json /c/Users/Administrator/.config/myapp/config.json
Secrets
Secrets are available as environment variables during sessions using standard bash syntax ($SECRET_NAME):
maintenance:
- name: "Configure registry"
run: |
npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
File attachments
On Windows, uploaded files are written to /c/Users/Administrator/.files/ instead of /home/ubuntu/.files/.
Blueprint tips for Windows
Use choco (Chocolatey), winget, or direct download scripts:
initialize:
- name: "Install Chocolatey packages"
run: |
choco install git -y
choco install nodejs-lts -y
choco install python --version=3.12 -y
- name: "Install with winget"
run: |
winget install --id Microsoft.DotNet.SDK.8 --accept-source-agreements --accept-package-agreements
Common patterns
.NET project:
runs-on: windows
initialize:
- name: "Install .NET SDK"
run: |
winget install --id Microsoft.DotNet.SDK.8 --accept-source-agreements --accept-package-agreements
maintenance: |
dotnet restore
knowledge:
- name: build
contents: dotnet build
- name: test
contents: dotnet test
- name: lint
contents: dotnet format --verify-no-changes
Visual Studio / C++ project:
runs-on: windows
initialize:
- name: "Install Visual Studio Build Tools"
run: |
choco install visualstudio2022buildtools -y
choco install visualstudio2022-workload-vctools -y
maintenance: |
msbuild /t:Restore MySolution.sln
knowledge:
- name: build
contents: msbuild MySolution.sln /p:Configuration=Release
- name: test
contents: vstest.console.exe bin/Release/Tests.dll