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.
AutoClaude turns Claude Code into an always-on teammate. Schedule plans, ship work overnight, and track costs from one dashboard. Sign up at autoclaude.grezy.org.
Requirements
- Python 3.11+
- Claude Code CLI on
$PATH(claude --versionworks) and a Max or Pro subscription signed in. ghCLI 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 5 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
- CLI mirrors the source repo into
$AUTOCLAUDE_HOME/repos/<slug>/(defaults to~/.autoclaude/repos/<slug>/); subsequent ticks just fetch. - CLI fetches the current plan from
GET /api/ac/runner/context/. - After opening the tick, CLI creates a dedicated git worktree at
$AUTOCLAUDE_HOME/worktrees/<slug>/<tick_id>/on branchautoclaude/<slug>/tick-<tick_id>. - For each step in the plan:
- Spawns
claude -p "<prompt>"inside the worktree. The user's checkout is never modified.
- Spawns
- 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:
- Creates a system group and user named
autoclaude(idempotent), and addsrootto theautoclaudegroup so both accounts can share files. - Symlinks
/home/autoclaude/.claudeto root's~/.claudeso the spawned process reuses the same authentication and settings. - Grants the
autoclaudegroup rwX on the working repo. - Wraps the
claudeinvocation withrunuser -u autoclaude --preserve-environment --(falling back tosudo -E -u autoclaudeifrunuseris 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file autoclaude_cli-2.7.0.tar.gz.
File metadata
- Download URL: autoclaude_cli-2.7.0.tar.gz
- Upload date:
- Size: 163.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bee2e163480685c09de098b08296c467cbda2d5d343bfee67acbcfbe7126c108
|
|
| MD5 |
85bed751eb50f0a919293d5ee75b3950
|
|
| BLAKE2b-256 |
38f77e9c124e125b44c72b7b219cfa3178507299d5fb207999a4384c6a88e420
|
Provenance
The following attestation bundles were made for autoclaude_cli-2.7.0.tar.gz:
Publisher:
release.yml on grezy-software/autoclaude-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoclaude_cli-2.7.0.tar.gz -
Subject digest:
bee2e163480685c09de098b08296c467cbda2d5d343bfee67acbcfbe7126c108 - Sigstore transparency entry: 1439938468
- Sigstore integration time:
-
Permalink:
grezy-software/autoclaude-cli@73d3f13aa4561fa5d927f9e19240da5b8539a324 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/grezy-software
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@73d3f13aa4561fa5d927f9e19240da5b8539a324 -
Trigger Event:
push
-
Statement type:
File details
Details for the file autoclaude_cli-2.7.0-py3-none-any.whl.
File metadata
- Download URL: autoclaude_cli-2.7.0-py3-none-any.whl
- Upload date:
- Size: 112.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41037039b7abcb6a9f86ca82ba2f3bf17805c63dab0b4ff7e777ab3eff38df28
|
|
| MD5 |
01943934c763e3349fdfdd6d9a74430c
|
|
| BLAKE2b-256 |
f2457e69ffbbf9df6cbd2ea3bb809d5dbdbe7f86b5bba0398a01632273019ffa
|
Provenance
The following attestation bundles were made for autoclaude_cli-2.7.0-py3-none-any.whl:
Publisher:
release.yml on grezy-software/autoclaude-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoclaude_cli-2.7.0-py3-none-any.whl -
Subject digest:
41037039b7abcb6a9f86ca82ba2f3bf17805c63dab0b4ff7e777ab3eff38df28 - Sigstore transparency entry: 1439938474
- Sigstore integration time:
-
Permalink:
grezy-software/autoclaude-cli@73d3f13aa4561fa5d927f9e19240da5b8539a324 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/grezy-software
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@73d3f13aa4561fa5d927f9e19240da5b8539a324 -
Trigger Event:
push
-
Statement type: