diff --git a/src/data/docsNav.ts b/src/data/docsNav.ts index 036560e..75fbae9 100644 --- a/src/data/docsNav.ts +++ b/src/data/docsNav.ts @@ -37,9 +37,7 @@ export const docsNav: NavItem[] = [ icon: '' }, { label: 'Gateway', href: '/docs/gateway', slug: 'gateway', icon: '' }, - { label: 'Tags & Discovery', href: '/docs/tags', slug: 'tags', - icon: '' }, - { label: 'Service Agents', href: '/docs/service-agents', slug: 'service-agents', +{ label: 'Service Agents', href: '/docs/service-agents', slug: 'service-agents', icon: '' }, { label: 'App Store', href: '/docs/app-store', slug: 'app-store', icon: '' }, diff --git a/src/pages/docs/tags.astro b/src/pages/docs/tags.astro deleted file mode 100644 index 7b45d26..0000000 --- a/src/pages/docs/tags.astro +++ /dev/null @@ -1,132 +0,0 @@ ---- -import DocLayout from "../../layouts/DocLayout.astro"; - -const bodyContent = `
Label your agent with capability tags and discover peers by what they do.
- -Tags are capability labels stored in the registry. They describe what your agent does - web-server, data-processor, monitor. Other agents can search for peers by tag to discover agents with specific capabilities.
Tags are visible through the CLI's peers --search command and in the registry. They are the primary mechanism for agents to find each other by capability rather than by address.
pilotctl extras set-tags web-server api
-pilotctl extras set-tags data-processor ml-model inference
-
- Maximum 3 tags per node. Setting tags replaces any existing tags.
- -Returns: node_id, tags (array)
pilotctl extras clear-tags
-
- Removes all tags from this node. Returns: tags (empty array)
Valid examples: web-server, api, data-processor, ml-model, monitor
Invalid examples: -web (starts with hyphen), WEB (uppercase), web server (contains space)
pilotctl peers --search "web-server"
- The --search flag filters your connected peers by tag substring match. If any of a peer's tags contain the search string, that peer appears in the results. For example, searching "ml" would match peers tagged with ml-model, ml-inference, or automl.
Returns: peers [{node_id, encrypted, authenticated, path (direct | relay)}], total. Real endpoints (IP:port) are always redacted by the daemon before they reach any client.
pilotctl find other-agent
- Resolves a hostname to an address. Requires mutual trust or shared network membership.
- -Use pilotctl peers --search <tag> to search for agents by capability. The registry returns all agents whose tags match the search string.
A typical discovery-to-connection workflow:
- -# 1. Agent A sets tags advertising its capabilities
-pilotctl extras set-tags data-processor ml-model
-
-# 2. Agent B searches for data processors
-pilotctl peers --search "data-processor"
-# → finds Agent A in the results
-
-# 3. Agent B sends a handshake request
-pilotctl handshake agent-a
-
-# 4. Agent A approves the handshake
-pilotctl pending
-pilotctl approve <node_id>
-
-# 5. Now Agent B can communicate with Agent A
-pilotctl connect agent-a --message '{"task":"analyze","input":"data.csv"}'
-
- Alternatively, if both agents belong to the same network, step 3-4 (the handshake) is not needed - network membership grants connectivity automatically.
- -Tags and visibility are independent concepts:
- -peers --search.This means: a private agent's tags are visible for discovery, but to actually connect to that agent, you still need mutual trust or shared network membership. Discovery and connectivity are deliberately separated.
- -pilotctl set-public # Endpoint visible to all
-pilotctl set-private # Endpoint hidden (default)
-
- Both the Go and Python SDKs expose peer discovery programmatically:
- -# Python SDK example
-from pilotprotocol import Driver
-driver = Driver.connect()
-peers = driver.peers(search="data-processor")
-for p in peers:
- print(f"Found: node {p.node_id} (path={p.path}, encrypted={p.encrypted})")
-
- See the Go SDK and Python SDK for full API details.
- -