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

Uploaded Python 3

File details

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

File metadata

  • Download URL: autoclaude_cli-2.4.7.tar.gz
  • Upload date:
  • Size: 133.0 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.7.tar.gz
Algorithm Hash digest
SHA256 be74cfade49f983ec816e022d096482513c1e34f99be344bbe0b1dcc72e0af59
MD5 bf79d22532d422049c649740af2c5afc
BLAKE2b-256 999d3d8217b95197cc309bc29c2cea382de0bd0ddc84ef91b75d13e4bd3db936

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: autoclaude_cli-2.4.7-py3-none-any.whl
  • Upload date:
  • Size: 95.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.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 07be865cf278f8fad517841469b9c92a8561a0678b2346bf69e17ad7e6a12f6b
MD5 11fc835d18d0586e49597f0870affcab
BLAKE2b-256 0337f7c099b8d6efa55f4549542f91c7c77a68f9007cfce760d37e87132cf162

See more details on using hashes here.

Provenance

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