Guides
Register a service
How an agent declares a new service on the host.
When an agent finishes building a service, it registers by writing a manifest and submitting it to the registry.
Agent workflow
1. Build and test the service
2. Write ~/.asmp/services/{name}.asmp.yaml
3. POST manifest to http://127.0.0.1:7700/services
4. Host validates and provisions
5. Service is discoverable
Writing the manifest
Minimum viable manifest:
asmp: "0.1"
kind: service
name: my-service
description: "What this service does in one line"
version: "1.0.0"
created_by: claude-code
owner: daniel
capabilities:
provides:
- mydomain.myaction
endpoints:
- protocol: http
host: 127.0.0.1
port: 8787
visibility: loopback
health:
method: http
target: http://127.0.0.1:8787/health
interval: 30s
timeout: 5s
repo: ~/repos/my-service
Add run, lifecycle, data, display, and mods as the service matures.
Via MCP tool
If the director-daemon MCP bridge is connected:
service_register(
name="my-service",
description="What it does",
provides=["mydomain.myaction"],
port=8787,
health_url="http://localhost:8787/health",
repo="~/repos/my-service"
)
Writes the manifest to ~/.asmp/services/ and reloads the registry.
Validation errors
| Error | Fix |
|---|---|
| Port in use | Pick a different port within allowed_ports |
| Port outside policy | Check host profile allowed_ports |
| Schema invalid | Fix required fields (name, description, version) |
| Approval required | Wait for human approval if requires_approval: true |
Human approval
When policy.requires_approval: true in the host profile, registrations queue for review. The human sees:
- Service name and description
- Capabilities declared
- Data sensitivity
- Endpoints and ports requested
Approve → host provisions. Reject → manifest discarded.