Google's Jules AI Agent: Autonomous Coding and Environment Setup Guide
Software engineer and founder with a background in finance and tech. Currently building aVenture.vc, a platform for researching private companies. Based in San Francisco.


Software engineer and founder with a background in finance and tech. Currently building aVenture.vc, a platform for researching private companies. Based in San Francisco.


Jules is Google's autonomous coding service released during Google I/O 2025. It runs on managed Google Cloud VMs, connects to GitHub repositories, and executes tasks asynchronously. Jobs run until completion and return a diff, plan, and reasoning trace.
/app; all commands are logged in the dashboard.Jules works like a remote engineer: it clones the repo, performs the scripted setup, runs tasks, and leaves artifacts you can review.
The agent does not currently support self-hosted runners or on-prem repositories. All execution happens in Google's environment.
| Area | Default behavior |
|---|---|
| Runtime | Node.js 22, Python 3.12, Java 21 images available. |
| Package managers | npm is detected automatically; pnpm, Bun, or Yarn require manual configuration. |
| Auth | Environment variables defined in the configuration UI are injected before the setup script runs. |
| Output | Each task produces a diff, plan summary, and optional audio recap. |
Add a setup script under Configuration → Environment. Jules runs this script before executing tasks. Jules doesn't properly detect alternative package managers like pnpm and Bun automatically. You need to configure these manually using custom setup scripts in the Configuration tab of your Jules project:
set -ux
export CI=true
cd /app
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
if [ -s "$NVM_DIR/nvm.sh" ]; then
set +e; \\. "$NVM_DIR/nvm.sh"; NVM_SOURCE_STATUS=$?; set -e
if [ $NVM_SOURCE_STATUS -ne 0 ] && [ $NVM_SOURCE_STATUS -ne 3 ]; then
echo "ERROR: NVM sourcing failed: $NVM_SOURCE_STATUS"; exit 1
fi
else
echo "ERROR: NVM script not found"; exit 1
fi
set -e
nvm install 22 && nvm use 22 && nvm alias default 22
npm install -g pnpm@10
pnpm install --frozen-lockfile
set -ux
export CI=true
cd /app
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
if [ -s "$NVM_DIR/nvm.sh" ]; then
set +e; \\. "$NVM_DIR/nvm.sh"; NVM_SOURCE_STATUS=$?; set -e
if [ $NVM_SOURCE_STATUS -ne 0 ] && [ $NVM_SOURCE_STATUS -ne 3 ]; then
echo "ERROR: NVM sourcing failed: $NVM_SOURCE_STATUS"; exit 1
fi
else
echo "ERROR: NVM script not found"; exit 1
fi
set -e
nvm install 22 && nvm use 22 && nvm alias default 22
curl -fsSL https://bun.sh/install | bash
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
bun install
These scripts:
Jules compared to other AI coding assistants:
OpenAI Codex (Introducing Codex): Codex has a polished UI with inline diff views and a mobile app, but lacks direct network access within requests and two-way GitHub sync that Jules provides.
GitHub Copilot Agent: This agent offers asynchronous code testing and generation. It integrates well with GitHub but doesn't have the same VM-based execution environment as Jules.
Devin (devin.ai): Devin offers two-way GitHub integration and real-time preview deployments on Vercel. Its IDE-like controls allow engineers to iterate naturally via Slack or its native UI.
Manus (manus.im): Handles code reviews and PR workflows, with rapid context switching and fetching relevant code references within active pull requests.
Choose based on your workflow: network access, GitHub integration, UI, and CI/CD needs.
Jules has been reliable for dependency upgrades, regenerating SDKs, and running large-formatting tasks that take longer than a local machine allows. For urgent hotfixes or code that depends on local services, a conventional shell is still faster. Treat the agent as a remote worker that follows scripts literally—every successful job starts with a clean, reproducible setup phase.