the-loop CLI
A lightweight, extensible command-line companion to the-loop — an opinionated product-development-lifecycle harness shipped as a Claude Code and Cursor plugin.
The plugin is the operating model an agent follows inside a session. This CLI is what starts those sessions, keeps them attached to work items, and tells you what happened: a GitHub webhook receiver and a poller that turn ticket activity into agent runs, a session registry, execution control, a structured event log, and repo-scoped commands for the process graph, critic rounds and test-scenario discovery.
Written in Python with one runtime dependency, PyYAML — its whole configuration is YAML, so reading it is not optional — and stdlib otherwise. Python is intentional: it leaves room to add self-learning / ML capabilities later, which are mostly exposed as Python SDKs.
Install
Published to PyPI as the-loopy-one — the base name the-loop was taken. The import
package and the console script keep the natural the_loop / the-loop:
pip install the-loopy-one # PyYAML comes with it — nothing else to add
the-loop --help
Optional extras: the-loopy-one[slack] for the official Slack SDK transport.
([config] is a deprecated no-op — PyYAML is a required dependency now — kept so pinned
install lines keep resolving.)
In one minute
# 1. Tell the daemon who may drive it, in ~/.the-loop/cli-config.yaml
# webhooks.ghWebhook.routing.authorizedUsers: ["your-github-login"]
# polling.sources: [{ provider: github, repos: ["your-org/your-repo"] }]
# 2. Start an ingress (poll needs no inbound networking)
the-loop poll start
# 3. Label a GitHub issue "the-loop: auto-execute", then comment:
# the-loop:start-execution
# 4. Watch
the-loop sessions list
the-loop events --follow
Documentation
Full docs at https://madarauchiha-314.github.io/the-loop/cli/:
| Overview | What the CLI is, and when you need it |
| Installation | PyPI, uv, extras, what else to have on PATH |
| Getting started | Zero to an auto-executing work item, in five steps |
| Concepts | Ingress, sessions, guards, workspaces, the process graph |
| Commands | gh-webhook · poll · sessions · events · check · graph · critic · scenarios · migrate-config |
| Configuration | Every option, by area, with types and defaults |
| Adding a command | The Command / @register contract |
Two config files, and they never overlap. The CLI daemon reads
cli-config.yaml(yours, machine-scoped, resolved via--config→$THE_LOOP_CLI_CONFIG→./.the-loop/cli-config.yaml→~/.the-loop/cli-config.yaml). A repository's.the-loop/harness-config.yamlis the plugin config and is never read by the daemon — includingauthorizedUsersand a poll source'srepos, which have no fallback and fail closed when unset. See Configuring the-loop.
Development
the-loop uses uv. From the repository root:
uv sync # install the workspace from uv.lock
uv run the-loop --help
make test # pytest
make check # ruff · pyright · schema validation · pytest
Releases are automatic: on merge to main, cz bump derives the next version from the
Conventional Commits since the last tag and publishes to PyPI via Trusted Publishing
(OIDC — no stored token).
License
MIT.
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 the_loopy_one-4.1.0.tar.gz.
File metadata
- Download URL: the_loopy_one-4.1.0.tar.gz
- Upload date:
- Size: 311.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 |
ce75f4cf29f591c49e57d646fd6271aee686b2c95a447204ea022de8d60cf173
|
|
| MD5 |
2fd46c06145633820fb8bf68e2a08b1e
|
|
| BLAKE2b-256 |
93b496f36a1fa07783f2b9507d7203bbb728289e8691c4781a642896444f5299
|
Provenance
The following attestation bundles were made for the_loopy_one-4.1.0.tar.gz:
Publisher:
release.yml on MadaraUchiha-314/the-loop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
the_loopy_one-4.1.0.tar.gz -
Subject digest:
ce75f4cf29f591c49e57d646fd6271aee686b2c95a447204ea022de8d60cf173 - Sigstore transparency entry: 2314535392
- Sigstore integration time:
-
Permalink:
MadaraUchiha-314/the-loop@a9fd423c6a9856529b218038a50ca47461c13695 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MadaraUchiha-314
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a9fd423c6a9856529b218038a50ca47461c13695 -
Trigger Event:
push
-
Statement type:
File details
Details for the file the_loopy_one-4.1.0-py3-none-any.whl.
File metadata
- Download URL: the_loopy_one-4.1.0-py3-none-any.whl
- Upload date:
- Size: 218.1 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 |
f9b395c7f3bba02fd1e15a5f3d05f79d42f5915ade2309596ec12abf5262a955
|
|
| MD5 |
6e1dee756d4f106a2057c26eee8a5d10
|
|
| BLAKE2b-256 |
e26662fa118e0877912e7a4e32b337cdbbdc8ba303e996431421d74c87af1d49
|
Provenance
The following attestation bundles were made for the_loopy_one-4.1.0-py3-none-any.whl:
Publisher:
release.yml on MadaraUchiha-314/the-loop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
the_loopy_one-4.1.0-py3-none-any.whl -
Subject digest:
f9b395c7f3bba02fd1e15a5f3d05f79d42f5915ade2309596ec12abf5262a955 - Sigstore transparency entry: 2314535404
- Sigstore integration time:
-
Permalink:
MadaraUchiha-314/the-loop@a9fd423c6a9856529b218038a50ca47461c13695 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MadaraUchiha-314
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a9fd423c6a9856529b218038a50ca47461c13695 -
Trigger Event:
push
-
Statement type: