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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jules_cli-17.0.1.tar.gz (54.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jules_cli-17.0.1-py3-none-any.whl (51.1 kB view details)

Uploaded Python 3

File details

Details for the file jules_cli-17.0.1.tar.gz.

File metadata

  • Download URL: jules_cli-17.0.1.tar.gz
  • Upload date:
  • Size: 54.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jules_cli-17.0.1.tar.gz
Algorithm Hash digest
SHA256 096c44631cc8fcea9032207324c0a90b25ea3de10ed54ce918babc7d86e1d458
MD5 9486bda9bf14f2b50348413058d55b4a
BLAKE2b-256 6947e7db5606de7dbb462c8a866dd851ae4edb1ccc601057a2147442d1f390dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for jules_cli-17.0.1.tar.gz:

Publisher: publish.yml on dhruv13x/jules-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jules_cli-17.0.1-py3-none-any.whl.

File metadata

  • Download URL: jules_cli-17.0.1-py3-none-any.whl
  • Upload date:
  • Size: 51.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jules_cli-17.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0d2783e0c4dbb3bb98e230df6a86a36e165ce01bf6542b810b65afabbb6d2e0e
MD5 1a984089c11d0388e5d3e4397d43b697
BLAKE2b-256 d508ad16b922c8596992d2ae5935139bfc2f7ee2b79cbc172763101bcc5b0483

See more details on using hashes here.

Provenance

The following attestation bundles were made for jules_cli-17.0.1-py3-none-any.whl:

Publisher: publish.yml on dhruv13x/jules-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

17.0.1 This release

2 files

17.0.0

2 files

16.0.0

2 files

15.0.0

2 files

13.0.0

2 files

12.0.0

2 files

11.0.3

2 files

11.0.2

2 files

11.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page