Google's Jules AI Agent: Autonomous Coding and Environment Setup Guide
Software engineer, founder, and leadership background in finance/tech. 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.
The agent’s behavior resembles a remote engineer: it clones the repo, performs the scripted setup, runs tasks, and leaves artefacts 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
Here's how Jules compares to other major AI coding assistants:
-
OpenAI Codex (Introducing Codex): Recently released as a research preview, Codex offers a polished UI with inline diff views and a mobile app. However, it currently lacks direct network access within requests and two-way GitHub sync that Jules provides.
-
GitHub Copilot Agent: Building on the popular Copilot, this agent now offers asynchronous code testing and generation. While it integrates well with GitHub (naturally), it doesn't have the same level of VM-based execution environment as Jules.
-
Devin (devin.ai): One of the first autonomous coding agents, 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): Specializes in code reviews and PR workflows, excelling at rapid context switching and fetching relevant code references within active pull requests.
When choosing between these tools, consider your specific workflow needs—such as network access requirements, GitHub integration depth, UI preferences, and CI/CD integration capabilities.
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.








