Fabric Agent Contract says what makes any agent Fabric-compatible: the schemas, profiles (MCP, A2A, local runner) and conformance rules every provider is admitted by. Fabric is PassionCode.ai's product, the CEO AI agent: it chooses, binds and runs the agents that do the work, and this contract is the boundary they cross — work, evidence, capabilities, admission and authority pass through explicit interfaces instead of one vendor's session format. The contract is storage-agnostic and stands on its own: any host or agent can implement it, and the Fabric Agent Adapter is the kit that does it for an agent.
Status: contract 0.1.0. What ships: the JSON Schemas, the fixtures, the conformance checker
(pnpm run check: schemas, semantic rules, documents), the pin:check CLI that reports a consumer's
contract pin, and reference verifiers that consumers copy or port and test against this repository's
vectors — src/delegation.ts, src/grant-projection.ts, src/fabric-links.ts, src/operator-session.ts,
src/session-handoff.ts, src/secret-shape.ts (the one credential detector), src/package-rules.ts (the package digest, folder check and signature verifier), src/estate-record-rules.ts with
src/webauthn.ts (the estate record's digest, chain and offline passkey-assertion verifier), src/relay.ts (relay
admission, blob requests and message bodies), src/secret-envelope.ts (the HPKE secret envelope), src/relay-vectors.ts
(the framework-free runner of the relay's shared vectors, DEC-0066), src/p256.ts signEs256/toLowS (the low-S
ES256 rule, DEC-0066) and
src/http-signature.ts (the device request signature's signer and receiver, DEC-0056), src/hub-key-rules.ts (whether the
estate record certifies a delegation key, DEC-0060) src/revocation-delta.ts (the revocation delta, the heartbeat
and the 72-hour rule, DEC-0054), src/window-lease.ts (window leases, DEC-0062), src/signing-challenges.ts (the
signing register and its verifier, DEC-0063) src/openrouter-attribution.ts (OpenRouter attribution headers, DEC-0065) src/protocol-revisions.ts (protocol revisions, N and N−1, DEC-0067) src/session-join.ts (one writer per session, DEC-0068) src/app-descriptor.ts (an app's own descriptor, DEC-0069) and src/feed-data.ts (no secret in a feed event's data, DEC-0070). What does not ship: a runtime, a provider implementation, a model router,
a published package, or an SDK with a stability promise beyond the pinned commit (DEC-0016).
- Contract overview
- Create or connect a compatible agent
- MCP, A2A and local-runner profiles — where a stdio server is declared, and no secret in a command line (DEC-0044)
- Registry, admission and binding
- Coordination and Git integration
- Execution contexts and account pools
- Memory, retrospectives and learning
mcp-memory-servicereference adapter- Governance and roles
- Services and their dashboards — local and online, on macOS, Linux and Windows (
fabric-service/0.1, DEC-0057 for one copy under every supervisor) - Embedded dashboard — width, navigation, scrolling and themes inside a host (
fabric-dashboard/0.1) - Project communication — agents exchange information and requests (
fabric-project-comms/0.1) - Operator channel — an agent's notifications and decisions in a messenger (
fabric-operator-channel/0.1) - Calling agents: capabilities, jobs, trace, the hub (
fabric-interop/0.1) - Spend policy and grants with amounts — agents check a record instead of asking (DEC-0037, DEC-0038)
- Conformance — profiles, the semantic-rule register and who checks what
- Identifiers — when two identifiers are the same: the normal form writers emit and readers compare (DEC-0076)
- Results and evidence — claims, proof and what was not verified
- Delegation — who acts for whom: the hub's signed token, the callee's offline check,
approval/1and one set of refusal codes (fabric-delegation/0.1) - Fabric's button in a product and
fabric://links (DEC-0040) - Session handoff — the folder a host hands a coding-agent session (
session-handoff/1, DEC-0042) - Capability names and product tool underscores (DEC-0020)
- Activity telemetry — sessions, usage, summaries and access logs (
fabric-activity/0.1) - Devices — enrollment, signed policy, check-in, health and the request signature beside mutual TLS (
fabric-device/0.1) - Relay — admission by device key, store-and-forward messages, trust tiers from the signed sender and the HPKE secret envelope (
fabric-relay/0.1,fabric-secret-envelope/1, DEC-0047) - The revocation delta and the heartbeat — revocations within seconds, a signed commitment to them, and the 72-hour rule (
revocation-delta/1,heartbeat/1, DEC-0054) - Window leases — a hub-signed share of an estate window per machine, spent offline and closed at expiry (
window-lease/1, DEC-0062) - Signing — the dedicated signing RP, the ceremony and the register of passkey-signed statements (DEC-0063)
- The local channel to the node —
fabric-local-channel/0.1(DEC-0075) - Proposals and learning notes —
fabric-proposal/1,learning-note/1(DEC-0072) - OpenRouter attribution — the organization's products as apps on OpenRouter (DEC-0065)
- Packages — one version of an agent or a skill set: its digest, its publisher's signature, an organization's countersignature and
agentRef(fabric-package/1, DEC-0050, DEC-0051) - Contexts —
personalandorg:<orgId>: a grant's context, one agent instance per context on a machine, routing by context and a grant's daily usage (DEC-0082) - The estate record — one person's machines, keys, placed agents, secret placements and share grants, revision by revision, signed by their passkey (
estate-record/1, DEC-0055) - Agents that are not services (
fabric-provider/0.1) - The runner catalogue of installed coding agents
- Pipelines and their compatibility rules (
pipeline/0.1) - Full estate reference scenario
- JSON Schemas
- Author and operator UX scenarios
- Multi-agent repository wiring
- Acceptance evidence
The initial contract brief and Memory Kernel brief own their run scope, DECISIONS.md owns accepted choices, and DOCMAP.md owns propagation rules.
The repository is public; clone it, or get it with every other repository through org-index
scripts/clone_all.sh. Node.js 20+ and pnpm
(the version in package.json → packageManager):
gh repo clone passioncode-ai/fabric-agent-contract
cd fabric-agent-contract
pnpm install --frozen-lockfileNothing: no account, no key, no environment variable. The contract is documents, JSON Schemas, fixtures and the checker that validates them.
None, and none is planned: the contract serves no MCP tools. It is the specification an MCP
surface is checked against — the MCP profile in
profiles and the tool rules of
fabric-interop/0.1. To drive a real MCP surface built on it,
use the Fabric Agent Adapter quick
start: its sample service is called from a real client, and its check_service.py probe checks
a live service against these rules.
pnpm run checkThe gate typechecks the harness, compiles all Draft 2020-12 schemas, runs every
positive/negative fixture case in fixtures/catalogue.json
plus the semantic rules and the pipeline checker, validates UX traces, resolves
relative links (a link inside a fenced code block is text and is not resolved; a fence never closed and a malformed percent escape are findings), parses Mermaid source, checks contract-version consistency, extension
key spelling and glossary profile names, and lints Markdown. Start in
AGENTS.md; the decisions are in DECISIONS.md.
A consuming repository checks that it names one contract revision with
pnpm pin:check <its checkout> (one contract pin).
Shape conformance is not admission. A host must also negotiate the declared protocol revision, run safe semantic probes and issue a separate immutable admission decision before a project binding can grant access.
Open source under the GNU AGPL-3.0. A commercial license is
available for use that does not meet the AGPL's terms — passioncode.ai/business.
Earlier commits carried no licence: the repository was private and unlicensed
(design), and the contract has
no vX.Y.Z release.
Whether the schemas should carry a permissive exception so any host can implement them is open
for the operator as CO-KB-02 in the knowledge base's
licensing.
Contributions are accepted under CLA.md.