Skip to main content

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

From there the CLI installs the rest of the-loop — and upgrades itself:

the-loop install            # this CLI + the Claude Code plugin (Cursor: issue #157)
the-loop upgrade            # move both to the current release
the-loop install claude --scope project --project-dir .   # one repository only

upgrade uses the installer that owns the copy you are running (uv tool, pipx, pip), and --dry-run prints the exact commands first.

No extras: one pip install the-loopy-one brings everything, including hosting the control-plane service and its MCP endpoint. ([service], [slack] and [config] are deprecated no-ops, kept so pinned install lines keep resolving.) Needs Python 3.10+.

In one minute

# 1. Tell the daemon who may drive it, in ~/.the-loop/cli-config.yaml
#      routing.authorizedUsers: ["your-github-login"]
#      polling.enabled: true    # polling needs no inbound networking
#      polling.sources: [{ provider: github, repos: ["your-org/your-repo"] }]

# 2. Bring the-loop up: starts every service the config enables — here the
#    control-plane service and the poller — detached, logging under .the-loop/logs/.
the-loop start

# 3. Label a GitHub issue "the-loop: auto-execute", then comment:
#      the-loop start

# 4. Watch
the-loop status             # per-service liveness + the poller's last cycle (exit 0/1)
the-loop sessions list
the-loop events --follow

Or embed it

The package is importable, so the control plane can live inside a Python service you already run instead of a process of its own:

from fastapi import Depends, FastAPI
from the_loop.sdk import TheLoop

loop = TheLoop(config_path="/etc/the-loop/cli-config.yaml")

app = FastAPI()
loop.mount(app, prefix="/the-loop", dependencies=[Depends(verify_caller)])

Same router as the-loop start serves, under your prefix, behind your auth and middleware. The capabilities work with no HTTP at all (loop.work_items.list()), and loop.check_environment() says at startup which external binaries your configuration needs. See the SDK docs.

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 · instructions · install · upgrade · migrate-config
Configuration Every option, by area, with types and defaults
Adding a command The Command / @register contract
Python SDK The same package, imported: mount the control plane into your own FastAPI service, or call the capabilities directly

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.yaml is the plugin config and is never read by the daemon — including authorizedUsers and a poll source's repos, 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

the_loopy_one-13.2.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

the_loopy_one-13.2.0-py3-none-any.whl (675.8 kB view details)

Uploaded Python 3

File details

Details for the file the_loopy_one-13.2.0.tar.gz.

File metadata

  • Download URL: the_loopy_one-13.2.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for the_loopy_one-13.2.0.tar.gz
Algorithm Hash digest
SHA256 0e087c247ad498b2de17a5d6833c925e660e94c71dd8b30f7cfba3a772aab754
MD5 5a8ce4f0aa67b4554d1c4d11e2b1fb25
BLAKE2b-256 bb3ca49de08564ae2fa3ec51b1ff6feade30ed35b735160e1a14d668f71eb766

See more details on using hashes here.

Provenance

The following attestation bundles were made for the_loopy_one-13.2.0.tar.gz:

Publisher: release.yml on MadaraUchiha-314/the-loop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file the_loopy_one-13.2.0-py3-none-any.whl.

File metadata

  • Download URL: the_loopy_one-13.2.0-py3-none-any.whl
  • Upload date:
  • Size: 675.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for the_loopy_one-13.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8bcf1f0a5cf2541c6130457aee44774fc3060171cc6b626ba81402117897dded
MD5 292cf35d2cc4c58ce5f2f41085b37588
BLAKE2b-256 e97e457da947994488de206913c54ca5562778d7bab05422596ccf01d5e9e932

See more details on using hashes here.

Provenance

The following attestation bundles were made for the_loopy_one-13.2.0-py3-none-any.whl:

Publisher: release.yml on MadaraUchiha-314/the-loop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

13.6.0

2 files

13.5.0

2 files

13.4.0

2 files

13.3.1

2 files

13.3.0

2 files

This release

13.2.0 This release

2 files

13.1.1

2 files

13.1.0

2 files

13.0.1

2 files

13.0.0

2 files

12.1.0

2 files

12.0.0

2 files

11.6.1

2 files

11.6.0

2 files

11.5.0

2 files

11.4.0

2 files

11.3.1

2 files

11.3.0

2 files

11.2.0

2 files

11.1.3

2 files

11.1.2

2 files

11.1.1

2 files

11.1.0

2 files

11.0.1

2 files

11.0.0

2 files

10.6.0

2 files

10.5.0

2 files

10.4.1

2 files

10.4.0

2 files

10.3.1

2 files

10.3.0

2 files

10.2.5

2 files

10.2.4

2 files

10.2.3

2 files

10.2.2

2 files

10.2.1

2 files

10.2.0

2 files

10.1.0

2 files

10.0.0

2 files

9.15.0

2 files

9.14.0

2 files

9.13.0

2 files

9.12.0

2 files

9.11.0

2 files

9.10.0

2 files

9.9.0

2 files

9.8.0

2 files

9.7.1

2 files

9.7.0

2 files

9.6.3

2 files

9.6.2

2 files

9.6.1

2 files

9.6.0

2 files

9.5.1

2 files

9.5.0

2 files

9.4.0

2 files

9.3.0

2 files

9.2.0

2 files

9.1.0

2 files

9.0.0

2 files

8.1.0

2 files

8.0.0

2 files

7.4.1

2 files

7.4.0

2 files

7.3.0

2 files

7.2.0

2 files

7.1.1

2 files

7.1.0

2 files

7.0.0

2 files

6.2.1

2 files

6.2.0

2 files

6.1.1

2 files

6.1.0

2 files

6.0.0

2 files

5.2.1

2 files

5.2.0

2 files

5.1.0

2 files

5.0.0

2 files

4.2.0

2 files

4.1.0

2 files

4.0.0

2 files

3.0.3

2 files

3.0.2

2 files

3.0.1

2 files

3.0.0

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.0.0

2 files

0.22.1

2 files

0.22.0

2 files

0.21.0

2 files

0.20.0

2 files

0.19.0

2 files

0.18.1

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page