Autoloop
Protocol-driven agent loops for shipping real code with less babysitting.
Autoloop is a stateful orchestration runtime for repository work. It runs plan, implement, test, and final intent-audit producer/verifier pairs with durable state, resumable runs, phase scoping, provider-neutral sessions, git-backed checkpoints, and automatic follow-up runs for unresolved intent gaps.
Requirements
- Python 3.10+
- One supported provider CLI:
codexforprovider.name: codex(default)claudeforprovider.name: claude, with localclaude auth statusalready working
gitis optional when running with--no-git
Install
Install from PyPI:
python3 -m pip install autoloop
autoloop --help
Install from this repository:
python3 -m pip install -e .
autoloop --help
python3 -m autoloop --help
Or use the bundled installer:
./install_autoloop.sh
The installer sets up Autoloop itself and the packaged skill, but it does not install provider CLIs for you. Install codex or claude separately based on the provider you plan to run.
Reruns are intentionally conservative: use ./install_autoloop.sh --dry-run to preview changes, --overwrite to replace an existing launcher or skill file, --recreate-venv to replace an existing virtualenv, and --skill-target both|codex|agents|none to control where the packaged skill is installed.
Quickstart
Put config in either:
~/.config/autoloop/autoloop.yaml(or$XDG_CONFIG_HOME/autoloop/autoloop.yaml) for global defaults/path/to/workspace/autoloop.yamlfor workspace-local overrides
Minimal Codex config:
provider:
name: codex
Minimal Claude config:
provider:
name: claude
First run:
autoloop --workspace /path/to/workspace --intent "Describe the task you want shipped"
Expected success artifacts under the workspace:
.autoloop/tasks/<task-id>/runs/<run-id>/raw_phase_log.md.autoloop/tasks/<task-id>/runs/<run-id>/events.jsonl.autoloop/tasks/<task-id>/runs/<run-id>/request.md.autoloop/tasks/<task-id>/runs/<run-id>/artifacts/plan/.autoloop/tasks/<task-id>/runs/<run-id>/artifacts/implement/phases/<phase-key>/.autoloop/tasks/<task-id>/runs/<run-id>/artifacts/test/phases/<phase-key>/.autoloop/tasks/<task-id>/runs/<run-id>/artifacts/audit/
Useful follow-up commands:
autoloop --workspace /path/to/workspace --list-tasks
autoloop --workspace /path/to/workspace --task-id <task-id> --resume
Troubleshooting:
| Symptom | Fix |
|---|---|
codex is missing for the default setup |
Install Codex with npm i -g @openai/codex, or switch to provider.name: claude and verify claude auth status. |
autoloop command is not found after running the installer |
Add the installer bin directory to PATH, or run python3 -m autoloop --help from the repo checkout. |
| Autoloop is not picking up your config | Put exactly one autoloop.yaml or autoloop.config file in the global config directory or workspace root. |
git is unavailable |
Install git, or run Autoloop with --no-git if you do not need checkpoints. |
Configuration
Autoloop reads configuration from these directories, in this order:
$XDG_CONFIG_HOME/autoloop/or~/.config/autoloop/- the selected workspace root passed to
--workspace
Within each directory it looks for:
autoloop.yamlautoloop.config- legacy read-only fallback:
superloop.yaml - legacy read-only fallback:
superloop.config
If more than one config file exists in the same directory, Autoloop fails fast instead of guessing.
Use the nested provider shape for new configs:
provider:
name: codex
codex:
model: gpt-5.4
model_effort: null
claude:
model: null
effort: null
permission_strategy: inherit
runtime:
pairs: plan,implement,test,audit
max_iterations: 15
phase_mode: single
intent_mode: preserve
full_auto_answers: false
no_git: false
auto_followup: true
auto_followup_max_depth: 3
Notes:
- Legacy flat Codex keys
provider.modelandprovider.model_effortare still read for backward compatibility. --modeland--model-effortare Codex-only CLI overrides.- Claude defaults intentionally inherit the operator's existing Claude Code environment. Default Claude runs do not add strict mode,
--bare, tool restriction flags, orstream-json. runtime.full_auto_answersnow uses the active provider instead of being Codex-only.- The default
auditpair runs once after the selected plan/implement/test work completes. Plan, implement, test, and audit artifacts are run-local under.autoloop/tasks/<task-id>/runs/<run-id>/artifacts/. If audit finds material unresolved gaps, the run finishes withneeds_followup; by default Autoloop immediately starts a linked follow-up run from that run'sartifacts/audit/revised_request.md, capped byruntime.auto_followup_max_depth.
Runtime State
Fresh runs write state under .autoloop/.
Task directories keep the task index and cross-run ledger. Run-specific execution state lives under .autoloop/tasks/<task-id>/runs/<run-id>/, including run.json, decisions.txt, provider sessions, raw logs, events, the immutable request snapshot, and the run-local artifacts/ tree.
For the first Autoloop release, resume and task listing can still read legacy .superloop/ workspaces when no .autoloop/ state exists for the requested task or run.
Session files now store provider-neutral provider and session_id fields. Legacy Codex session files that only contain thread_id remain load-compatible.
Claude Validation
Maintainer live-validation steps for inherited-environment Claude repos and resume config-drift checks are recorded in docs/claude_rollout_checklist.md.
Skill
The packaged Autoloop skill lives at src/autoloop/skill/SKILL.md.
Release files for autoloop 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| autoloop-0.1.5.tar.gz | 98.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autoloop-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:173.6 kB
Release files / autoloop-0.1.5.tar.gz
| Download URL | autoloop-0.1.5.tar.gz |
|---|---|
| Size | 98.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7c7df1c5ec0d1324fc6488d559c8e774b6470680c6ba414059e8cead0c077b15
|
|
BLAKE2b-256 checksum How to use checksums |
258e227c63e3834dbf4a02a9a1fa4c3df4db9fe8a30f29aa9785f34e96ee4ac2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|
Release files / autoloop-0.1.5-py3-none-any.whl
| Download URL | autoloop-0.1.5-py3-none-any.whl |
|---|---|
| Size | 75.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c1cab5768dae48ffb9079ce0d7687cf5e5ef78b0324581703fa7332d74cba9b
|
|
BLAKE2b-256 checksum How to use checksums |
1b68c3faf2c248d04c73053733903f68f519920e662d5248f8a535cd9afe4442
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|