Agent Manifest Registry Specification¶
Overview¶
The agent manifest registry is the authoritative storage system for signed agent manifests. It provides versioning, lifecycle management, and distribution capabilities for agent systems.
Registry Structure¶
registry/
├── agents/
│ ├── researcher-01/
│ │ ├── v1.0.0.signed.json
│ │ ├── v1.1.0.signed.json
│ │ └── current -> v1.1.0.signed.json
│ └── orchestrator-01/
│ └── ...
├── keys/
│ ├── signing.pub
│ └── revoked.json
└── templates/
├── base-agent.toml
└── researcher.toml
Directory Layout¶
agents/: Per-agent directories containing all manifest versionskeys/: Cryptographic keys and revocation liststemplates/: Reusable manifest templates
Versioning¶
Each agent directory contains:
- Version files:
v{semver}.signed.json- Immutable signed manifests - Current pointer:
currentsymlink pointing to active version - Atomic updates: Symlink updates ensure consistency
Lifecycle Operations¶
Hot Reload¶
Replace a running agent's manifest without downtime:
sequenceDiagram
participant O as Operator
participant R as Registry
participant K as Kernel
participant A as Agent
O->>R: Publish new SignedManifest
O->>K: reload_manifest(agent_id)
K->>K: Verify signature
K->>K: Check capability inheritance
K->>A: Drain in-flight operations
A-->>K: Operations complete
K->>K: Atomically swap registry entry
K->>A: Resume with new manifest
Process:
- Publish new signed manifest to registry
- Trigger reload operation on kernel
- Verify signature and capability constraints
- Drain in-flight operations gracefully
- Atomically update registry pointer
- Resume agent with new manifest
Revocation¶
Immediately invalidate and terminate an agent:
sequenceDiagram
participant O as Operator
participant R as Registry
participant K as Kernel
O->>R: Add to revocation list
O->>K: revoke_agent(agent_id)
K->>K: Kill agent immediately
K->>K: Revoke all capabilities
K->>R: Remove current symlink
Process:
- Add agent ID to revocation list
- Send revocation command to kernel
- Immediately terminate agent process
- Revoke all granted capabilities
- Remove current symlink from registry
Rollback¶
Revert to a previous manifest version by atomically updating the current symlink to point to the target version file.
Storage Format¶
Signed Manifest File¶
Each version file contains a complete SignedManifest:
{
"manifest": {
"agent": { "id": "researcher-01", "name": "Research Agent" },
"runtime": { "module": "builtin:chat", "provider": "anthropic" },
"capabilities": { "tools": ["web_fetch"], "agent_spawn": false },
"metadata": { "issued_at": "2025-01-16T00:00:00Z" }
},
"signature": "a1b2c3d4...",
"verifying_key": "e5f6g7h8..."
}
Revocation List¶
The keys/revoked.json file tracks revoked agents and keys:
{
"agents": {
"compromised-agent-01": {
"reason": "Security breach detected",
"revoked_at": "2025-01-16T12:00:00Z"
}
},
"keys": [
"a1b2c3d4e5f6..."
]
}
Registry Operations¶
Publishing¶
Store a new manifest version by:
- Creating version-specific file:
v{semver}.signed.json - Atomically updating
currentsymlink - Ensuring directory structure exists
Discovery¶
Active manifests are identified by following current symlinks in agent directories.
Version History¶
All versions for an agent are stored as separate files, sorted by semantic version.
Rollback¶
Revert to previous version by updating the current symlink:
- Verify target version exists
- Remove current symlink
- Create new symlink to target version
Template System¶
Template Structure¶
Templates reduce duplication and enforce organizational standards:
# templates/base-agent.toml
[limits]
max_continuations = 3
max_tool_calls = 50
tool_timeout_secs = 60
[schedule]
mode = "reactive"
# templates/researcher.toml
_extends = "base-agent"
[runtime]
module = "builtin:chat"
provider = "anthropic"
[capabilities]
tools = ["web_fetch", "file_read"]
memory_read = ["self.*", "shared.*"]
Template Resolution¶
Templates are resolved before signing through:
- Loading base template if
_extendsfield present - Recursive resolution of template chains
- Deep merging of template hierarchy
- Removing template-specific fields from final manifest
Distribution and Synchronization¶
Multi-Node Synchronization¶
In distributed systems, registries must be synchronized:
- Push Model: Registry publishes changes to all nodes
- Pull Model: Nodes periodically fetch updates
- Gossip Model: Changes propagate through peer-to-peer gossip
Conflict Resolution¶
When multiple nodes modify the same agent:
- Last-writer-wins: Based on
issued_attimestamp - Version-based: Higher semantic version wins
- Manual resolution: Operator intervention required
Monitoring and Observability¶
Expiry Monitoring¶
Track manifests approaching expiration by:
- Scanning all
currentsymlinks in registry - Parsing
expires_attimestamps from manifests - Comparing against configurable threshold (e.g., 14 days)
- Generating alerts for expiring manifests
Audit Trail¶
Track all registry operations:
{
"timestamp": "2025-01-16T12:00:00Z",
"operation": "publish",
"agent_id": "researcher-01",
"version": "v1.1.0",
"operator": "admin@example.com",
"signature_valid": true
}
Security Considerations¶
Access Control¶
Registry operations require appropriate permissions:
- Read: List and retrieve manifests
- Write: Publish new versions
- Admin: Revoke agents and manage keys
Integrity Protection¶
- All manifest files are cryptographically signed
- Registry metadata is protected against tampering
- Audit logs are append-only and tamper-evident
Key Management¶
- Signing keys are stored securely (HSM, key vault)
- Verifying keys are distributed to all nodes
- Key rotation is supported with backward compatibility
API Specification¶
REST Endpoints¶
GET /agents # List all active agents
GET /agents/{id} # Get current manifest
GET /agents/{id}/versions # List all versions
GET /agents/{id}/versions/{v} # Get specific version
POST /agents/{id} # Publish new version
DELETE /agents/{id} # Revoke agent
POST /agents/{id}/rollback # Rollback to version
GET /keys/revoked # Get revocation list
POST /keys/revoked # Add to revocation list
Response Format¶
{
"agent_id": "researcher-01",
"current_version": "v1.1.0",
"status": "active",
"issued_at": "2025-01-16T00:00:00Z",
"expires_at": "2025-04-16T00:00:00Z",
"capabilities": {
"tools": ["web_fetch", "file_read"],
"agent_spawn": false
}
}
This registry specification provides the foundation for robust manifest management with versioning, lifecycle operations, and security guarantees.