name: mesh description: Peer discovery and tool sharing. Find other Fae instances on the local network or via x0x, exchange tools securely using git bundles with signature verification. metadata: author: fae version: "1.0"
You are operating Fae's Mesh -- the peer discovery and tool sharing network that lets Fae instances find each other and exchange forge-built tools.
Overview
The Mesh enables Fae instances to discover each other and share tools built with the Forge skill. Each Fae can publish its tools to the local network (or beyond), and fetch tools from peers -- all with cryptographic verification.
Discovery methods:
- Bonjour/mDNS -- automatic LAN discovery via
_fae-tools._tcpservice type. Zero configuration, works instantly on the same network. - Manual -- add peers by IP address or hostname when Bonjour is not available (different subnets, VPN, remote machines).
- x0x network -- global discovery via x0x DHT (future, requires x0x client).
Trust model: Trust-On-First-Use (TOFU). The first connection to a peer stores their SSH public key fingerprint. Subsequent connections verify the peer's key against the stored fingerprint. If a key changes, Fae warns the user.
Sharing flow:
- Build and release a tool with the Forge skill
- Start the catalog server (serves your tools to the network)
- Peers discover your Fae instance via Bonjour or manual entry
- Peers browse your catalog and fetch tools they want
- Downloaded bundles are verified against SHA-256 checksums and optionally GPG signatures
- Verified tools are installed as local skills
Directory Layout
~/.fae-forge/
peers.json # Known peers cache (discovered + manual)
trust-store.json # TOFU key store for peer verification
serve.pid # Catalog server PID and port
registry.json # Local tool registry (from Forge)
bundles/ # Git bundle archives (from Forge releases)
tools/ # Released skill packages (from Forge)
Available Scripts
discover
Find peer Fae instances on the network.
Usage: run_skill with name mesh and input:
{"script": "discover", "params": {"method": "bonjour", "timeout": 5}}
Parameters:
method(optional):"bonjour"(default),"manual", or"all"timeout(optional, int): discovery timeout in seconds (default: 5)
Returns a list of discovered peers with name, host, port, tool count, and fingerprint.
serve
Run the HTTP catalog server that lets peers browse and download your tools.
Usage: run_skill with name mesh and input:
{"script": "serve", "params": {"action": "start", "port": 0, "advertise": true}}
Parameters:
action(required):"start","stop", or"status"port(optional, int): port to listen on (default: 0 for random available port)advertise(optional, bool, default true): advertise via Bonjour/mDNS
The server exposes:
GET /catalog-- list all published toolsGET /tools/{name}/metadata-- tool metadata and manifestGET /tools/{name}/bundle-- download the git bundleGET /health-- server health check
publish
Announce a tool so peers can discover and download it.
Usage: run_skill with name mesh and input:
{"script": "publish", "params": {"name": "my-tool", "target": "all"}}
Parameters:
name(required): tool name to publish (must exist in registry)target(optional):"all"(default),"lan", or a specific peer name/IP
fetch
Download and install a tool from a peer.
Usage: run_skill with name mesh and input:
{"script": "fetch", "params": {"peer": "192.168.1.50:9847", "name": "json-formatter", "verify": true}}
Parameters:
peer(required): peer address ashost:portor peer name from discoveryname(required): tool name to fetchverify(optional, bool, default true): verify SHA-256 checksums and signatures
trust
Manage the peer trust store.
Usage: run_skill with name mesh and input:
{"script": "trust", "params": {"action": "list"}}
Parameters:
action(required):"list","add","remove", or"verify"peer(conditional): peer name or fingerprint (for add/remove/verify)pubkey(conditional): SSH public key string (for add)
Workflow
Share a tool with the network
- Build and release with Forge:
run_skill forge release - Start the catalog server:
run_skill mesh serve start - Publish the tool:
run_skill mesh publish my-tool - Peers can now discover and fetch the tool
Get a tool from a peer
- Discover peers:
run_skill mesh discover - Fetch the tool:
run_skill mesh fetch peer-ip:port tool-name - The tool is verified and installed automatically
First-time peer connection
- On first connection, the peer's public key fingerprint is stored (TOFU)
- Future connections verify against the stored key
- If a peer's key changes, the fetch is blocked and you are warned
- Use
run_skill mesh trustto manage stored keys
Tips for the LLM
- Always run
discoverbeforefetchso the user can see available peers. - The catalog server must be running for peers to see your tools -- remind users to
serve start. - If Bonjour discovery finds nothing, suggest
method: "manual"with a known IP address. - Use
trust listto show the user their trusted peers before fetching from unknown sources. - The Forge skill must be used first to create and release tools before they can be shared via Mesh.
- Tool names match between Forge and Mesh -- they reference the same registry at
~/.fae-forge/registry.json. - Port 0 means "pick a random available port" -- this is the default and recommended setting.