3Powers
The spec is the law. Agents execute. An independent judiciary determines whether the implementation complies with the spec.
3Powers is a portable, open agent harness with a judiciary — it drives your coding agents through the whole agentic lifecycle at high autonomy, then does the one thing a bare harness never does: it refuses to take their word for it. Agents do the building. An independent judiciary — an oracle that never saw the code, a deterministic gate suite, and a signed, tamper-evident ledger — proves that what shipped matches the spec you approved.
This package (3powers on PyPI) provides the 3pwr command: the native provider-agnostic executive, the deterministic gate runner, the oracle-independence checks, and the hash-chained, Ed25519-signed verdict ledger you can verify offline. It is model-, language-, and provider-agnostic, uses Git as its substrate, and needs no CI/CD platform.
Install
Install with uv — the package is published as 3powers, and the command it installs is 3pwr:
uv tool install 3powers # installs the `3pwr` command
Or run it once without installing:
uvx 3powers --help
Python 3.11+ is required.
Quickstart: the autonomous path
# 1. In YOUR project (new or existing), run the guided onboarding. It asks for the language,
# where to keep the signing key (always OUTSIDE the repo), and your default autonomy mode.
cd /path/to/your/project && 3pwr init
# 2. Describe what you want built, and let the lifecycle run:
3pwr run "add rate limiting to the login endpoint" --mode auto
3pwr run streams a live stage tracker and in auto mode stops only at the two human gates: approving the spec, and the final sign-off. Every step lands in the signed, offline-verifiable ledger, so a run is resumable and auditable.
The deterministic gates, ledger, and enforcement are pure 3pwr and need no agent at all — the gates-only path works fully offline. Every run emits one normalized verdict a human can read without opening a single agent transcript:
verdict FAIL spec=VUTIL tier=Standard adapter=typescript
✓ format · biome ✓ lint · biome ✓ types · tsc
✓ tests · vitest ✓ diff_coverage · 3pwr-covdiff (100.0% ≥ 80.0%)
✗ dependency_scan · osv-scanner
- GHSA-4x5r-pxfx-6jf8 in @babel/core
✓ secret_scan ✓ gate_gaming ✓ spec_conformance (5 requirements traced)
failures:
• vulnerable_dependency: GHSA-4x5r-pxfx-6jf8 in @babel/core
↳ ledger entry #0 signed by ed25519:4fd71c543b0f499c
Why: when one model does everything, validation is a mirror
Hand a capable agent a feature and it will happily write the spec, the code, the tests, and the review. They all agree, because they all came from the same mind. A passing build only proves the model agreed with itself. 3Powers calls this the separation-of-powers collapse, and restores three independent branches:
- ⚖️ Legislative — the spec is the law. Versioned, testable requirements every later stage answers to.
- 🛠️ Executive — agents build against it. They may write their own tests, but those never replace the independent check.
- 👩⚖️ Judicial — an independent judiciary decides. An oracle authored from the spec by a different model family, a deterministic gate suite, and a human sign-off.
The lifecycle runs in eight stages — Discovery → Spec → Plan → Build → Verify → Review → Ship → Observe — with a signed, hash-chained ledger recording every verdict and sign-off so the whole run is verifiable offline.
Documentation
Full guides live in the repository:
- Getting Started — prerequisites, install, and the whole thing end-to-end.
- Concepts — the three powers, the lifecycle, risk tiers, oracle independence, the trust spine.
- CLI Reference — every
3pwrcommand and flag. - Engine Architecture — the gates, the verdict, and the ledger.
- Glossary — every term of art, defined once.
- STATUS — implementation status, validated against the spec.
Repository: https://github.com/VerzCar/3powers
Contributing
Working on the engine itself? See CONTRIBUTING.md for the dev environment and the checks it must always pass (ruff + mypy + pytest, plus the engine gating its own code at the strictest tier).
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 3powers-1.4.0.tar.gz.
File metadata
- Download URL: 3powers-1.4.0.tar.gz
- Upload date:
- Size: 753.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec0adc52da3d1d25025518ce23feeed48a9bd809b60fd1134ecdd6b264541eba
|
|
| MD5 |
de03d3739d7c9275cf3dd3d1307f01b8
|
|
| BLAKE2b-256 |
a1ee10060c2161fb240081d1d5153140e74a2539eb8821511482902badbc0b34
|
Provenance
The following attestation bundles were made for 3powers-1.4.0.tar.gz:
Publisher:
release.yml on VerzCar/3powers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
3powers-1.4.0.tar.gz -
Subject digest:
ec0adc52da3d1d25025518ce23feeed48a9bd809b60fd1134ecdd6b264541eba - Sigstore transparency entry: 2333508738
- Sigstore integration time:
-
Permalink:
VerzCar/3powers@5d95cbb219cfc2201e5abbcfd6fd03bed73dfd7a -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/VerzCar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d95cbb219cfc2201e5abbcfd6fd03bed73dfd7a -
Trigger Event:
push
-
Statement type:
File details
Details for the file 3powers-1.4.0-py3-none-any.whl.
File metadata
- Download URL: 3powers-1.4.0-py3-none-any.whl
- Upload date:
- Size: 474.8 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 |
523e5a403428f0e242ad986be9f700fbc3f67d1c01602cfe9f7cfac420963959
|
|
| MD5 |
0105dc94f770849a41d87884d9806044
|
|
| BLAKE2b-256 |
12fd22a1adeee70493f6117cda8e216c75c707fc71f091a94b7832b441cd44e0
|
Provenance
The following attestation bundles were made for 3powers-1.4.0-py3-none-any.whl:
Publisher:
release.yml on VerzCar/3powers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
3powers-1.4.0-py3-none-any.whl -
Subject digest:
523e5a403428f0e242ad986be9f700fbc3f67d1c01602cfe9f7cfac420963959 - Sigstore transparency entry: 2333508753
- Sigstore integration time:
-
Permalink:
VerzCar/3powers@5d95cbb219cfc2201e5abbcfd6fd03bed73dfd7a -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/VerzCar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d95cbb219cfc2201e5abbcfd6fd03bed73dfd7a -
Trigger Event:
push
-
Statement type: