add-dial-tool
Skill31k starsChanged 9 days agoMITView on GitHub
Give chosen NanoClaw agents a real phone number as a container tool — the `dial` CLI baked into the agent image plus OneCLI credential injection for api.getdial.ai, attached only to the agents you pick, so they can send SMS, place AI voice calls, and receive verification codes from inside the sandbox. Independent of the Dial channel; idempotent; re-run to change which agents may use it. Use when the user wants agents to text, call, or run `dial …` from a chat, without wiring Dial as a messaging channel.
- Installs packages
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 4 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Run this from the NanoClaw repo on the host (not from a chat with an agent — the container can't install itself).
- Very specific: line 40
If it fails, tell the user to run /init-onecli first, then retry.
- Distinctive: line 58
If it fails, show the user the message as it is and stop.
- Distinctive: line 83
Ask the operator which of them may use Dial.
- Distinctive: line 129
If it is, read which account — that account's key is what the chosen agents will use:
- Distinctive: line 141
If it is not, verify an email with a one-time code:
- Very specific: line 167
Verify it. Do not pass --agent nanoclaw here: this skill owns the container dial-cli skill, and --agent would drop a second, unmanaged copy …
- Very specific: line 205
Read the API key from the host auth file — the single source of truth, written by dial auth login / dial auth verify-otp — and store it in …
- Very specific: line 266
Check which agents hold it with onecli agents grants list --id <agent-id>.
- Very specific: line 292
A chosen agent gets
401oraccess_restricted: Check the error code first.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Add Dial Tool
Installs Dial as a container tool: the dial CLI on the agent's PATH, the
dial-cli skill so the agent knows how to drive it, and an OneCLI credential
attached only to the agents you choose, so their in-container calls are injected
keyless. Independent of the Dial channel
(/add-dial) — install this alone. Idempotent: re-run it to change which agents
may use Dial.
This tool spends money and reaches real people. An agent with Dial access can
text and call any number and buy more numbers, billed to the Dial account. The
CLI and the skill file land in every agent's container, but the key is
injected per agent by OneCLI, so the operator chooses which agents get it. The
key is attached to those agents only; every other agent, and every agent group
created later, gets no Dial key, and the gateway answers its Dial requests
with the error code access_restricted.
Run this from the NanoClaw repo on the host (not from a chat with an agent — the
container can't install itself). The mechanical steps carry nc: directive
fences: an agent reads the prose and applies them, and a parser can apply them
deterministically from the same document. Every directive is idempotent, so the
whole skill is safe to re-run; anything a parser can't apply falls back to the
prose beside it.
Pre-flight
OneCLI is required for credential injection — without it there is no way to hand the key to a container without putting it in an env var. This must succeed before anything else runs:
command -v onecli >/dev/nullIf it fails, tell the user to run /init-onecli first, then retry. Stop here.
This skill attaches the Dial key to chosen agents through the OneCLI agent
grants API, which gateway 1.44 added; NanoClaw pins 1.45. On an older gateway
every agent in all mode would receive a new key, and the grants commands do not
exist. A 1.44+ gateway converts all-mode agents to grants once, on its first
start; an agent still in all mode means that conversion has not finished, and
it too would receive the key. So run the shared grants check before anything is
written: it reads the version of the gateway the onecli CLI talks to, checks
that no agent is in all mode, and checks that the onecli CLI has the grants
commands.
The Dial sign-up and credential steps below use the captured version, so they
cannot run when this check fails:
sh .claude/skills/add-onecli/scripts/check-grants-gateway.sh /add-dial-toolIf it fails, show the user the message as it is and stop. Do not work around it by attaching the Dial key by hand to every agent: which agents hold the key is the only thing that keeps the ones you did not choose away from Dial.
Calls this setup makes to Dial identify the install. The dial CLI prepends
DIAL_USER_AGENT to its own token, so the account's requests stay attributable
to this NanoClaw install in Dial's server-side logs. Resolve the token once
(nanoclaw/<version>; an unreadable package.json degrades to
nanoclaw/unknown rather than blocking the install):
node -p "'nanoclaw/'+(require('./package.json').version||'unknown')" 2>/dev/null || echo nanoclaw/unknownPrefix every dial command below with DIAL_USER_AGENT={{dial_ua}}.
Choose which agents may use Dial
List the agent groups (the NanoClaw service must be running — ncl talks to it
over its socket):
ncl groups list --json | jq -r 'if (.data|length)==0 then "no agent groups yet" else [.data[] | "\(.id) (\(.name))"] | join(", ") end'Ask the operator which of them may use Dial. Say plainly what they are granting, and ask even when there is a single agent:
Agents on this install: {{agent_groups}}. Giving an agent Dial lets it text and call any number and buy numbers, billed to your Dial account. Agents you leave out do not get the Dial key (reversible by running /add-dial-tool again). Agents created after this run do not get Dial until you run /add-dial-tool again.Which agents may use Dial? Enter agent ids separated by commas with no spaces (the `ag-…` column), `all` for every agent that exists now, or `none` to install the tool with no agent holding the key for now.all and none cannot be mixed with ids, and an empty answer is never
"everyone". A typo must not silently open or close anything, so every id named
must be a real agent group, and all is expanded to the groups that exist now,
so a group created while the skill runs is not included. The checked answer is
captured, and every step that
installs, signs in, or writes a credential below depends on the capture: a bad
answer stops them all, nothing is written:
A=$(printf '%s' '{{dial_agents}}' | tr -d ' '); G=$(ncl groups list --json --limit 100000) || { echo "could not list agent groups — is the NanoClaw host running?" >&2; exit 1; }; for w in $(printf '%s' "$A" | tr ',' ' '); do case "$w" in all|none) ;; *) printf '%s' "$G" | jq -e --arg id "$w" '.data[] | select(.id==$id)' >/dev/null || { echo "unknown agent group '$w' — see: ncl groups list" >&2; exit 1; }; esac; done; case ",$A," in *,all,*) A=$(printf '%s' "$G" | jq -r '[.data[].id] | join(",")'); [ -n "$A" ] || A=none;; esac; printf '%s\n' "$A"Install the Dial CLI on the host
The host needs the dial CLI to sign in: dial auth login / dial auth
verify-otp write the host auth file that the credential step below reads. Pinned
to the same version the agent image gets, so host and sandbox agree:
: "OneCLI gateway {{onecli_gateway}}, Dial agents {{dial_scope}}"; command -v dial >/dev/null || npm install -g @getdial/cli@0.37.0Sign in to Dial
Dial's CLI owns the account credential (an auth file it writes on sign-in).
Check the host sign-in
Is this host already signed in?
DIAL_USER_AGENT={{dial_ua}} dial doctor --jsonRead the account
If it is, read which account — that account's key is what the chosen agents will use:
DIAL_USER_AGENT={{dial_ua}} dial doctor --jsonThis host is signed in to Dial as {{connected_email}}; the agents you chose will use that account. To give them a different account, run `dial auth login <email> --force` and `dial auth verify-otp --code <code>` on the host first, then run /add-dial-tool again. The Dial key is updated in place, so a different Dial account switches every agent that holds the Dial key to it, another install's agents on this gateway included.Send the code
If it is not, verify an email with a one-time code:
The Dial key on this OneCLI gateway is updated in place, so signing in to a different Dial account than the one already used here switches every agent that holds the Dial key to it, another install's agents on this gateway included.Collect the email:
What's your email? Dial sends a one-time code to verify it. By continuing you create a Dial account and agree to Dial's Terms of Service (https://getdial.ai/terms) and Privacy Policy (https://getdial.ai/privacy).Send the code (--force re-sends even if a prior code is pending):
: "OneCLI gateway {{onecli_gateway}}, Dial agents {{dial_scope}}"; DIAL_USER_AGENT={{dial_ua}} dial auth login {{owner_email}} --forceVerify the code
Collect the code:
Enter the 6-digit code from your emailVerify it. Do not pass --agent nanoclaw here: this skill owns the container
dial-cli skill, and --agent would drop a second, unmanaged copy next to it:
: "OneCLI gateway {{onecli_gateway}}, Dial agents {{dial_scope}}"; DIAL_USER_AGENT={{dial_ua}} dial auth verify-otp --code {{otp}}Put the CLI and its skill in the agent image
The agent's global Node CLIs install from container/cli-tools.json, not from
hand-edited Dockerfile layers. Add the pinned Dial CLI — idempotent on name, so
a re-run is a no-op. @getdial/cli has no native postinstall, so no onlyBuilt:
{ "name": "@getdial/cli", "version": "0.37.0" }The version (0.37.0) is the canonical pin — this document is the source of
truth; the host install above uses the same one.
Mount the sandbox-aware dial-cli skill so the agent knows the CLI runs keyless
in there and never asks for credentials. container/skills/ is mounted read-only
into every agent container (at /app/skills) — which is why the key, not the
skill file, is what gets scoped per agent:
container-skills/dial-cli/SKILL.md -> container/skills/dial-cli/SKILL.mdRebuild the image so the CLI lands. On an install that fetches a published image this adds Dial as a layer on top of it; on one that builds its own it rebuilds:
./container/build.shRegister the credential with OneCLI
Read the API key from the host auth file — the single source of truth, written
by dial auth login / dial auth verify-otp — and store it in the OneCLI vault
of the gateway the onecli CLI writes to (the one the check above read), for
api.getdial.ai, through
scripts/dial-secret.ts. It always writes the value:
an existing "Dial API" secret may hold a previous account's key (re-onboarding,
switching accounts, or rotating the key). The existing entry is updated in place,
so its id and grants stay, including another install's on a shared gateway; a new
one is attached to no agent. The key goes straight from the file to the
gateway's API, never on argv or stdout. The step prints only the secret id, which
the attach step below uses, so the attach cannot run with any other key:
: "OneCLI gateway {{onecli_gateway}}, Dial agents {{dial_scope}}"; pnpm exec tsx .claude/skills/add-dial-tool/scripts/dial-secret.tsAttach the key to the chosen agents
NanoClaw gives every agent group its own OneCLI agent whose identifier is the
group id, created on the group's first spawn. For each agent group of this
install: a chosen group gets the Dial secret attached, and a chosen group
that has never spawned gets its OneCLI agent created now, holding the Dial key
(NanoClaw adds its model credential on its first spawn; if the group spawns
meanwhile, its agent is read back instead). Every other group has the Dial
secret detached first, so a failed attach never leaves an unchosen group holding
the key; this also re-narrows an upgraded install where the 1.44 conversion gave
the key to every agent. A group with no OneCLI agent is left without one. Attaching and detaching are idempotent and touch only this secret,
so each agent's other grants stay. Agents that are not this install's groups
(another install's, or OneCLI's default agent) are left alone. It runs even when an earlier step such as the image build failed, so
a replaced key is never left attached to nobody. The step prints allowed: or
withheld: per group:
A=$(printf '%s' '{{dial_scope}}' | tr -d ' '); S='{{dial_secret}}'; G=$(ncl groups list --json --limit 100000) || { echo "could not list agent groups — is the NanoClaw host running?" >&2; exit 1; }; AG=$(onecli agents list --max 0) || { echo "could not list OneCLI agents" >&2; exit 1; }; AG=$(printf '%s' "$AG" | jq -ce 'if type == "array" then . else .data end | arrays | if all(type == "object" and (.id | type) == "string" and .id != "" and (.identifier | type) == "string") then . else error("bad agent list") end') || { echo "could not read the OneCLI agent list" >&2; exit 1; }; printf '%s' "$G" | jq -e '(.data | type) == "array" and all(.data[]; (.id | type) == "string" and (.id | test("\\A[A-Za-z0-9_-]+\\z")))' >/dev/null || { echo "could not read the agent group list" >&2; exit 1; }; L=$(printf '%s' "$G" | jq -r '.data[] | "\(.id)\t\(.name | tostring | gsub("[\t\n\r]"; " "))"') || { echo "could not read the agent group list" >&2; exit 1; }; printf '%s\n' "$L" | while IFS="$(printf '\t')" read -r gid gname; do [ -n "$gid" ] || continue; case ",$A," in *,all,*|*,"$gid",*) ;; *) aid=$(printf '%s' "$AG" | jq -r --arg g "$gid" '.[] | select(.identifier==$g) | .id') || exit 1; if [ -n "$aid" ]; then onecli agents grants detach-secret --id "$aid" --secret-id "$S" >/dev/null || { echo "could not detach the Dial secret from $gname ($gid)" >&2; exit 1; }; fi; echo "withheld:$gid";; esac; done || exit 1; printf '%s\n' "$L" | while IFS="$(printf '\t')" read -r gid gname; do [ -n "$gid" ] || continue; case ",$A," in *,all,*|*,"$gid",*) aid=$(printf '%s' "$AG" | jq -r --arg g "$gid" '.[] | select(.identifier==$g) | .id') || exit 1; [ -n "$aid" ] || aid=$(onecli agents create --name "$gname" --identifier "$gid" 2>/dev/null | jq -r '.id // empty'); [ -n "$aid" ] || aid=$(onecli agents list --max 0 | jq -r --arg g "$gid" '(if type == "array" then . else .data end)[] | select(.identifier==$g) | .id'); [ -n "$aid" ] || { echo "could not create an OneCLI agent for $gname ($gid)" >&2; exit 1; }; onecli agents grants attach-secret --id "$aid" --secret-id "$S" >/dev/null || { echo "could not attach the Dial secret to $gname ($gid)" >&2; exit 1; }; echo "allowed:$gid";; esac; doneHand the tool to running agents
container/skills/ is mounted read-only into every agent container, and each
group's .claude-shared/skills/ holds symlinks into that mount that are synced
when the container spawns — so nothing is copied per session. A running agent
keeps its old image until it respawns, so restart every group; without a
--message each one comes back on its next message, on the new image, with the
CLI on PATH and the skill in place. This is a restart effect, so it does not
fire after an earlier step bounced — agents keep the image they have until the
gap above is fixed and the skill is re-applied:
ncl groups list --json --limit 100000 | jq -r '.data[].id' | while read -r gid; do ncl groups restart --id "$gid" >/dev/null || { echo "could not restart $gid" >&2; exit 1; }; doneDone
The chosen agents can now use Dial from inside their containers; the others do
not hold the key. Auth is injected by OneCLI. Check the error code before the
status, which the gateway keeps from Dial (401, 403, or 400): access_restricted
means the agent does not hold the Dial key (it was not chosen, or was created
after the last run: run /add-dial-tool again to change that), and
credential_not_found or app_not_connected means no stored key matched the
request. A 401 with none of these codes comes from Dial and means the key is
stale.
Check which agents hold it with onecli agents grants list --id <agent-id>. Verify from a
chat with a chosen agent: "run dial doctor" or "text +1… hi".
To uninstall: see REMOVE.md. To wire Dial as a messaging
channel too, run /add-dial.
Troubleshooting
command -v onecli fails. OneCLI is not installed or not on PATH. Run
/init-onecli, then re-run this skill.
The gateway version check stops. The gateway is not on the pinned 1.45, or
an agent is still in all mode because the gateway's one-time grant conversion
has not finished. Follow docs/onecli-upgrades.md; do not attach the key by hand.
ncl can't reach the host. The agent list and the attach step talk to the
running NanoClaw service. Start it (pnpm run dev, or restart the service) and
re-run.
unknown agent group. An id in your answer is not in ncl groups list. Copy
the ag-… id exactly; names are not accepted.
no Dial API key in the host auth file. The sign-in did not complete. Run
dial auth login <email> --force, then dial auth verify-otp --code <code>, and
re-run.
A chosen agent gets 401 or access_restricted. Check the error code
first. access_restricted comes from the gateway, whatever the status: the
agent group was created after the last run, so it does not hold the key.
credential_not_found or app_not_connected means no stored key matched the
request. A 401 with none of these codes comes from Dial: the vault secret is
stale (a different account's key, or a rotated one). Re-run this skill: it
rewrites the secret with the key the host is signed in with and attaches it to
the agents you choose.
An agent you left out can still use Dial. It holds the key from before: an
agent that is not one of this install's groups (another install on the same
gateway, or OneCLI's default agent) is never touched. Detach it by hand with
onecli agents grants detach-secret --id <agent-id> --secret-id <dial-secret-id>.
dial: command not found inside a container. The image predates the manifest
entry. Run ./container/build.sh, then ncl groups restart --id <group-id> so the
agent respawns on it.
Trending
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Who's talking about qwibitai/nanoclaw
- Jordan Urbs“How to Use NanoClaw (Better Than OpenClaw?)”YouTube · Mar 6, 2026 · 30k views
- Yar Malik“OpenClaw vs ZeroClaw vs PicoClaw vs NullClaw vs NanoBot vs TinyClaw vs NanoClaw — Full Comparison”YouTube · Feb 27, 2026 · 9.8k views
- Aashish Pahwa“3 Free Alternatives To Openclaw”YouTube · Mar 11, 2026 · 3.2k views
- Mike's Ai Forge“NanoClaw + Docker: Build a 100% Secure AI Agent”YouTube · Mar 20, 2026 · 1.9k views
- Prism Labs“Anthropic Is Eating the OpenClaw Ecosystem (And They Know It)”YouTube · Mar 19, 2026 · 1.7k views
The biggest 5 of 79 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 79
Talked about on GitHub, YouTube, Bluesky and Hacker News (79 times).
On GitHub · 50
- Feb 22, 2026Nanoclaw needs a skill marketplace/registry — nanocoai/nanoclaw17 reactions · 9 comments
- Mar 6, 2026🦞 OpenClaw 生态日报 2026-03-06 — duanyytop/agents-radar3 reactions
- Mar 3, 2026🦞 OpenClaw 生态日报 2026-03-03 — duanyytop/agents-radar3 reactions · 1 comment
- Mar 25, 2026feature: make it possible to select alternatives for software we installing (e.g. for openclaw) — Osmantic/ODS2 reactions · 4 comments
- Mar 3, 2026🦞 OpenClaw 生态日报 2026-03-03 — duanyytop/agents-radar2 reactions
45 more on GitHub
- May 4, 2026NanoClaw — community-scripts/DevScripts1 reaction
- Mar 7, 2026🦞 OpenClaw 生态日报 2026-03-07 — duanyytop/agents-radar1 reaction
- Mar 2, 2026🦞 OpenClaw 生态日报 2026-03-02 — duanyytop/agents-radar1 reaction
- Feb 26, 2026🦞 OpenClaw 生态日报 2026-02-26 — duanyytop/agents-radar1 reaction
- Feb 22, 2026Research: Architecture for standalone agent app with model layer, agentic loops, and messaging integration — laurentenhoor/devclaw1 reaction · 3 comments
- Feb 20, 2026fix: signal active containers to close when a scheduled task is enqueued — nanocoai/nanoclaw1 reaction · 4 comments
- Feb 14, 2026[SECURITY] [Upstream PR #216] Secret sanitization bypass via /proc and Read tool — nanocoai/nanoclaw1 reaction · 1 comment
- Jul 27, 2026Weekly upstream sync 2026-07-27 — vweaver/nanoclaw0 reactions · 1 comment
- Jun 18, 2026[Security] Non-owner members can create persistent child agents without approval in NanoClaw owner-initialized groups — nanocoai/nanoclaw0 reactions
- Jun 14, 2026[Security] Local gateway approval bypass via unauthenticated loopback webhook — nanocoai/nanoclaw0 reactions
- May 19, 2026fix(webhook) + docs: восстановление webhook + откат NanoClaw v0.1 + research — botkin-health/Botkin0 reactions
- May 9, 2026Setup script silently deletes existing groups/*/CLAUDE.md without warning or backup — nanocoai/nanoclaw0 reactions
- May 6, 2026feat: add NanoClaw v2 script — community-scripts/DevScripts0 reactions · 1 comment
- May 6, 2026feat: add NanoClaw v2 script — community-scripts/DevScripts0 reactions · 1 comment
- May 4, 2026New Script: NanoClaw — community-scripts/DevScripts0 reactions · 1 comment
- Apr 29, 2026Research: Memory approach of common non-coding Agents — 8monkey-ai/hebo-platform0 reactions · 20 comments
- Apr 27, 2026feat(channels): agent-channels:{telegram,discord,slack} layers — minimal MIT-cribbed adapters — tangle-network/starter-foundry0 reactions · 2 comments
- Apr 19, 2026feat(setup): add register-task step (carry until qwibitai#1857 lands) — sagri-tokyo/nanoclaw0 reactions
- Mar 30, 2026NanoClaw の Fork とローカル初期セットアップ — Helicoir/nanoclaw0 reactions
- Mar 30, 2026Feature: Native typing indicator via iLink sendtyping API — WEIFENG2333/ilink-bot0 reactions
- Mar 30, 2026Feature: Native typing indicator via iLink sendtyping API — co-pine/wx-robot-ilink0 reactions
- Mar 25, 2026fix: LID JID fallback via senderPn, warn on unmatched messages — nanocoai/nanoclaw-whatsapp0 reactions · 1 comment
- Mar 24, 2026Setup: IPC fix + Dev Agent configuration — yaelandau22/nanoclaw0 reactions
- Mar 23, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-23 — compasify/agents-radar0 reactions
- Mar 22, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-22 — compasify/agents-radar0 reactions
- Mar 21, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-21 — compasify/agents-radar0 reactions
- Mar 20, 2026skill: add-group-persona — per-group agent personas from WhatsApp group description — nanocoai/nanoclaw-whatsapp0 reactions
- Mar 20, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-20 — compasify/agents-radar0 reactions
- Mar 19, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-19 — compasify/agents-radar0 reactions
- Mar 18, 2026Prefer injected credentials and preserve service env — nanocoai/nanoclaw0 reactions · 2 comments
- Mar 18, 2026## Summary — Shinogreat/docs0 reactions
- Mar 17, 2026Add image support — send and receive images via Telegram — kylenessen/nanoclaw0 reactions
- Mar 16, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-16 — compasify/agents-radar0 reactions
- Mar 15, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-15 — compasify/agents-radar0 reactions
- Mar 14, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-14 — compasify/agents-radar0 reactions
- Mar 13, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-13 — compasify/agents-radar0 reactions
- Mar 12, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-12 — compasify/agents-radar0 reactions
- Mar 11, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-11 — compasify/agents-radar0 reactions
- Mar 10, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-10 — compasify/agents-radar0 reactions
- Mar 9, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-09 — compasify/agents-radar0 reactions
- Mar 8, 2026🦞 Bản tin hàng ngày hệ sinh thái OpenClaw 2026-03-08 — compasify/agents-radar0 reactions
- Mar 7, 2026🦞 OpenClaw 生态日报 2026-03-07 — compasify/agents-radar0 reactions
- Mar 5, 2026fix: Expose ANTHROPIC_MODEL from .env to agent — nanocoai/nanoclaw0 reactions · 1 comment
- Mar 4, 2026持续跟进前沿技术更新,不断优化marrow-core — zrr1999/marrow-core0 reactions
- Mar 3, 2026SKILL: unified channel media support (2-way, lazy retrival) — nanocoai/nanoclaw0 reactions · 3 comments
On YouTube · 22
- Mar 6, 2026How to Use NanoClaw (Better Than OpenClaw?) — Jordan Urbs30k views · 43 comments
- Feb 27, 2026OpenClaw vs ZeroClaw vs PicoClaw vs NullClaw vs NanoBot vs TinyClaw vs NanoClaw — Full Comparison — Yar Malik9.8k views · 33 comments
- Mar 11, 20263 Free Alternatives To Openclaw — Aashish Pahwa3.2k views · 2 comments
- Mar 20, 2026NanoClaw + Docker: Build a 100% Secure AI Agent — Mike's Ai Forgesays it tested it1.9k views · 3 comments
- Mar 19, 2026Anthropic Is Eating the OpenClaw Ecosystem (And They Know It) — Prism Labs1.7k views · 1 comment
17 more on YouTube
- Mar 19, 2026Every company needs to figure out their AI agent strategy. — NanoClaw1.4k views
- Apr 6, 202624시간 일하는 AI 개발자 만들기 — NanoClaw + Discord 셋업 가이드#NanoClaw #Claude #디스코드봇 #AI에이전트 #Docker #ClaudeCode — 빠른개발소식1.4k views · 9 comments
- Apr 23, 2026Announcing NanoClaw v2, in partnership with @VercelHQ ✨ — NanoClaw1.2k views
- Feb 14, 2026NanoClaw Lightweight Secure AI Agent Assistant for WhatsApp — Eddy Says Hi #EddySaysHi1.2k views
- May 5, 2026Building Small, Secure AI Agents with NanoClaw's Creator — NanoClaw853 views · 1 comment
- Mar 13, 2026NanoClaw is a safer OpenClaw — NEXT with John Koetsier783 views · 5 comments
- Mar 24, 2026How I move knowin' my NanoClaw agents don't hold any of my API keys — NanoClaw601 views
- May 3, 20263 Tips for Building Better AI Agent Skills — NanoClaw481 views
- Feb 28, 2026Nano Claw vs OpenClaw: Cheaper, Safer, or Just Hype? — Vibe Code Wiki367 views · 1 comment
- May 3, 2026Give your AI agent actual guardrails — NanoClaw339 views
- Feb 22, 2026[Product Reviw] 신뢰 가능한 OpenClaw? NanoClaw 🦞 — LOADING_265 views
- May 1, 2026How I Set Up My Personal AI Assistant (Claude + NanoClaw + Telegram) — Tino Muchenje | AI in Practice251 views · 2 comments
- May 6, 2026Nanoclaw: Containerized Claude Agent for Slack and WhatsApp — VibeDev205 views
- Feb 19, 2026The NEW #NanoClaw is Finally Here! — AskGuru187 views
- May 1, 2026I Built an AI Chief of Staff. One Month In. | AI in Practice — Tino Muchenje | AI in Practice167 views
- Mar 18, 2026The Future of Open-Source Contributions in the AI Age — Packet Pushers115 views
- Apr 24, 2026Best AI Agent Product Launch Video | Nanoclaw — Luceo Studio92 views
On Bluesky · 6
- Feb 12, 2026Uh so I highly recommend setting this up (I used nanoclaw: github.com/qwibitai/nan... combined with Telegram). Most of the benefits of… — @paulgp.com19 likes and reposts · 2 replies
- Feb 21, 2026Self-modifying AI agents: "There are no configuration files to learn. Just tell Claude Code what you want. Or run /customize for guided… — @narphorium.com2 likes and reposts
- Apr 6, 2026📦 qwibitai / nanoclaw ⭐ 26,620 (+91) 🗒 TypeScript A lightweight alternative to OpenClaw that runs in containers for security. Connects to… — @github-trending-js.bsky.social1 likes and repost
- Mar 16, 2026Próbáld inkább ezt: github.com/qwibitai/nan... — @kispocok.hu1 likes and repost · 1 reply
- Feb 24, 2026NanoClaw github.com/qwibitai/nan... — @annjose.com1 likes and repost
1 more on Bluesky
- Feb 24, 2026Check it out here: github.com/qwibitai/nan... — @jainamparmar.bsky.social0 likes and reposts · 1 reply
On Hacker News · 1
- Feb 27, 2026Show HN: Badge that shows how well your codebase fits in an LLM's context window88 points · 41 comments
Other versions4 projects use a version of this.
Word for word · 2
- gavrielc/nanoclaw★ 31k100% same
- nanocoai/nanoclaw★ 31k100% same
Edited · 2
- TomGranot/groupguard★ 362% same
- prathish-ks/isthmus★ 254% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository55 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- container/CLAUDE.mdCLAUDE.md
- add-anydocSkill
- add-atomic-chat-toolSkill
- add-clidashSkill
- add-codexSkill
- add-cursorSkill
- add-dashboardSkill
- add-deltachatSkill
- add-dial-numberSkill
- add-dialSkill
- add-discordSkill
- add-emacsSkill
- add-gchatSkill
- add-githubSkill
- add-imessageSkill
- add-iron-proxySkill
- add-karpathy-llm-wikiSkill
- add-linearSkill
- add-macos-statusbarSkill
- add-matrixSkill
- add-mattermostSkill
- add-mnemonSkill
- add-ollama-providerSkill
- add-ollama-toolSkill
- add-onecliSkill
- add-opencodeSkill
- add-resendSkill
- add-rtkSkill
- add-signalSkill
- add-slackSkill
- add-tavily-toolSkill
- add-teamsSkill
- add-telegramSkill
- add-vercelSkill
- add-webexSkill
- add-wechatSkill
- add-whatsapp-cloudSkill
- add-whatsappSkill
- customizeSkill
- debugSkill
- init-first-agentSkill
- learnSkill
- manage-channelsSkill
- manage-mountsSkill
- migrate-from-openclawSkill
- migrate-from-v1Skill
- migrate-memorySkill
- migrate-nanoclawSkill
- migrate-slack-agentsSkill
- setupSkill
- slack-a2a-roomsSkill
- slack-agent-flowSkill
- update-nanoclawSkill
- update-skillsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

