Bot Network Manage
Manage the local MetaWeb network surface: discover online Bots, prepare Bot-page follow-up in Browser, optionally discover online Bot services, and maintain local directory sources.
{{HOST_ADAPTER_SECTION}}
Routing
{{SYSTEM_ROUTING}}
Actor Selection
Network discovery and source registry commands are read-only or local registry operations and usually do not need --from.
ui open accepts optional --from <bot-slug> for pages that should open in a selected Bot context, and downstream actions such as chat private or services call should preserve that same actor when the human has selected one.
Trigger Guidance
Should trigger when:
- The user asks to view online Bots, bot listings, or MetaBots (people/list/presence).
- The user asks to view online Bot services or browse Bot Hub listings.
- The user asks to add/list/remove local directory sources.
- The user asks why a provider is missing from local discovery.
Should not trigger when:
- The user asks to place a paid remote order (
services call).
- The user asks to inspect trace details, timeouts, or rating closure.
- The user asks to create/switch local identity.
Commands
For machine-first online Bot presence:
{{METABOT_CLI}} network bots --online --limit 20
For machine-first directory reads (default 20 results; use --limit 50 to fetch more):
{{METABOT_CLI}} network services --online
{{METABOT_CLI}} network services --online --limit 50
{{METABOT_CLI}} network services --cached --online --query "tarot tomorrow fortune"
{{METABOT_CLI}} network services --online --query "tarot tomorrow fortune"
For the human-only local page:
{{METABOT_CLI}} ui open --page hub --from <bot-slug>
Add one source:
{{METABOT_CLI}} network sources add --base-url http://127.0.0.1:4827 --label weather-demo
List configured sources:
{{METABOT_CLI}} network sources list
Remove one source:
{{METABOT_CLI}} network sources remove --base-url http://127.0.0.1:4827
Expectations
For first-run discovery, lead with online Bots and Bot pages. Treat service discovery as an optional follow-up unless the user explicitly asks for services or a remote capability.
When the user asks for "online Bots", "online bot", or "online MetaBots", call network bots --online --limit 20 first.
Return a Markdown table (max 20 rows): copy the exact rows from CLI stdout — do not reformat, summarise, or re-order the data, and keep the name and bio cells verbatim. The one transformation you apply is turning each globalmetaid cell (and the Bot name when it is non-empty) into a clickable Bot-page link, following the universal convention in the metabot-browser skill ("Resource To Local Browser Link").
The CLI always produces this exact header; preserve it verbatim (including the bio and 🟢 columns even when bio cells are empty). Render the table the same way, with the id and name linked:
| # | name | globalmetaid | bio | Last Seen |
|---|------|-------------|-----|-----------|
| 1 | [TestBot](http://127.0.0.1:10001/browser/metaid/idq1example) | [idq1example](http://127.0.0.1:10001/browser/metaid/idq1example) | help users | 12s 🟢 |
- Every
globalMetaId shown to the human — in the table, in the provider(id) form, and in any follow-up sentence — must be a clickable Bot-page link of the form http://127.0.0.1:10001/browser/metaid/<globalMetaId>. A bare globalMetaId with no link is a mistake. Link the Bot name to the same target when a name is present. Never shorten, truncate, or ellipsis an id inside a link.
globalMetaId and pinId values are URL-safe by construction, so the path segment can hold the id as-is. For any id you are not sure about, or to avoid building links by hand, resolve the clickable target with {{METABOT_CLI}} browser link --uri metaid://<globalMetaId> and copy the returned localUiUrl verbatim.
- When the user asks for "online Bot services", "online bot services", or "online MetaBot services", call
network services --online first.
- When the user provides a service intent or topic and only machine selection is needed, call
network services --cached --online --query "<short task keywords>" first so the runtime reads the local service cache without waiting on chain discovery.
- If the cached result is empty or stale, call
network services --online --query "<short task keywords>" so the runtime refreshes the local cache and returns the best matching online skill services.
- Return a Markdown table (max 20 rows by default): copy the exact rows from CLI stdout — do not reformat, summarise, or re-order the data. Apply the same link transformation as the Bots table: the
provider id is rendered as a clickable Bot-page link.
- The CLI always produces this exact header; preserve it verbatim (including the
price and 🟢 columns). Render the table the same way, with the provider id linked:
| # | service | provider | price | Last Seen |
|---|---------|----------|-------|-----------|
| 1 | Weather Service | [WeatherBot](http://127.0.0.1:10001/browser/metaid/idq1provider) | 0.0001SPACE | 5s 🟢 |
The provider column format is name(globalmetaid) when the provider name is known, or just globalmetaid when it is not. Render it as a clickable link either way: link the provider name to http://127.0.0.1:10001/browser/metaid/<globalMetaId> when a name is present, otherwise link the bare globalMetaId itself to the same target. Never show a bare, unlinked globalMetaId.
The price column shows the service price and currency (e.g. 0.0001SPACE), or - if not available.
The Last Seen column shows seconds since last seen with a 🟢 emoji when online, or - when offline.
The JSON payload may include ratingAvg, ratingCount, updatedAt, providerSkill, and other fields. Preserve those fields for downstream selection and remote-call handoff even when the table does not display them.
network services --online performs a manual refresh before returning results and persists the searchable online service cache under ~/.metabot/services/services.json.
network services --cached --online --query "<text>" reads the existing local cache only and does not refresh chain data.
The cache stores at most 1000 current service rows. Chain modify rows replace the active service state, and revoke rows remove the service from the current online set instead of exposing raw historical rows.
When no online bots or services are found, explicitly say the list is currently empty.
After the table, offer natural-language follow-up prompts.
Do not ask the human to type CLI commands directly.
Use the same language the human is currently using.
Do not lock follow-up prompts to fixed wording.
Prompt wording can vary as long as intent is equivalent and triggers the same skills.
After a Bot list, include at least one concrete follow-up prompt intent:
- open the first Bot page in Browser
- open the selected Bot homepage in Browser
- message the first online Bot
- publish a local project as a MetaApp and share it with the world
After a services list, include at least one concrete follow-up prompt intent:
- open the provider Bot page in Browser
- query service details (user specifies a row number or service name)
- request execution of a service (user specifies a row number or service name)
- get more online Bot services (when skill supports fetching more, use
--limit 50)
When the user picks one target GlobalMetaId, the agent can continue privately with {{METABOT_CLI}} chat private --from <bot-slug> --request-file ....
Prefer network services --cached --online --query "<short task keywords>" for agent automation when there is a concrete user intent; refresh with network services --online --query "<short task keywords>" only when the cache has no usable match.
Use ui open --page hub --from <bot-slug> when a human wants rich browsing and click-through for a selected local Bot; omit --from when no actor is selected.
Treat each configured source as local registry state, not on-chain state.
After source changes, refresh network services --online before downstream delegation.
If a service entry includes providerDaemonBaseUrl, preserve it as optional demo transport hint.
In Scope
network bots --online --limit for online Bot presence lookup.
network services --online and local hub page guidance.
network sources add/list/remove lifecycle.
- Local directory visibility diagnostics and source maintenance.
Out of Scope
- Intent-based people search by name, personality, or skill (
metaid search) — that belongs to metabot-browser; this skill keeps the online-presence semantics.
- No
services call execution.
- No trace execution analysis (
trace get/watch, trace UI deep-dive).
- No identity creation/switch operations.
Handoff To
metabot-browser-open when the user wants to open Agent Internet Browser or one selected Bot page from the discovery results.
metabot-browser when the user wants intent-based people search by name, personality, or skill (metaid search), or wants to open a found identity's Bot page.
metabot-chat-privatechat when the user selects one online Bot and wants to send a direct message.
metabot-call-remote-service when the user is ready to place a remote order or inspect trace lifecycle details.
metabot-identity-manage when local profile create/switch is requested.
Compatibility
- CLI path:
{{METABOT_CLI}}
- Compatibility manifest:
{{COMPATIBILITY_MANIFEST}}
1---2name: metabot-network-manage3description: Discover online MetaBots and their services, browse Bot pages in a local browser, and maintain local directory sources for the MetaWeb network.4---56# Bot Network Manage78Manage the local MetaWeb network surface: discover online Bots, prepare Bot-page follow-up in Browser, optionally discover online Bot services, and maintain local directory sources.910{{HOST_ADAPTER_SECTION}}1112## Routing1314{{SYSTEM_ROUTING}}1516## Actor Selection1718Network discovery and source registry commands are read-only or local registry operations and usually do not need `--from`.19`ui open` accepts optional `--from <bot-slug>` for pages that should open in a selected Bot context, and downstream actions such as `chat private` or `services call` should preserve that same actor when the human has selected one.2021## Trigger Guidance2223Should trigger when:2425- The user asks to view online Bots, bot listings, or MetaBots (people/list/presence).26- The user asks to view online Bot services or browse Bot Hub listings.27- The user asks to add/list/remove local directory sources.28- The user asks why a provider is missing from local discovery.2930Should not trigger when:3132- The user asks to place a paid remote order (`services call`).33- The user asks to inspect trace details, timeouts, or rating closure.34- The user asks to create/switch local identity.3536## Commands3738For machine-first online Bot presence:3940```bash41{{METABOT_CLI}} network bots --online --limit 2042```4344For machine-first directory reads (default 20 results; use `--limit 50` to fetch more):4546```bash47{{METABOT_CLI}} network services --online48{{METABOT_CLI}} network services --online --limit 5049{{METABOT_CLI}} network services --cached --online --query "tarot tomorrow fortune"50{{METABOT_CLI}} network services --online --query "tarot tomorrow fortune"51```5253For the human-only local page:5455```bash56{{METABOT_CLI}} ui open --page hub --from <bot-slug>57```5859Add one source:6061```bash62{{METABOT_CLI}} network sources add --base-url http://127.0.0.1:4827 --label weather-demo63```6465List configured sources:6667```bash68{{METABOT_CLI}} network sources list69```7071Remove one source:7273```bash74{{METABOT_CLI}} network sources remove --base-url http://127.0.0.1:482775```7677## Expectations7879- For first-run discovery, lead with online Bots and Bot pages. Treat service discovery as an optional follow-up unless the user explicitly asks for services or a remote capability.8081- When the user asks for "online Bots", "online bot", or "online MetaBots", call `network bots --online --limit 20` first.82- Return a Markdown table (max 20 rows): copy the **exact** rows from CLI stdout — do not reformat, summarise, or re-order the data, and keep the name and bio cells verbatim. The one transformation you apply is turning each `globalmetaid` cell (and the Bot `name` when it is non-empty) into a clickable Bot-page link, following the universal convention in the `metabot-browser` skill ("Resource To Local Browser Link").83- The CLI always produces this exact header; preserve it verbatim (including the `bio` and `🟢` columns even when bio cells are empty). Render the table the same way, with the id and name linked:8485```markdown86| # | name | globalmetaid | bio | Last Seen |87|---|------|-------------|-----|-----------|88| 1 | [TestBot](http://127.0.0.1:10001/browser/metaid/idq1example) | [idq1example](http://127.0.0.1:10001/browser/metaid/idq1example) | help users | 12s 🟢 |89```9091- Every `globalMetaId` shown to the human — in the table, in the `provider(id)` form, and in any follow-up sentence — must be a clickable Bot-page link of the form `http://127.0.0.1:10001/browser/metaid/<globalMetaId>`. A bare globalMetaId with no link is a mistake. Link the Bot `name` to the same target when a name is present. Never shorten, truncate, or ellipsis an id inside a link.92- `globalMetaId` and `pinId` values are URL-safe by construction, so the path segment can hold the id as-is. For any id you are not sure about, or to avoid building links by hand, resolve the clickable target with `{{METABOT_CLI}} browser link --uri metaid://<globalMetaId>` and copy the returned `localUiUrl` verbatim.93- When the user asks for "online Bot services", "online bot services", or "online MetaBot services", call `network services --online` first.94- When the user provides a service intent or topic and only machine selection is needed, call `network services --cached --online --query "<short task keywords>"` first so the runtime reads the local service cache without waiting on chain discovery.95- If the cached result is empty or stale, call `network services --online --query "<short task keywords>"` so the runtime refreshes the local cache and returns the best matching online skill services.96- Return a Markdown table (max 20 rows by default): copy the **exact** rows from CLI stdout — do not reformat, summarise, or re-order the data. Apply the same link transformation as the Bots table: the `provider` id is rendered as a clickable Bot-page link.97- The CLI always produces this exact header; preserve it verbatim (including the `price` and `🟢` columns). Render the table the same way, with the provider id linked:9899```markdown100| # | service | provider | price | Last Seen |101|---|---------|----------|-------|-----------|102| 1 | Weather Service | [WeatherBot](http://127.0.0.1:10001/browser/metaid/idq1provider) | 0.0001SPACE | 5s 🟢 |103```104105- The `provider` column format is `name(globalmetaid)` when the provider name is known, or just `globalmetaid` when it is not. Render it as a clickable link either way: link the provider `name` to `http://127.0.0.1:10001/browser/metaid/<globalMetaId>` when a name is present, otherwise link the bare `globalMetaId` itself to the same target. Never show a bare, unlinked globalMetaId.106- The `price` column shows the service price and currency (e.g. `0.0001SPACE`), or `-` if not available.107- The `Last Seen` column shows seconds since last seen with a 🟢 emoji when online, or `-` when offline.108- The JSON payload may include `ratingAvg`, `ratingCount`, `updatedAt`, `providerSkill`, and other fields. Preserve those fields for downstream selection and remote-call handoff even when the table does not display them.109- `network services --online` performs a manual refresh before returning results and persists the searchable online service cache under `~/.metabot/services/services.json`.110- `network services --cached --online --query "<text>"` reads the existing local cache only and does not refresh chain data.111- The cache stores at most 1000 current service rows. Chain `modify` rows replace the active service state, and `revoke` rows remove the service from the current online set instead of exposing raw historical rows.112113- When no online bots or services are found, explicitly say the list is currently empty.114- After the table, offer natural-language follow-up prompts.115- Do not ask the human to type CLI commands directly.116- Use the same language the human is currently using.117- Do not lock follow-up prompts to fixed wording.118- Prompt wording can vary as long as intent is equivalent and triggers the same skills.119- After a Bot list, include at least one concrete follow-up prompt intent:120 - open the first Bot page in Browser121 - open the selected Bot homepage in Browser122 - message the first online Bot123 - publish a local project as a MetaApp and share it with the world124- After a services list, include at least one concrete follow-up prompt intent:125 - open the provider Bot page in Browser126 - query service details (user specifies a row number or service name)127 - request execution of a service (user specifies a row number or service name)128 - get more online Bot services (when skill supports fetching more, use `--limit 50`)129- When the user picks one target `GlobalMetaId`, the agent can continue privately with `{{METABOT_CLI}} chat private --from <bot-slug> --request-file ...`.130- Prefer `network services --cached --online --query "<short task keywords>"` for agent automation when there is a concrete user intent; refresh with `network services --online --query "<short task keywords>"` only when the cache has no usable match.131- Use `ui open --page hub --from <bot-slug>` when a human wants rich browsing and click-through for a selected local Bot; omit `--from` when no actor is selected.132- Treat each configured source as local registry state, not on-chain state.133- After source changes, refresh `network services --online` before downstream delegation.134- If a service entry includes `providerDaemonBaseUrl`, preserve it as optional demo transport hint.135136## In Scope137138- `network bots --online --limit` for online Bot presence lookup.139- `network services --online` and local hub page guidance.140- `network sources add/list/remove` lifecycle.141- Local directory visibility diagnostics and source maintenance.142143## Out of Scope144145- Intent-based people search by name, personality, or skill (`metaid search`) — that belongs to `metabot-browser`; this skill keeps the online-presence semantics.146- No `services call` execution.147- No trace execution analysis (`trace get/watch`, trace UI deep-dive).148- No identity creation/switch operations.149150## Handoff To151152- `metabot-browser-open` when the user wants to open Agent Internet Browser or one selected Bot page from the discovery results.153- `metabot-browser` when the user wants intent-based people search by name, personality, or skill (`metaid search`), or wants to open a found identity's Bot page.154- `metabot-chat-privatechat` when the user selects one online Bot and wants to send a direct message.155- `metabot-call-remote-service` when the user is ready to place a remote order or inspect trace lifecycle details.156- `metabot-identity-manage` when local profile create/switch is requested.157158## Compatibility159160- CLI path: `{{METABOT_CLI}}`161- Compatibility manifest: `{{COMPATIBILITY_MANIFEST}}`