The coordination layer: graph-aware conflict detection, work claiming, and role contracts over a tropo knowledge graph.
Project description
vivary-exo
Status: working (coordination + graph-native claims). The optional, outermost layer. Current release: 0.2.2, including claim-write hardening for symlinked, out-of-workspace, and hard-linked work item files.
The coordination layer — the exosphere. Engaged only when one agent becomes
many. exo does not run agents (that's the harness / the loops skill) — it reasons
about coordination over the shared tropo graph and hands workers their role
contracts. It reads the graph in-process (one graph, no fork) and has one narrow writer:
exo claim, which only updates an opt-in assignee field on work items under
changes/.
Most workspaces never need this. Single-agent workspaces stop at tropo + strato.
Commands
python exo.py conflicts --root <workspace> # who would collide
python exo.py board --root <workspace> # what's in flight
python exo.py claim local-ci-baseline --agent connie --root <workspace>
python exo.py roles # the bounded worker contracts
conflicts— amongactivework items (changes withstatus: active), flags pairs that share an outbound target (two in-flight changes touching the same module / verification / gate). The graph's collision signal — the coordination hazard a task list can't show.board— work items grouped bystatus(and@assigneeif the workspace declares one). The "what's in flight" surface.claim <id> --agent <handle>— claim a work item underchanges/by setting top-levelassignee. Agent handles may have an optional leading@and then letters, digits,.,_, or-; the stored value omits the leading@. BOM-prefixed frontmatter is updated in place, and malformed frontmatter is rejected instead of guessed through. Claim writes refuse symlinked or out-of-workspace work item files and replace the workspace file instead of truncating hard-linked targets.roles— strato's role grammar as bounded contracts: Orchestrator · Scout · Researcher · Builder · Verifier · Reviewer · Archivist. Workers get a bounded contract; they never become product owners.
To enable claims, opt into the coordination field:
packs = ["repo-graph", "coordination"]
Then:
exo claim local-ci-baseline --agent connie
exo board
exo conflicts
tropo check
Design
- Reuses tropo in-process (like ozone) — no second state store, no new schema.
- Coordination state is graph-native:
statusmarks in-flight work andassigneerecords ownership when the workspace opts intopacks = ["coordination"]. Becausetropo checkis strict, exo refuses to write undeclared fields.
Requirements
Python 3.11+. Loads the sibling packages/tropo/tropo.py engine in-process (no pip
install needed in the repo); packaged builds depend on the tropo package.
Website & docs: https://vivary.vercel.app/
Project details
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 vivary_exo-0.2.2.tar.gz.
File metadata
- Download URL: vivary_exo-0.2.2.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee19ff9eafbfb009469eff1843a38e1172d712838c79253ed6bc0a4a60893730
|
|
| MD5 |
b344da1b0d78e6094c239877ceddd68a
|
|
| BLAKE2b-256 |
b9872775b1298d0344c07caec6b360f7b5f28d2ee81bea57686d00b20881e767
|
File details
Details for the file vivary_exo-0.2.2-py3-none-any.whl.
File metadata
- Download URL: vivary_exo-0.2.2-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0af625e194578ad937afc24a4795fa79ffb676111b63199e5101a5bfcd715ca3
|
|
| MD5 |
bcb2107eb98b45e19f5e6532207d8371
|
|
| BLAKE2b-256 |
c26801860f30ca4beaa1c0db00af079041b35ed9877d0d870bb9ce45acbccec6
|