Autonomous OSS-repo health for solo maintainers (Python port of @p-vbordei/agent-fleet)
Project description
agent-fleet (Python)
Idiomatic Python port of
@p-vbordei/agent-fleet(on npm as@p-vbordei/agent-fleetv0.1.3). Autonomous OSS-repo health for solo maintainers — one config, one cron, N repos kept reviewed and dep-current. The CLI drives an Anthropic loop through a strictgh-only command allowlist (sandbox) gated by a C3 single-issue interlock. 78 tests — the most of any port in the family — cover config validation, enroll, sandbox, the tick loop, and S1/S3/S5/S6 security invariants.
What's in the box
agent-fleet enroll <name>— bootstrap one repo with the five-filetypescript-buntemplate kit plus a.release-please-manifest.jsonseeded from the target'spackage.json.agent-fleet tick [<name>]— single Anthropic-loop iteration against one or every fleet entry; opens at most one summary issue per repo.agent-fleet(no args) — usage hint; exits64.- Strict
fleet.yamlschema (Pydantic-grade validation in pure Python). - Sandbox:
gh-only allowlist with a forbidden-prefix table for mutating subcommands, enforced before every shell call. - DI-friendly:
AnthropicClientandExecFnare injectable — no network or realghin CI.
Install
pip install agent-fleet
Quickstart
# Configure one repo:
cat > fleet.yaml <<'EOF'
fleet:
- name: agent-id
repo: yourname/agent-id
path: ../agent-id
template: typescript-bun
EOF
# Bootstrap the five-file kit + release-please manifest:
agent-fleet enroll agent-id
# enrolled agent-id: 6 files written
# Run one tick (reads ANTHROPIC_API_KEY from env, calls real gh):
ANTHROPIC_API_KEY=sk-ant-... agent-fleet tick agent-id
# tick agent-id: issue-created https://github.com/yourname/agent-id/issues/42
Library use with no network — both Anthropic and gh are stubbed — see examples/quickstart.py:
python examples/quickstart.py
# tick agent-id: issue-created https://github.com/yourname/agent-id/issues/123
How it relates
| Repo | Role |
|---|---|
agent-fleet |
TypeScript reference (npm @p-vbordei/agent-fleet) — source of truth. |
agent-fleet-py |
Python port (this repo). |
agent-fleet-rs |
Rust port. |
Conformance + Security
The 78-test suite covers every clause in SPEC.md:
- C1 — enroll idempotency: second run produces a byte-identical tree.
- C2 — enroll bounded write set: only the five template files (+ release-please manifest) are touched.
- C3 — tick at-most-one issue: the loop refuses a second
gh issue createin the same run. - C4 — tick read-only on code: forbidden-prefix table rejects mutating
gh pr/issue/release/repo/workflow/secret/variable/labelsubcommands. - C5 —
fleet.yamlstrict schema: missing fields, extras, empty list, bad name/template all fail fast. - S1/S6 — secrets never appear in rendered prompts or sandbox rejection reasons.
- S3 — sandbox rejects shell metacharacters (
|&;\$<>(){}\`) before any allowlist check. - S5 —
enrollmakes zero network calls (templates are vendored).
uv sync --extra dev
uv run pytest -v
# 78 passed
See the TS reference's conformance suite for the canonical fixtures.
Architecture
See docs/architecture.md.
Development
git clone https://github.com/p-vbordei/agent-fleet-py
cd agent-fleet-py
uv sync --extra dev
uv run pytest -v
License
Apache-2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
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 kindred_agent_fleet-0.1.0.tar.gz.
File metadata
- Download URL: kindred_agent_fleet-0.1.0.tar.gz
- Upload date:
- Size: 85.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6636bc4abc72cdcf168ec15d1b877830dcd3f8f2cd518e3130b36db62fdb327
|
|
| MD5 |
c87b5a44083fd4b3e61396e556e78354
|
|
| BLAKE2b-256 |
e7670ccb06db8f34f33de29e613b9ef86d21dd5cfcd7d2f4e81371a915df796d
|
Provenance
The following attestation bundles were made for kindred_agent_fleet-0.1.0.tar.gz:
Publisher:
publish.yml on p-vbordei/agent-fleet-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kindred_agent_fleet-0.1.0.tar.gz -
Subject digest:
c6636bc4abc72cdcf168ec15d1b877830dcd3f8f2cd518e3130b36db62fdb327 - Sigstore transparency entry: 1579440574
- Sigstore integration time:
-
Permalink:
p-vbordei/agent-fleet-py@96f20c45f274b7d02cd481dc31e4f5ea98a02847 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/p-vbordei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@96f20c45f274b7d02cd481dc31e4f5ea98a02847 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file kindred_agent_fleet-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kindred_agent_fleet-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32c780caa5304e75f21e57984a5992b2f331037088456db9c6686b5e404e981d
|
|
| MD5 |
6dee943c30c2b72ac82b7e4d26325fe5
|
|
| BLAKE2b-256 |
5fcc88bd657dc875a8d760f647b082b9799e136907d5a208f2f74b6fc14bcf10
|
Provenance
The following attestation bundles were made for kindred_agent_fleet-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on p-vbordei/agent-fleet-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kindred_agent_fleet-0.1.0-py3-none-any.whl -
Subject digest:
32c780caa5304e75f21e57984a5992b2f331037088456db9c6686b5e404e981d - Sigstore transparency entry: 1579440752
- Sigstore integration time:
-
Permalink:
p-vbordei/agent-fleet-py@96f20c45f274b7d02cd481dc31e4f5ea98a02847 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/p-vbordei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@96f20c45f274b7d02cd481dc31e4f5ea98a02847 -
Trigger Event:
workflow_dispatch
-
Statement type: