Skip to main content

Local runner for AutoClaude. Executes orchestration plans with your Claude Max/Pro subscription.

Project description

autoclaude-cli

Local runner for AutoClaude. Executes orchestration plans handed down from the server using your own Claude Max/Pro subscription. The server never pays for tokens.

Requirements

  • Python 3.11+
  • Claude Code CLI on $PATH (claude --version works) and a Max or Pro subscription signed in.
  • gh CLI signed in with access to the target repo.
  • Git.

Install

With uv (recommended):

uv tool install autoclaude-cli

Or with pipx:

pipx install autoclaude-cli

Don't have uv yet? Install it first:

curl -LsSf https://astral.sh/uv/install.sh | sh          # macOS / Linux
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"   # Windows

During development, install from source:

uv tool install --force .      # or: pipx install --force ./

Quickstart

# 1. Authenticate once. Defaults to https://autoclaude.grezy.org.
#    Login also installs two per-user services:
#      - heartbeat  (always-on liveness ping; never paused)
#      - scheduler  (runs `autoclaude tick` every 15 minutes)
autoclaude login

# 2. Verify everything is wired up.
autoclaude diag
autoclaude services         # heartbeat + scheduler status

# 3. Fire a tick manually if you don't want to wait for the scheduler.
autoclaude tick

Pause / resume / switch server

autoclaude pause                  # stop scheduled ticks (heartbeat keeps running)
autoclaude play                   # resume scheduled ticks
autoclaude switch staging         # change active profile and rebind both services

pause only stops the scheduler. The heartbeat is always on so the dashboard's "Active CLIs" KPI stays accurate.

Profiles

autoclaude supports multiple named profiles (stored in ~/.config/autoclaude/config.toml). Each profile holds one URL, its API key, and an optional repo checkout.

autoclaude login                                        # default profile -> prod
autoclaude --profile staging login --url https://stage.example.com
autoclaude --profile staging tick
AUTOCLAUDE_PROFILE=staging autoclaude tick

List configured profiles and switch the active one persistently:

autoclaude profiles          # list profiles, * marks active
autoclaude use staging       # set active profile (persists in config.toml)

--url accepts localhost:3001 (http is assumed) or a full https://… URL. Override at runtime with AUTOCLAUDE_URL / AUTOCLAUDE_API_KEY.

How it works

  1. CLI mirrors the source repo into $AUTOCLAUDE_HOME/repos/<slug>/ (defaults to ~/.autoclaude/repos/<slug>/); subsequent ticks just fetch.
  2. CLI fetches the current plan from GET /api/ac/runner/context/.
  3. After opening the tick, CLI creates a dedicated git worktree at $AUTOCLAUDE_HOME/worktrees/<slug>/<tick_id>/ on branch autoclaude/<slug>/tick-<tick_id>.
  4. For each step in the plan:
    • Spawns claude -p "<prompt>" inside the worktree. The user's checkout is never modified.
  5. Closes the tick with the outcome and cost report, removes the worktree, and keeps the branch so the changes remain inspectable.

Override the workspace root with the AUTOCLAUDE_HOME environment variable.

Running as root

The claude CLI refuses to combine --permission-mode bypassPermissions (or --dangerously-skip-permissions) with an effective UID of 0. autoclaude detects this case automatically and:

  1. Creates a system group and user named autoclaude (idempotent), and adds root to the autoclaude group so both accounts can share files.
  2. Symlinks /home/autoclaude/.claude to root's ~/.claude so the spawned process reuses the same authentication and settings.
  3. Grants the autoclaude group rwX on the working repo.
  4. Wraps the claude invocation with runuser -u autoclaude --preserve-environment -- (falling back to sudo -E -u autoclaude if runuser is unavailable).

If neither useradd/adduser nor runuser/sudo are present (e.g. minimal busybox containers), autoclaude fails the step with a clear message pointing at https://github.com/grezy-software/autoclaude-cli/issues so we can extend support for that platform.

Permission mode auto-detection

If your ~/.claude/settings.json (or the project-level <repo>/.claude/settings.json, which takes precedence) already has:

{ "permissions": { "defaultMode": "auto" } }

then autoclaude will spawn claude without the --permission-mode flag and let claude's auto mode handle permissions itself. Otherwise it keeps passing --permission-mode bypassPermissions as before.

License

MIT. See LICENSE.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

autoclaude_cli-2.4.2.tar.gz (132.7 kB view details)

Uploaded Source

Built Distribution

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

autoclaude_cli-2.4.2-py3-none-any.whl (98.2 kB view details)

Uploaded Python 3

File details

Details for the file autoclaude_cli-2.4.2.tar.gz.

File metadata

  • Download URL: autoclaude_cli-2.4.2.tar.gz
  • Upload date:
  • Size: 132.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for autoclaude_cli-2.4.2.tar.gz
Algorithm Hash digest
SHA256 6c82b7bb36a56af206f4cc685d531a67e5d4793c978607a61b7c67c41c092e00
MD5 8472ce6312a502b123f6880a0e28876f
BLAKE2b-256 32672523975008f60455256317124d7289de217f20fe085ef680dea89623a2d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoclaude_cli-2.4.2.tar.gz:

Publisher: release.yml on grezy-software/autoclaude-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 autoclaude_cli-2.4.2-py3-none-any.whl.

File metadata

  • Download URL: autoclaude_cli-2.4.2-py3-none-any.whl
  • Upload date:
  • Size: 98.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for autoclaude_cli-2.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aac009930d9437a7984f3d8017a980d945ad7a61e621f9dbc13d75f725f71650
MD5 7da52f93db3c559f5245c92a40d4d7a1
BLAKE2b-256 3483629ce42f4eb825e2cc0f479e0b8cb46a794daddca2434f0d87fe59257c98

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoclaude_cli-2.4.2-py3-none-any.whl:

Publisher: release.yml on grezy-software/autoclaude-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