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

Uploaded Python 3

File details

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

File metadata

  • Download URL: autoclaude_cli-2.5.4.tar.gz
  • Upload date:
  • Size: 138.8 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.4.tar.gz
Algorithm Hash digest
SHA256 0a87a28fbf1c6f051f3dfec18264f0a0005a76f17d26743f8bee2bf25d847b5c
MD5 fd574f32fc69f6c4414e8856d9b45a63
BLAKE2b-256 4ebe29645e362986ed5ef22c6af295fa69d1ddfa769f1e200fece39d71ddee0b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: autoclaude_cli-2.5.4-py3-none-any.whl
  • Upload date:
  • Size: 97.8 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 db177e06cfc4086f0916f8871a1cff1e431a72efdfd3cb5d354fcfe9f4c292b1
MD5 ad71dcb3f5620a9df788281649f25177
BLAKE2b-256 a8787ba3d97bdf2d19779b07ac6fa5676acd910c247047f3ca01085ad1b36845

See more details on using hashes here.

Provenance

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