| name | bos-service-discovery |
| description | Browse and call BOS URI services in the omostation workspace. Lists available domains, services, and transports. Use when an agent needs to find a service by domain, understand BOS URI routing, or resolve a URI for the first time. |
BOS Service Discovery - Domain Browsing and URI Resolution
Guide for discovering and calling BOS (Bus of Services) URIs. BOS is the domain-based service routing layer in agora (I0). Every service is identified by a bos://<domain>/<package>/<action> URI.
When To Use
- Agent needs to find a service but does not know the exact URI
- Agent wants to understand what domains are available
- Agent needs to register a new BOS service
- User says "what services are available" / "how do I call X" / "bos uri"
How BOS Routing Works
bos://<domain>/<package>/<action>
| | | |
| | | +-- What to do (search, mcp-server, audit, ...)
| | +-- Which package provides it (kos, omo, eidos, ...)
| +-- Which domain owns it (memory, governance, brain, compute, ...)
+-- Protocol prefix
Routing chain (9 steps, see docs/I0-AGORA-CALLCHAIN.md):
- Domain authorization (CR-RBAC-01)
- Rate limiter (20 QPS/domain)
- Circuit breaker
- Cache lookup
- BOSRouter prefix match (Trie, O(k))
- ProxyManager fallback
- POC_SERVICES registry lookup
- Transport execution (stdio / mcp_proxy / http)
- L0 audit hook (mof_agora_hook)
Discovery Commands
List All Domains
uv run --project projects/cockpit cockpit bos capability --list-domains
uv run --project projects/agora agora bos domains --json
List Services in a Domain
uv run --project projects/cockpit cockpit bos capability --domain memory
cat projects/agora/etc/bos-services.yaml | grep -A10 "domain: memory"
Get Service Schema
uv run --project projects/cockpit cockpit bos schema "bos://memory/kos/search"
Resolve a URI (Execute)
uv run --project projects/cockpit cockpit bos resolve "bos://memory/kos/search" \
--args '{"query": "test"}'
uv run --project projects/agora agora bos resolve "bos://memory/kos/search" \
--args '{"query": "test"}'
Known BOS Domains
| Domain | Owner | Key Services | Transport |
|---|
memory | kairon | KOS search, Eidos MCP, Ontoderive MCP | stdio, mcp_proxy |
governance | omo | OMO audit, state sync, governance evolution | http, stdio |
brain | agora | Knowledge cards, event publishing | http |
compute | aetherforge | Local LLM inference (AetherForge + omlxc) | http |
Full registry: projects/agora/etc/bos-services.yaml
Domain routing rules: ARCHITECTURE.md section 4
Registering a New BOS Service
If the agent provides a service others should discover:
1. Add to bos-services.yaml
services:
- uri: bos://<domain>/<package>/<action>
domain: <domain>
package: <package>
action: <action>
transport: stdio
command:
- uv
- run
- --directory
- projects/<project>
- python
- -m
- <module>
- <action>
description: "<what this service does>"
status: active
2. Validate the Contract
uv --directory projects/ecos run mof-contract-lint \
--bos-yaml projects/agora/etc/bos-services.yaml
3. Verify Registration
uv run --project projects/cockpit cockpit bos capability --domain <domain>
Middleware Status
Check rate limiting, circuit breaker, and cache health:
uv run --project projects/cockpit cockpit bos middleware-status
Common Patterns
Pattern 1: Search the knowledge graph
result = await resolve_bos_uri(
uri="bos://memory/kos/search",
arguments={"query": "agent workflow governance"}
)
Pattern 2: Publish a brain event
result = await mutate_resource(
uri="bos://brain/events/card_updated",
payload={"card_id": "abc123", "content": "..."},
action="update"
)
Pattern 3: Trigger governance audit
result = await resolve_bos_uri(
uri="bos://governance/omo/audit",
arguments={"scope": "full"}
)
Related
- Skills:
agent-onboarding, a2a-coordination, bos-contract-fix
- SSOT:
projects/agora/etc/bos-services.yaml
- Callchain:
docs/I0-AGORA-CALLCHAIN.md
- Architecture:
ARCHITECTURE.md section 4 (BOS domain routing)
- Cockpit:
uv run --project projects/cockpit cockpit bos --help