Skip to main content

jules-cli

The AI-Powered Developer Assistant.

Automate tests, refactoring, and feature development with a single command.

Build Status License: MIT Python 3.8+ Code Style: Black Maintenance


⚡ Quick Start (The "5-Minute Rule")

Prerequisites

  • Python 3.8 or higher.
  • Git installed and configured.
  • pip package manager.

Install

Install the package in editable mode or from source:

pip install .

Run

Initialize your credentials and configuration (interactive wizard):

jules init

Demo

Fix a bug, run tests, and create a PR in seconds:

# 1. Ask Jules to fix a bug
jules task "Fix the NullReferenceError in user_login function"

# 2. Verify the fix
jules auto --runner pytest

# 3. Create a Pull Request
jules pr create --title "Fix: Handle null user in login"

✨ Features (The "Why")

Core Capabilities

  • Automated Bug Fixing: jules auto detects test failures and attempts to fix them automatically.
  • Task Execution: jules task "Implement feature X" writes code, tests, and docs from natural language.
  • Refactoring: jules refactor modernizes legacy codebases safely.
  • Test Generation: jules testgen creates unit and integration tests for existing code.
  • Proactive Suggestions: jules suggest audits your code for technical debt and security risks.

Performance & Experience

  • Smart Caching: Local caching of session artifacts to minimize API latency.
  • Async Core: Built for speed with asynchronous I/O operations.
  • TUI Mode: A rich terminal user interface (jules tui) for complex sessions.

Security

  • Secure Storage: API keys are stored in the system keyring, never in plain text.
  • Safe Patching: Review patches before applying them to your local file system.
  • Local Processing: Supports .julesignore to keep sensitive files out of the context window.

🛠️ Configuration (The "How")

Environment Variables

Name Description Default Required
JULES_API_KEY Your Jules API Key. None Yes
GITHUB_TOKEN Token for creating PRs and interacting with GitHub. None No (for PRs)

CLI Arguments

Global arguments available for every command:

Flag Description
--debug Enable debug logging for detailed troubleshooting.
--verbose Enable verbose output.
--json Output results in JSON format (useful for scripting).
--pretty Pretty-print JSON output.
--no-color Disable colored output.

Configuration File

Settings are stored in ~/.config/jules/config.toml. You can manage them via CLI:

# Set a value
jules config set core.logging_level DEBUG

# Get a value
jules config get core.default_branch

🏗️ Architecture

Directory Tree

.
├── src/jules_cli
│   ├── commands/       # CLI command implementations (auto, task, pr...)
│   ├── core/           # Jules API client interaction
│   ├── git/            # Git VCS wrappers
│   ├── patch/          # Patch application and conflict resolution
│   ├── testing/        # Test runner integration (pytest, unittest)
│   ├── tui/            # Textual-based TUI
│   └── utils/          # Shared utilities (logging, config, crypto)
└── tests/              # Pytest suite

Data Flow

  1. Input: User runs jules task "...".
  2. Process:
    • CLI parses args and loads config via src/jules_cli/utils/config.py.
    • core sends prompt + context (filtered by .julesignore) to Jules API.
    • Jules API returns a Patch.
  3. Output:
    • patch module applies changes to local files.
    • testing validates changes via pytest or unittest.
    • Results displayed via rich console or textual TUI.

🐞 Troubleshooting

Common Issues

Error Message Solution
JulesError: Unauthorized Run jules auth login to refresh credentials.
FileNotFoundError: config.toml Run jules init to create default config.
DatabaseLocked Ensure no other jules process is running.
Command not found: jules Ensure the virtual environment is activated and installed (pip install .).

Debug Mode

To see detailed logs for issue reporting:

jules --debug task "Verify setup"

Logs are written to stderr and can be captured:

jules --debug task "..." 2> jules_debug.log

🤝 Contributing

We welcome contributions! Please follow these steps to set up your development environment.

Dev Setup

  1. Clone the repository:

    git clone https://github.com/dhruv13x/jules-cli.git
    cd jules-cli
    
  2. Install in editable mode with dev dependencies:

    pip install -e ".[dev]"
    
  3. Run Tests:

    pytest
    
  4. Linting:

    ruff check .
    black .
    

See CONTRIBUTING.md for more detailed guidelines.


🗺️ Roadmap

Phase 1: Foundation (Current)

  • Core CLI structure & Session management.
  • Auto-fixing & Patch application.
  • TUI & Secure Auth.

Phase 2: The Standard

  • jules doctor & Interactive init.
  • Context-aware suggestions (jules suggest).

Phase 3: The Ecosystem (Upcoming)

  • CI/CD Templates.
  • IDE Extensions (VS Code, JetBrains).
  • Plugin Architecture.

Phase 4: The Vision (Future)

  • Multi-Agent Orchestration.
  • Autonomous Bug Hunting.

For a detailed view, check ROADMAP.md.

Metadata

Release files for jules-cli 17.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jules-cli 17.0.1
File Size Uploaded
jules_cli-17.0.1.tar.gz 54.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jules-cli 17.0.1
File Interpreter ABI Platform
jules_cli-17.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 105.9 kB

Release files / jules_cli-17.0.1.tar.gz

Download URL jules_cli-17.0.1.tar.gz
Size 54.8 kB
Tags Source
SHA-256 checksum
How to use checksums
096c44631cc8fcea9032207324c0a90b25ea3de10ed54ce918babc7d86e1d458
BLAKE2b-256 checksum
How to use checksums
6947e7db5606de7dbb462c8a866dd851ae4edb1ccc601057a2147442d1f390dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 15, 2025.

Transparency log

Release files / jules_cli-17.0.1-py3-none-any.whl

Download URL jules_cli-17.0.1-py3-none-any.whl
Size 51.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0d2783e0c4dbb3bb98e230df6a86a36e165ce01bf6542b810b65afabbb6d2e0e
BLAKE2b-256 checksum
How to use checksums
d508ad16b922c8596992d2ae5935139bfc2f7ee2b79cbc172763101bcc5b0483
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 15, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

17.0.1 This release

2 release files

11.0.3

2 release files

11.0.2

2 release files

11.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page