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.5.9.tar.gz (140.6 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.5.9-py3-none-any.whl (98.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: autoclaude_cli-2.5.9.tar.gz
  • Upload date:
  • Size: 140.6 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.5.9.tar.gz
Algorithm Hash digest
SHA256 7cf77de37c91cc55b011ce7cddf41277f20849f8680cb2c9f4689aede772c5ea
MD5 d184662b52cad5b9b5f08d52a5f01486
BLAKE2b-256 ca0b2713eeeeaa03818c10caa14b0b264bc28dc5a3461e5836bf442d7bcb2183

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoclaude_cli-2.5.9.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.5.9-py3-none-any.whl.

File metadata

  • Download URL: autoclaude_cli-2.5.9-py3-none-any.whl
  • Upload date:
  • Size: 98.6 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.5.9-py3-none-any.whl
Algorithm Hash digest
SHA256 209d94a1eb01c1e7f8d5a9d5a0bd3f922582a3fd799547e138033c1c33c88f80
MD5 b340dce112c17a9b97e02fbb06254634
BLAKE2b-256 ceb44c658e6df62309d3ec968c6036f0255915fec0716466e091abd10ff2035e

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoclaude_cli-2.5.9-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