Ask your AI. It checks the list.
"What handles email around here?"
One gap found → one breadcrumb → every agent after wins.
Same gap. Every session. Registry never learns.
One agent pays once. Every agent after inherits the find.
Painful find
Free lookups
List grows
~/.asmp/ and a registry on :7700.
# bootstrap ASMP on this machine curl -fsSL https://raw.githubusercontent.com/agent-service-manifest-protocol/agentservicemanifest.io/main/scripts/bootstrap-asmp.sh | bash MCP · tools. A2A · agents. ASMP · what's on this machine.
Device capabilities and registry policy.
One YAML per service, written by the builder.
:7700 — discover, register, extend.
Three protocols. Three questions.
One YAML file at a fixed path: hardware, capabilities, where manifests live, and who gets to register services.
~/.asmp/host.yaml — personal scope/etc/hmp/host.yaml — system scopeasmp: "0.1" kind: host host_id: "daniels-macbook-2026" device_class: personal_compute os: name: macOS version: "15.3.1" arch: arm64 hardware: cores: 12 ram_gb: 36 gpu: "Apple M4 Pro" capabilities: - files.local - email.local - calendar.local - networking - containers - gpu.inference registry: path: ~/.asmp/services/ api: http://127.0.0.1:7700 policy: agent_can_register: true requires_approval: false max_services: 100 allowed_ports: "7000-9999" data_sensitivity_default: medium # written by the agent that built it asmp: "0.1" kind: service identity: name: inbox-triage author: "agent://reeves/mail" version: "1.2.0" runtime: exec: "python -m inbox_triage" restart: on-failure network: port: 7821 bind: 127.0.0.1 capabilities: - email.local - files.local mods: - name: spam-scorer author: "agent://eidos/filter" observability: log_dir: ~/.asmp/logs/inbox-triage display: label: "Inbox Triage" icon: mail
Each file in ~/.asmp/services/. Short on purpose — enough to wire ports and restarts, not
enough to fill a wiki.
HTTP on 127.0.0.1:7700 only. List services, search by capability, attach mods, remove
cleanly. Nothing past localhost.
Ask the registry. Move on.
Vague question in the terminal — "use whatever handles email."
GET /capabilities?provides=email.local on :7700.
Registry returns manifests — names, ports, capabilities.
Agent calls the right service. No port lottery.
Same inventory. No rediscovery. ~250ms, not ~45s.
Whoever builds the service declares it. The inventory outlives the session.
Tied to a device — your Mac, your homelab, your box.
launchd, systemd, Docker, k8s — ASMP is the input, not the runner.
Tools above, agents beside, inventory underneath.
Every field does a job. No manifest the size of a novel.
Services can be extended by agents that didn't build them.
Formalize the manifest schema for validation and tooling.
The registration API server in Python, bound to localhost.
Convert 35+ existing services to ASMP manifests.
Extract as a framework-agnostic, open-source package.
Auto-generate MCP tool manifests from ASMP service capabilities.