Skip to main content
ClaudeWave
Skill934 repo starsupdated 3d ago

metabot

Metabot enables asynchronous messaging between separate MetaBot instances and bots, with automatic cross-instance routing and peer discovery. Use this skill to delegate tasks to other bots, send messages across federated peers, manage bot discovery, initiate voice calls, or access shared skills from a skill hub.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/xvirobotics/metabot /tmp/metabot && cp -r /tmp/metabot/packages/skills/metabot ~/.claude/skills/metabot
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

## Quickstart

The `metabot` CLI is the single entry point to the metabot-core ecosystem. It wraps four surfaces:

```bash
metabot memory <cmd>   # shared knowledge / notes
metabot skills <cmd>   # skill registry                (alias: skill)
metabot agents <cmd>   # peer-bot address book
metabot inbox  <cmd>   # central inbox for CLI agents (CC / Codex with no bridge)
metabot teams  <cmd>   # local Agent Teams orchestration
metabot t5t    <cmd>   # daily team status portal
metabot help           # top-level help (also --help, -h, bare invocation)
```

`metabot` is the **single** CLI binary. Beyond the metabot-core surfaces above, it also handles bridge process control (`update`/`start`/`stop`/`restart`/`logs`/`status`) and a bridge daemon API (`bots`/`bot`/`talk`/`schedule`/`voice`/`stats`/`peers`/`metrics`/`health` — see the bridge-local section below). The legacy `mm`, `mh`, and per-bot `bot-skills` surfaces have been removed; `mb` is now a thin deprecation wrapper that forwards to `metabot`. Switch any script still calling them to the `metabot <subcommand>` form (see the migration table below).

Auth is automatic: `METABOT_CORE_TOKEN` (env) or `~/.metabot-core/token` (first line). Server URL is `METABOT_CORE_URL`, default `http://localhost:9200` for a locally self-hosted metabot-core; point it at `https://your-metabot-host.example.com` if you run metabot-core on a remote box behind your own reverse proxy.

**Fastest path for a fresh agent**: run metabot-core locally (or reach your own remote host), then put the API token in `~/.metabot-core/token` (or export `METABOT_CORE_TOKEN`) and set `METABOT_CORE_URL`. No SSO or corporate VPN is required for the personal edition — a single local API token is the only credential. Then `metabot agents whoami` should echo your identity.

## `metabot memory` — shared knowledge

Most-used:

```bash
metabot memory list [folder_id]                      # browse the tree
metabot memory search "<query>"                      # full-text search
metabot memory get <id|path>                         # read a doc (JSON metadata + content)
metabot memory create "<title>" ["<content>"] --share --tags a,b
metabot memory create "<title>" ["<html>"] --share --html --tags docs
metabot memory mkdir "<name>"                        # create a folder
metabot memory update <id> [content] [--title …] [--tags a,b,c] [--share|--no-share]
metabot memory share <id> [on|off]                   # toggle one doc's cross-bot visibility
metabot memory visibility [public|private]           # default shared flag for new docs
metabot memory health
```

(Replaces the former standalone `mm` CLI — same wire calls, same behavior, single binary.)

**Write target — `create` / `mkdir`.** Both accept an explicit `--path </absolute/path>`:

```bash
metabot memory create "Smoke note" "..." --path /users/<botName>/smoke-note
metabot memory mkdir "smoke-folder"   --path /users/<botName>/smoke-folder
```

When `--path` is given the server ACL-checks it and auto-creates any missing
ancestor folders. With **neither** `--path` nor `--folder` (nor a `parent_id`
for `mkdir`), the write **defaults into your own namespace** —
`/users/<botName>/<slug-of-title>` for `create`,
`/users/<botName>/<name>` for `mkdir` — resolved via `GET /api/whoami`. This
is the fix for the old member `403 forbidden`: members cannot write the root
namespace, so a bare `create`/`mkdir` previously failed. Admin tokens keep the
legacy root default. `--folder <id>` still targets an explicit existing folder
as before.

**Read visibility is document-level.** A document's cross-bot visibility is
controlled by its `shared` flag, not by the path. Use `--share` when creating
team-visible memory; use `--no-share` for private notes. Tags are for search
and discovery, not ACL, but they should still describe audience and topic:

```bash
metabot memory create "Runbook" "$CONTENT" --share --tags team,runbook
metabot memory create "Landing page" "$HTML" --share --html --tags metabot,tutorial
metabot memory update <doc_id> --share --tags metabot,public
metabot memory share <doc_id> on
```

**Per-bot default visibility — `memoryPublic`.** Bots can flip the default
`shared` value for new documents without admin intervention. `public` means
new docs default to `shared:true`; `private` means new docs default to
`shared:false`. Explicit `--share` / `--no-share` on create/update always wins.
Default for newly-registered bots is **public** (`memoryPublic: true`):

```bash
metabot memory visibility            # prints {state: "public" | "private"}
metabot memory visibility public     # new docs default shared:true
metabot memory visibility private    # new docs default shared:false
```

Same shape and auth model as `bots.json` `visible` for agent-bus discovery
("bot self-toggles, owner credential or admin only" — PATCH
`/api/agents/<botName>/memory-visibility`). It only changes the default
`shared` value for *new* documents; existing docs are unchanged until you run
`metabot memory share <doc_id> on|off` or `metabot memory update <doc_id>
--share|--no-share`. To pin the choice across bridge restarts, set
`memoryPublic: true|false` on the bot's entry in `bots.json` — the bridge
re-asserts the column on every bulk-register and overrides whatever was last
toggled via CLI. Omitting the field in bots.json leaves CLI toggles sticky.

## `metabot skills` — skill registry

```bash
metabot skills list
metabot skills get <name>
metabot skills publish <name> --from <dir>        # reads <dir>/SKILL.md
metabot skills install <name> [--to <dir>]        # default --to .claude/skills/<name>
metabot skills remove <name>
metabot skills health
```

**Install location landmine:** `metabot skills install <name>` defaults to `<cwd>/.claude/skills/<name>`. For a Claude-Code-wide install, pass `--to ~/.claude/skills/<name>`:

```bash
metabot skills install metabot --to ~/.claude/skills/metabot
```

(Replaces the former standalone `mh` CLI — same wire calls, same behavior, si