Agent skill

Mesh API

by mr-tbot in mr-tbot/mesh-api

Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status.

GPL-3.0Auto-check passedAI & LLM Engineering

Install Mesh API

skills CLI
$ npx skills add mr-tbot/mesh-api --skill mesh-api -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mr-tbot/mesh-api mesh-api --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mr-tbot/mesh-api.git skills-src && mkdir -p .claude/skills && cp -r skills-src/openclaw-release/skills/mesh-api .claude/skills/mesh-api && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mesh-api
GitHub stars
179
Token cost
~1.8k tokens
SKILL.md length
825 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
GPL-3.0

At a glance

Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status.

  • Works in 7 steps: Character limit. Meshtastic mesh… → No unsolicited long messages. Never send… → Bot-loop prevention. Messages prefixed… → …
  • Tasks that involve Fine-tuning
  • SKILL.md covers Configuration, Available Endpoints, Natural Language Examples and IMPORTANT CONSTRAINTS
  • Calls curl; needs MESH_API_KEY

What it does

Mesh API is an agent skill from mr-tbot/mesh-api. Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in AI & LLM Engineering, covering Fine-tuning and LLM inference and serving. It works with OpenAI, DeepSeek, Model Context Protocol and Ollama. The repository describes itself as: MESH-API — Off-Grid AI & API Router & with MCP server & over 30 API extensions for Meshtastic & MeshCore - Seamlessly connect LM Studio, Ollama, AI Providers , 3rd-party APIs…. The licence is GPL-3.0.

When your agent uses it

  • Tasks that involve Fine-tuning
  • Tasks that involve LLM inference and serving

Example prompts

  • “/mesh-api”

Requirements

  • A credential in MESH_API_KEY

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Character limit. Meshtastic mesh messages have a strict practical limit. Keep any message you send via POST /send under 200 characters…
  2. No unsolicited long messages. Never send AI-generated text directly to the mesh without user confirmation if the text exceeds one chunk…
  3. Bot-loop prevention. Messages prefixed with m@i- are AI-generated mesh messages. If you see this prefix on an inbound mesh message (via…
  4. Node ID format. Meshtastic node IDs are hex strings matching the pattern ! followed by exactly 8 hexadecimal characters (e.g. !a1b2c3d4)…
  5. Connection check. Before sending messages, it is good practice to call GET /connection_status to verify the mesh radio is connected. If…
  6. No auth by default. MESH-API does not require authentication in its default configuration. The MESH_API_KEY env var is optional…
  7. Rate awareness. Meshtastic is a low-bandwidth LoRa network. Do not send rapid bursts of messages. If you need to send multiple messages…

What it can do on your machine

Read from SKILL.md and the folder at commit ea3cf12. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • MESH_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mesh API loads about 1.8k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 825 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~35
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mr-tbot/mesh-api at commit ea3cf12, republished under its GPL-3.0 licence (© mr-tbot). 825 words, ~1,837 tokens.

Download SKILL.mdSave it as .claude/skills/mesh-api/SKILL.md (or your agent's skills folder).
name
mesh-api
description
Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status.
version
1.0.0
author
mesh-api community

MESH-API Skill

You can interact with a Meshtastic LoRa mesh network through a running MESH-API instance. MESH-API exposes a REST API (default port 5000) that lets you list online nodes, read recent messages, send texts to specific nodes or broadcast to channels, and check device connectivity.

Configuration

  • MESH_API_URL — Base URL of the MESH-API instance (e.g. http://192.168.1.50:5000). Required.
  • MESH_API_KEY — Optional bearer token for future authentication support. If set, include it as Authorization: Bearer <token> on every request. If empty or unset, omit the header entirely — MESH-API has no auth by default.

Available Endpoints

GET /nodes

List all mesh nodes the MESH-API instance can see.

Request:

curl -s "$MESH_API_URL/nodes"

Response: JSON array of node objects.

json
[
  {"id": "!a1b2c3d4", "shortName": "TBot", "longName": "TBot Base Station"},
  {"id": "!e5f6a7b8", "shortName": "Hike", "longName": "Hiker Node"}
]
  • id is the Meshtastic hex node ID (always starts with ! followed by 8 hex characters).
  • shortName is a 4-character display name.
  • longName is the full node name.
GET /messages

Retrieve recent messages from the mesh.

Request:

curl -s "$MESH_API_URL/messages"

Response: JSON array of message objects. Each message contains sender info, text, timestamp, and channel.

POST /send

Send a message to a specific node (direct) or broadcast to a channel.

Direct message to a node:

curl -s -X POST "$MESH_API_URL/send" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello from OpenClaw", "node_id": "!a1b2c3d4", "direct": true}'

Broadcast to a channel:

curl -s -X POST "$MESH_API_URL/send" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello mesh!", "channel_index": 0}'

Body parameters:

  • message (string, required) — The text to send.
  • node_id (string, required for direct) — Target node hex ID (e.g. !a1b2c3d4).
  • direct (boolean) — Set true for a direct message to node_id.
  • channel_index (integer) — Channel index for broadcast (default 0 = LongFast).

Response:

json
{"status": "sent", "to": "!a1b2c3d4", "direct": true, "message": "Hello from OpenClaw"}
POST /ui_send

Broadcast a message to a channel (form-encoded, primarily used by the web UI).

Request:

curl -s -X POST "$MESH_API_URL/ui_send" \
  -d "message=Hello+mesh!&channel_index=0"

Parameters (form-encoded):

  • message (string, required) — The text to send.
  • channel_index (integer) — Channel index (default 0).
  • destination_node (string, optional) — If provided, sends a direct message instead of broadcast.

For programmatic use, prefer POST /send with JSON. Use /ui_send only when mimicking the web UI.

GET /connection_status

Check whether MESH-API is connected to its Meshtastic radio device.

Request:

curl -s "$MESH_API_URL/connection_status"

Response:

json
{"status": "connected", "error": null}
  • status will be "connected" or "disconnected".
  • error contains an error description string if disconnected, otherwise null.
GET /commands_info

List all available slash commands registered on the mesh (including extension commands).

Request:

curl -s "$MESH_API_URL/commands_info"

Response: JSON array of command objects.

json
[
  {"command": "/ping", "description": "Check if the bot is online"},
  {"command": "/ai-9z", "description": "Ask the AI a question"},
  {"command": "/nodes", "description": "List online mesh nodes"}
]

Natural Language Examples

When the user says something like the phrases below, map their intent to the corresponding API call:

User saysAction
"Who is online on the mesh?"GET /nodes — list all visible nodes and summarize who is online.
"What nodes are on the mesh network?"GET /nodes
"Send 'hello' to TBot"GET /nodes first to resolve the name "TBot" to a node ID, then POST /send with {"message": "hello", "node_id": "<resolved_id>", "direct": true}.
"Send a message to !a1b2c3d4"POST /send with {"message": "<user's message>", "node_id": "!a1b2c3d4", "direct": true}.
"What's been said on the mesh recently?"GET /messages — retrieve and summarize the recent messages.
"Show me mesh messages"GET /messages
"Is the mesh connected?"GET /connection_status — report whether the radio link is up.
"Check mesh connection"GET /connection_status
"Broadcast 'weather alert' to the mesh"POST /send with {"message": "weather alert", "channel_index": 0}.
"Broadcast on channel 2: meeting at noon"POST /send with {"message": "meeting at noon", "channel_index": 2}.
"What commands does the mesh bot support?"GET /commands_info — list and describe available slash commands.

When resolving a node by name (e.g. "send to TBot"), always call GET /nodes first to find the matching id. Never guess a node ID.

Show full SKILL.md (291 more words)Show less

IMPORTANT CONSTRAINTS

  1. Character limit. Meshtastic mesh messages have a strict practical limit. Keep any message you send via POST /send under 200 characters unless the user explicitly requests a longer message. MESH-API will chunk longer messages automatically, but each chunk is a separate radio transmission — warn the user it will arrive as multiple packets and may take time.

  2. No unsolicited long messages. Never send AI-generated text directly to the mesh without user confirmation if the text exceeds one chunk (200 characters). Always ask the user first: "This response is X characters and will be sent as N packets — proceed?"

  3. Bot-loop prevention. Messages prefixed with m@i- are AI-generated mesh messages. If you see this prefix on an inbound mesh message (via GET /messages), do not relay it back to the mesh. Doing so creates an infinite loop between AI agents on the network.

  4. Node ID format. Meshtastic node IDs are hex strings matching the pattern ! followed by exactly 8 hexadecimal characters (e.g. !a1b2c3d4). Always validate a node ID matches this format before using it in POST /send. If the user provides a name instead, resolve it via GET /nodes.

  5. Connection check. Before sending messages, it is good practice to call GET /connection_status to verify the mesh radio is connected. If status is "disconnected", inform the user and do not attempt to send.

  6. No auth by default. MESH-API does not require authentication in its default configuration. The MESH_API_KEY env var is optional future-proofing. Only include the Authorization header if MESH_API_KEY is set and non-empty.

  7. Rate awareness. Meshtastic is a low-bandwidth LoRa network. Do not send rapid bursts of messages. If you need to send multiple messages, space them out and inform the user about the delay.

© mr-tbot, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in openclaw-release/skills/mesh-api of mr-tbot/mesh-api.

Open the folder on GitHubat commit ea3cf12

Compare with similar skills

Mesh API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mesh API compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mesh API this skillmr-tbot/mesh-api179—~1.8kAutomated safety check: PassGPL-3.0
Perfupraullenchai/Rapid-MLX3.9k—~1.6kAutomated safety check: NotesCustom licence
Agent Frameworkjihadkhawaja/Egroo178—~1.9kAutomated safety check: PassApache-2.0
Configuring Visionoxbshw/watch-skill452—~509Automated safety check: NotesMIT
Facturasgustavoeenriquez/MakerAi212—~127Automated safety check: PassMIT
Open Weightsericrisco/rsc-harness156—~4.1kAutomated safety check: PassMIT

Similar skills

  • Perfup

    raullenchai/Rapid-MLX

    Autonomous performance optimization: research, PoC, benchmark, implement, review, PR

    3.9k GitHub stars~1.6k tokensUpdated today
    AI & LLM EngineeringAuto-check: notes
  • Agent Framework

    jihadkhawaja/Egroo

    Build, extend, and debug AI agents in Egroo using the Microsoft Agent Framework (C .NET).

    178 GitHub stars~1.9k tokensUpdated 6 mo ago
    AI & LLM EngineeringAuto-check passed
  • Configuring Vision

    oxbshw/watch-skill

    The user wants to connect an LLM or vision provider, already has an API key, asks "can I use OpenAI/Anthropic/Gemini/OpenRouter", wants local Ollama, or needs different cheap and strong models.

    452 GitHub stars~509 tokensUpdated 22 days ago
    AI & LLM EngineeringAuto-check: notes
  • Facturas

    gustavoeenriquez/MakerAi

    Úsalo cuando el usuario pida redactar una factura, una cuenta de cobro o una nota de cobro.

    212 GitHub stars~127 tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Open Weights

    ericrisco/rsc-harness

    A skill your agent uses when choosing an open-weight LLM and clearing it for use — which family and size fit the task, the hardware and the budget, and above all whether the license permits shipping.

    156 GitHub stars~4.1k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Llama Cpp

    magnus919/agent-skills

    Operate, configure, benchmark, and troubleshoot llama.cpp across CPU, Metal, CUDA, HIP/ROCm, Vulkan, SYCL, and hybrid or multi-GPU systems.

    111 GitHub stars~2.3k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

Questions about Mesh API

What does Mesh API do?

Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status. Mesh API is an agent skill from mr-tbot/mesh-api. Interact with a Meshtastic LoRa mesh network through MESH-API — list nodes, read messages, send texts, and check connection status.

When should I use Mesh API?

Mesh API fits situations like: tasks that involve Fine-tuning; tasks that involve LLM inference and serving.

How do I install Mesh API in Claude Code?

Run `npx skills add mr-tbot/mesh-api --skill mesh-api -a claude-code`. Or copy the skill folder (openclaw-release/skills/mesh-api in mr-tbot/mesh-api) into .claude/skills/mesh-api in your project. Claude Code loads it when a task matches its description.

How do I install Mesh API in Codex?

Run `npx skills add mr-tbot/mesh-api --skill mesh-api -a codex`. Or copy the skill folder (openclaw-release/skills/mesh-api in mr-tbot/mesh-api) into .agents/skills/mesh-api in your project. Codex loads it when a task matches its description.

Can I use Mesh API in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mr-tbot/mesh-api --skill mesh-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mesh-api, .gemini/skills/mesh-api, .github/skills/mesh-api and .opencode/skills/mesh-api in your project.

What does Mesh API need to run?

Going by SKILL.md and its folder, Mesh API needs the command-line tools its instructions call (curl) and credentials named MESH_API_KEY. Our summary lists: A credential in MESH_API_KEY.

Does Mesh API access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Mesh API safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mesh API use?

Mesh API is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mesh API use?

About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Mesh API?

Skills that share tags, products or a category with Mesh API: Perfup (raullenchai/Rapid-MLX, 3.9k stars), Agent Framework (jihadkhawaja/Egroo, 178 stars), Configuring Vision (oxbshw/watch-skill, 452 stars) and Facturas (gustavoeenriquez/MakerAi, 212 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mesh API?

mr-tbot (a GitHub user) maintains it in mr-tbot/mesh-api, which has 179 GitHub stars. The repository was last updated on July 28, 2026.

Source: mr-tbot/mesh-api on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.