Skip to main content

Project Loop Harness

Turn a coding agent's “done” into reviewable evidence, residual risk, and a resumable next step.

Project Loop Harness completion dashboard

Understand it in 30 seconds

Coding agents can produce changes quickly. They are less reliable at preserving project state, proving completion, stopping at human decisions, and handing work to another session or model.

Project Loop Harness (pcl) gives Codex, Claude Code, and similar agents one local, model-neutral loop:

intent → bounded work → checks → copied evidence → completion packet → next step
  • SQLite keeps current state; JSONL keeps an auditable event projection.
  • Tests, artifacts, reviews, and completion packets preserve what “done” means.
  • Agents continue routine safe work; humans decide product, permission, security, destructive, and external-service questions.
  • The runtime does not call an LLM or depend on one agent vendor.

It is for people coordinating coding agents, not another chat wrapper.

Get first value in five minutes

Install the runtime with either tool:

pipx install project-loop-harness
# or: uv tool install project-loop-harness

Inspect the adoption plan before writing anything, then initialize:

cd /path/to/your-project
pcl init --dry-run --json
pcl init
pcl doctor --strict

pcl init detects common Python and Node project metadata and safe verification commands. It retains existing AGENTS.md, CLAUDE.md, .gitignore, and pcl.yaml content. --force may replace generated templates, but it does not replace existing project-instruction content.

Now tell the coding agent the outcome—not a sequence of pcl commands:

Read AGENTS.md, CLAUDE.md if present, and pcl.yaml. Use the Project Control
Loop. Start this goal: <describe the outcome>. Continue every agent-safe next
action, run the configured checks, preserve evidence, emit a completion packet,
and close the goal. Do not ask me to run routine pcl commands. Stop only for a
genuine human decision or external blocker.

The agent owns pcl start → implementation → finish → close. The operator uses the CLI for setup, review, and deliberate maintenance.

Want to see the result before adopting it? Run the isolated 3-minute public-package demo.

What the operator needs to remember

Moment Command Purpose
Adopt pcl init --dry-run --json, then pcl init Inspect and install local policy/state
Start pcl start "<outcome>" or --task T-XXXX / --goal G-XXXX Create minimal active work or attach without duplicates
Orient pcl next --json or pcl resume Continue or hand off safely
Stop stagnation (opt-in) pcl progress guard activate ... Stop repeated zero-value automatic continuation at one Exit Gate
Verify pcl finish --emit-packet --goal G-XXXX Rerun checks and pin evidence
Review pcl render Generate the human dashboard

Most other commands are an agent-facing and maintainer-facing reference surface. Start with the five moments above.

What it is—and is not

Skill          = instructions for agents
pcl CLI        = guarded local runtime and state machine
project.db     = current normalized loop memory
events.jsonl   = derived append-only audit projection
dashboard.html = generated human view, never machine state
Plugin / MCP   = optional integration wrappers, never the runtime

Project Loop Harness is local-only by default. Initialization enables no telemetry, cloud sync, provider call, production access, or automatic GitHub write. It is not a hosted orchestration service, a sandbox, or proof that an agent understood the code.

Agents must not edit .project-loop/project.db, .project-loop/events.jsonl, or generated dashboard HTML. State mutations go through pcl; machine context comes from JSON commands, evidence paths, reports, or dashboard-data.json.

The protected and internal compatibility surfaces are documented in the Alpha Stability Policy.

Install and inspect in more detail

Use a project virtual environment instead of a global tool install when that is the repository convention:

python -m pip install project-loop-harness
python -m pcl --version

For unreleased work, pin a tag or commit:

pipx install "git+https://github.com/mocchalera/project-loop-harness.git@<tag-or-commit>"

After initialization:

pcl validate --strict
pcl render --json
pcl update check       # explicit, cached, advisory only

Use pcl update command to print the appropriate manual upgrade command. Set PCL_NO_VERSION_CHECK=1 to disable version checks.

The proof boundary

A release, download, clone, dashboard, or passing internal demo is output evidence—not adoption evidence. External adoption is judged only by observed first use in real repositories: time to healthy setup, time to a verified completion packet, maintainer interventions, safety violations, and voluntary reuse.

As of v0.6.0, no version-current external cohort result has been recorded, so the project does not claim external adoption. The v0.5.2 Adoption Proof remains available as a historical study contract, not as current work or a successful outcome.

Documentation

Advanced contracts stay in docs/: completion packets, evidence sets, completion policy, Harness Gap Reports, context packs, code context, workflow execution, Council Profile, trace/resume, reports, migrations, and dashboard data.

Local development

python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check .
pytest
PYTHONPATH=src python -m pcl --help

When working in a linked worktree, prefer PYTHONPATH=src python -m pcl or a worktree-local virtual environment instead of repointing a shared executable.

Before release, verify both install artifacts:

python -m build --outdir /tmp/pcl-release-dist --sdist --wheel
python scripts/verify_sdist_contracts.py --dist-dir /tmp/pcl-release-dist
pytest tests/test_distribution.py

Safety and current scope

The first production milestone deliberately excludes:

  • hosted backends and cloud synchronization;
  • production database access;
  • autonomous destructive operations;
  • automatic external notifications or repository writes;
  • telemetry collection;
  • dynamic workflows before static contracts are stable.

The current release is alpha software. Prefer pinned versions for team use, inspect the dry-run plan, keep human gates human, and preserve evidence for every terminal claim.

Metadata

Release files for project-loop-harness 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for project-loop-harness 0.6.0
File Size Uploaded Provenance
project_loop_harness-0.6.0.tar.gz 2.1 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for project-loop-harness 0.6.0
File Interpreter ABI Platform
project_loop_harness-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.0 MB

Release files / project_loop_harness-0.6.0.tar.gz

Download URL project_loop_harness-0.6.0.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
57232c8668540fbe511e7b29f68341381e7851591af82c5ec6f8750d431b7913
BLAKE2b-256 checksum
How to use checksums
d86112e88d1498513912f7cb877ef5641eb13e085089523762208639214c26e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / project_loop_harness-0.6.0-py3-none-any.whl

Download URL project_loop_harness-0.6.0-py3-none-any.whl
Size 879.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4857355d108f720feb93497dc17ae53bb9b7502f4549a0f26c1a97cfa655137d
BLAKE2b-256 checksum
How to use checksums
725774c41e09e8c3c6c223cef2452dc848969ba8b7dfcc192ab0766a2e9f8029
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Security for project-loop-harness 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for project_loop_harness-0.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files Full provenance

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