myFleet is a toolkit of agent-fleet machinery: agent skills, charters, and behavior policies from a working multi-agent setup, plus the harness-sync engine that projects them into eleven coding-agent checkouts — Claude, Codex, Gemini, Cursor, Factory droids, OpenCode, Kilo, Kimi, Antigravity, Vix, and ZCode. It is generalized from a production multi-agent workspace, where every piece is in daily use.
The problem it addresses is familiar to anyone running more than one agent harness: the same instructions, skills, and settings get maintained N times in N tools' private formats, and drift quietly. myFleet keeps one canonical copy of each artifact and treats every harness copy as generated. Policies are written as citable rule IDs (- **ID** — proposition) so a skill, charter, or review can reference a rule instead of restating it. Work lands through a review gate, not direct pushes. The content directories are data; the fleet package is the engine that moves the data.
Repository tour
| Path | Contents |
|---|---|
skills/ |
46 agent skills in four families — lifecycle verbs (000–111), build-*, use-*, and craft. See docs/skills.md |
agents/ |
11 agent charters, the shared base commitments, and a MANIFEST navigation snapshot. See docs/agents.md |
policies/ |
29 rule documents plus the permissions.yaml shorthand, all in a stable ID grammar. See docs/policies.md |
settings/ |
Shared configuration fragments, including the canonical MCP registry (mcp.jsonc) |
fleet/ |
The Python package: sync engine, pollers, session analytics, and CLIs |
docs/ |
The documentation hub — docs/index.md |
Quickstart
Python 3.13+ is the only runtime requirement. The engine is checkout-first by design: the sync engine projects this repository's skills/, policies/, and agents/ trees into your harnesses, so it runs from a clone rather than a site-packages install. (A PyPI release of the wheel is planned; the memory and analytics CLIs are the install-independent subset.)
git clone https://gitlab.com/doering-ai/libs/fleet.git && cd fleet
uv sync --all-extras
uv run sync-agents -n # read-only preview of every projection
uv run sync-agents --check # report drift between sources and generated consumers
uv run sync-policies -n # preview the permissions projection
Run the same commands without the uv run prefix once the environment is active. Applying is idempotent: symlinks already pointing at the right target are left alone, hook registrations de-duplicate, and unrelated keys in harness settings survive untouched.
The fleet package
Six console scripts cover the engine's jobs; two background pollers keep shared state fresh.
| CLI | Purpose |
|---|---|
sync-agents |
Project instructions, skills, charters, hooks, and MCP config into the supported harnesses — docs/sync-agents.md |
sync-policies |
Expand policies/permissions.yaml into a harness settings permission list |
agent-memory-index |
Concurrency-safe maintenance of per-agent MEMORY.md indexes — docs/memory.md |
fleet-memory-mcp |
FastMCP stdio server exposing the memory store to stateless agents |
agentlog |
Session-lifecycle analytics across harness surfaces — docs/agentlog.md |
ai-home |
Resolve $AI_HOME (default ~/ai), the agent-owned working-state home |
The pollers are plain scripts meant to run under a systemd user timer: the bulletin poller snapshots and cross-checks the shared agent bulletin (docs/bulletin.md), and the memory poller commits new agent-memory files to the default branch (docs/memory.md).
Design notes
- Data is not code.
skills/,agents/,policies/, andsettings/are plain files a human can read and diff; the package only moves and renders them. Generated consumers are never sources. - Dependency discipline. The ported modules stay stdlib-plus-pydantic by design, so they run inside externally-managed environments. Shared utilities come from my-basis where it clearly helps, and nothing depends on a private package.
- Preview, then idempotent apply. Every projection has a dry-run; applying twice changes nothing.
- Hooks are boring. Hook scripts are pure-stdlib programs that speak JSON over stdio; only the per-harness registration format differs.
- Rules are citable. Policies use stable ID anchors with nested scope, so agents can be pointed at a rule instead of a wall of prose.
Roadmap
agent-worktree— per-agent git worktree isolation with a review-gated merge path. The policies describe the workflow today; the CLI has not been generalized yet.agentviz— interactive dashboards over theagentlogdata.- Tracker sync — reconcile a local task mirror with a hosted tracker; the
use-planeskill documents the working method.
Provenance and sanitization
The contents are generalized from a production multi-agent workspace, and publication means the private provenance stays out. That is enforced, not promised: scripts/check_sanitized.py scans every tracked file in CI for known private patterns — names, hosts, home paths, vault references, ID fragments — and fails the pipeline on any genuine hit. The carve-outs are few and documented in the script: forge URLs in this repository's own namespace, secret-store product documentation in the auth skill, and the engine's own harness identifiers.
Contributing and license
GitLab is the development forge; report issues and propose changes at the GitLab project. Changes pass the same sanitizer and pipeline as everything else.
Licensed under MPL-2.0.
Metadata
Release files for my-fleet 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| my_fleet-0.1.0.tar.gz | 238.4 kB | Without provenance | Details for my_fleet-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| my_fleet-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for my_fleet-0.1.0-py3-none-any.whl |
Total release size: 409.6 kB
Release files / my_fleet-0.1.0.tar.gz
| Download URL | my_fleet-0.1.0.tar.gz |
|---|---|
| Size | 238.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
75943a792e762eda27c454f73d9cb517bceddd45b7fc5db5bfe7b667799bd5e2
|
|
BLAKE2b-256 checksum How to use checksums |
77b5f465131204890614e594818ea54c9b94a6d86b1dd0c19c0576845a61fd33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / my_fleet-0.1.0-py3-none-any.whl
| Download URL | my_fleet-0.1.0-py3-none-any.whl |
|---|---|
| Size | 171.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
92bcc13b9df8d447b048442499443267e8a46070b1d273299d517ae75680cdd5
|
|
BLAKE2b-256 checksum How to use checksums |
5b3dc87cf3482d9474971cb2bee43f22f805b8584bf4409fc5e822cf1c10ace7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for my-fleet 0.1.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.