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.

Jules overview
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.
Google's Jules: An Autonomous & Asynchronous Coding Agent
- Public free beta at jules.google (access requires a Google account)
- GitHub App installation is mandatory; Jules reads repositories through that integration
- Jobs execute inside a temporary VM, and each run has a default 60-minute cap
Feature summary
- Planning and diff output – every run publishes the plan, intermediate reasoning, and final patch set before prompting for approval.
- Long-context models – Jules uses Gemini 2.5 Pro; requested context is capped at roughly 200k tokens during the beta.
- Audio recap – optional short audio summary for teams that prefer listening to changelog updates.
- Tool execution – runs shell commands, package managers, and tests inside
/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.
Session workflow
- Create a project in the Jules dashboard.
- Provide repository access, then hit Configure to define setup commands.
- Submit a natural-language task. Jules runs the plan, opens pull requests when asked, and exposes logs in the web UI.
- You can interrupt a run at any stage; the VM is destroyed afterward.
The agent does not currently support self-hosted runners or on-prem repositories. All execution happens in Google's environment.
Default tools
| 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. |
Custom package manager setup
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:
pnpm
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
Bun
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:
- Install NVM (Node Version Manager)
- Set up Node.js 22 (latest stable)
- Install the latest version of your chosen package manager
- Install project dependencies with frozen lockfiles
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.
When to use Jules vs. local tooling
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.
Beta limitations and privacy
- Usage limits – during public beta the service is free but throttled; Google has indicated a paid tier will replace the free allowance when the beta closes.
- Data handling – Google states that private repositories processed through Jules are not used to train models and stay within the temporary execution environment.
- Unsupported environments – self-hosted Git or non-GitHub remotes are not yet available; every job clones from GitHub via the installed app.






