This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.7.0 instead.
cursorloop
Onion-architected, autonomous Cursor Agent session runner — Composer-first
(composer-2.5); Grok is a secondary model profile, not a product. Never
blocks on a human. Distinguishes a waitable rate-limit window from
non-waitable exhausted credits.
Same job as claudeloop,
retargeted onto the Cursor Agent SDK (cursor-sdk). No Anthropic dependency.
| Author | Adam Matthew Steinberger (@adammatthewsteinberger) |
| License | MIT |
| Docs | adammatthewsteinberger.github.io/cursorloop |
| Python | 3.12+ (macOS / Linux) |
| Default model | composer-2.5 |
| Auth | CURSOR_API_KEY |
| Run state | .cursorloop/ |
Status (honest)
Pre-1.0. Tasks 1–20 are on main: Typer CLI (run / resume /
doctor / mid-run control), bootstrap auto-launches
CursorClient.launch_bridge, full doctor checklist (offline-capable),
deterministic pytest -m system harness, Cloud Agents partial but live
HTTP (cloud me|models|…, ADR-0006), CLI-fallback gateway, docs site, and
mirrored agent skills.
Use CURSOR_API_KEY for live runs, or the scripted test-agent gate for offline
end-to-end checks. cursorloop doctor --offline skips live me / models calls.
Start with the quickstart or browse the docs site. Design history lives in the implementation plan (GitHub tree; not part of the published site nav).
Install
pipx install cursorloop
# or
pip install cursorloop
From source:
git clone https://github.com/adammatthewsteinberger/cursorloop.git
cd cursorloop
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
See the installation guide.
Quality gates
ruff check src tests
ruff format --check src tests
mypy src/cursorloop
pytest
lint-imports
bandit -q -r src/cursorloop
pip-audit
Coverage floors (CI): domain / application / infrastructure / CLI — 100%.
Non-negotiables
Documented in
AGENTS.md
/
CURSOR.md:
- Never block on a human.
- Credits exhaustion ≠ waitable rate-limit window.
- Capacity rejection always outranks a completion claim.
domain/stays pure (stdlib only).- No Anthropic /
claude_agent_sdkdependency or foreign auth env fallbacks.
Contributing
See CONTRIBUTING.md.
PRs target develop.
Security:
SECURITY.md.
Conduct:
CODE_OF_CONDUCT.md.
Plans
| Document | Purpose |
|---|---|
| architecture-and-roadmap.md | Design record / transplant plan |
| research-notes.md | Vendor SDK/CLI research |
| _shared-transplant-outline.md | Cross-product keep/swap |
| implementation plan | Task-by-task TDD plan |
License
MIT © Adam Matthew Steinberger. See LICENSE.
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 cursorloop-0.4.0.tar.gz.
File metadata
- Download URL: cursorloop-0.4.0.tar.gz
- Upload date:
- Size: 355.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
328f04b7b48196e0420edea641aea3d2a8bb17b55d18c6e6615c33e068e77231
|
|
| MD5 |
c329e8cc53f2474f21db67576254ced1
|
|
| BLAKE2b-256 |
a04fa9183b05897599edef4f0f32792e792d070edc33a966bb4bd588fef39e59
|
Provenance
The following attestation bundles were made for cursorloop-0.4.0.tar.gz:
Publisher:
publish-to-pypi.yml on adammatthewsteinberger/cursorloop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cursorloop-0.4.0.tar.gz -
Subject digest:
328f04b7b48196e0420edea641aea3d2a8bb17b55d18c6e6615c33e068e77231 - Sigstore transparency entry: 2485549317
- Sigstore integration time:
-
Permalink:
adammatthewsteinberger/cursorloop@6f32bd813d72a9ae4c0120a05d1a91b7f31d3f51 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/adammatthewsteinberger
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@6f32bd813d72a9ae4c0120a05d1a91b7f31d3f51 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cursorloop-0.4.0-py3-none-any.whl.
File metadata
- Download URL: cursorloop-0.4.0-py3-none-any.whl
- Upload date:
- Size: 108.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dca7b2263bfed8a00be08476173d15ee047577db332cb09e762cfc57668cf45b
|
|
| MD5 |
8e89936fa29e161f12c87cf1c4172c0c
|
|
| BLAKE2b-256 |
f6cb10a0897445b2643052144eb82987399514e9c292a9205f67ab6a9480380b
|
Provenance
The following attestation bundles were made for cursorloop-0.4.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on adammatthewsteinberger/cursorloop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cursorloop-0.4.0-py3-none-any.whl -
Subject digest:
dca7b2263bfed8a00be08476173d15ee047577db332cb09e762cfc57668cf45b - Sigstore transparency entry: 2485549398
- Sigstore integration time:
-
Permalink:
adammatthewsteinberger/cursorloop@6f32bd813d72a9ae4c0120a05d1a91b7f31d3f51 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/adammatthewsteinberger
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@6f32bd813d72a9ae4c0120a05d1a91b7f31d3f51 -
Trigger Event:
workflow_dispatch
-
Statement type: