Skip to main content

A developer CLI for Jules API automation

Project description

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.

Project details


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.

Supported by

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