add-telegram
Skill31k starsChanged 9 days agoMITView on GitHub
Add Telegram channel integration via Chat SDK.
- Reads credentials
We split this skill into the rules it gives an agent
7 rules. 0 are common, 0 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 14 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 50
Add the pair-telegram loader to the STEPS map in setup/index.ts, inside the dormant marker region (skipped if already present — …
- Very specific: line 143
Only when add_another is yes.
- Very specific: line 226
Run the pairing handshake.
- Very specific: line 254
If you're in the middle of /setup, return to the setup flow now.
- Very specific: line 259
After the first DM is paired, an owner or global admin can send /connect_group in their bot DM.
- Very specific: line 271
If the negative Telegram chat ID is already known, the fully manual ncl equivalent is:
- Very specific: line 310
Everything green but no replies: Run pnpm exec vitest run src/channels/telegram-registration.test.ts — red means the barrel import or the …
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Add Telegram Channel
Adds Telegram bot support via the Chat SDK bridge. NanoClaw doesn't ship
channels in trunk — this skill copies the Telegram adapter, its pairing helper,
and their tests in from the channels branch. The
pair-telegram setup step is maintained in trunk, so it is not copied here.
The mechanical steps under Apply 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.
Re-running with a bot already configured can add a second one instead of re-pairing the first; see Add another bot under Credentials.
Apply
1. Copy the adapter, helpers, and tests
Fetch the channels branch and copy the Telegram adapter, its pairing helper
(with its test), and the focused adapter tests into place (overwrite — the
branch is canonical):
src/channels/telegram.ts
src/channels/telegram-pairing.ts
src/channels/telegram-pairing.test.ts
src/channels/telegram-registration.test.ts
src/channels/telegram-connect-group.test.ts
src/channels/telegram-instances-registration.test.ts
src/channels/telegram-pairing-interceptor.test.ts2. Register the adapter
Append the self-registration import to the channel barrel (skipped if the line is already present). This one line is the skill's only reach-in into core:
import './telegram.js';3. Register the pairing setup step
Add the pair-telegram loader to the STEPS map in setup/index.ts, inside the
dormant marker region (skipped if already present — pair-telegram ships in core,
so this idempotent-skips on a normal install, but is expressed for a
clean-upstream rebuild). The pairing handshake below spawns this step:
'pair-telegram': () => import('./pair-telegram.js'),4. Install the adapter package
Pinned to an exact version — the supply-chain policy rejects ranges and latest:
@chat-adapter/telegram@4.41.15. Build and validate
Build first: it guards the typed createChatSdkBridge(...) core call and proves
the dependency is installed. Then run the focused tests.
pnpm run buildpnpm exec vitest run src/channels/telegram-registration.test.ts src/channels/telegram-connect-group.test.tstelegram-registration.test.ts imports the real channel barrel and asserts the
registry contains telegram. It goes red if the import line is deleted or drifts,
if the barrel fails to evaluate, or if @chat-adapter/telegram isn't installed
(the import throws) — so it also covers the dependency from step 4. End-to-end
delivery against a real bot is verified manually once the service runs.
Credentials
An install that already holds TELEGRAM_BOT_TOKEN can add a second bot instead of
re-pairing the first. Check which case this is; the answer steers the rest of the
flow:
grep -qsE '^TELEGRAM_BOT_TOKEN=.+' .env && echo yes || echo no[ "{{has_default_bot}}" = yes ] && echo ask || echo noOn a first install there is no bot to add another to, so add_another is no and
the steps below create and configure the first bot. When a bot is already configured, ask the
user whether to keep using it (no: the stored token stays as it is and the flow
re-pairs that bot) or to add another one (yes: the first bot's steps are satisfied
by the stored token and change nothing; the new bot is handled under Add another
bot):
A Telegram bot is already configured (TELEGRAM_BOT_TOKEN in .env). Add another bot (yes), or keep using the existing one (no)?Bot creation in Telegram is human and interactive — no parser can click through BotFather. The adapter is installed and registered, but it can't receive a message until the bot exists. On a first install, tell the user (a bot that is already configured keeps its stored token below; a second one is created under Add another bot):
Create the Telegram bot:
1. Open Telegram and message @BotFather — Telegram's official bot for creating bots.
2. Send /newbot and follow the prompts: a friendly name, then a username that must end in "bot".
3. Copy the bot token it gives you (looks like 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11a).
4. Planning to use the bot in group chats? Send /mybots → your bot → Bot Settings → Group Privacy → Turn off, so the bot can see all messages and not just @mentions.Collect the bot token and store it — the bridge reads it from .env (set-if-absent,
so a value you've already filled in is never overwritten) and syncs it to the
container:
Paste the bot token from BotFather (looks like `123456:ABC-DEF...`).TELEGRAM_BOT_TOKEN={{bot_token}}Confirm the token works and capture the bot's handle — getMe returns the bot
account and fails here if the token is bad. You'll use the handle to open the
right chat just before pairing:
curl -sf https://api.telegram.org/bot{{bot_token}}/getMe | jq -er '.result.username'Add another bot
Only when add_another is yes. The second bot is a named adapter instance: its
short name becomes the registry key telegram-<name> and, uppercased with dashes as
underscores, the token key suffix (gh-bot stores TELEGRAM_BOT_TOKEN_GH_BOT). A
name whose TELEGRAM_BOT_TOKEN_<NAME> key is already set is taken (storing under it
would overwrite that bot's token), so it is refused:
Short name for the new bot (lowercase letters, digits, dashes; e.g. `mega`). Pick one whose token key is not already set in .env.echo {{bot_name}} | tr 'a-z-' 'A-Z_'! grep -qs '^TELEGRAM_BOT_TOKEN_{{bot_name_env}}=.' .envTo pair an already-configured named bot again instead (its token is stored and the
service restarted, but pairing failed or was cancelled), run
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main --instance telegram-<name>,
then /init-first-agent with --instance telegram-<name> if it was never wired.
The second bot is created with @BotFather exactly like the first. Tell the user:
Create the second Telegram bot: message @BotFather, send /newbot and follow the prompts (its own friendly name, then a username that must end in "bot"), and copy the token it gives you. It must be a different bot from the one already configured. Planning to use it in group chats? Send /mybots → that bot → Bot Settings → Group Privacy → Turn off.Then confirm its token with getMe as above:
Paste the second bot's token from BotFather (looks like `123456:ABC-DEF...`). It must belong to a different bot than the one already configured.curl -sf https://api.telegram.org/bot{{bot_token_2}}/getMe | jq -er '.result.username'A second token that resolves to the same bot as the first (its handle matches) is refused here, before anything is written: it would only start a second poller on that bot, which the adapter refuses at startup anyway.
[ "{{bot_username_2}}" != "{{bot_username}}" ]Store the token under its suffixed key and list the name in TELEGRAM_INSTANCES,
merged with the names already there. Both writes go through the set-env step,
which updates an existing key and logs the key, never the value:
pnpm exec tsx setup/index.ts --step set-env -- --key TELEGRAM_BOT_TOKEN_{{bot_name_env}} --value {{bot_token_2}}pnpm exec tsx setup/index.ts --step set-env -- --key TELEGRAM_INSTANCES --value "$({ sed -n 's/^TELEGRAM_INSTANCES=//p' .env; echo {{bot_name}}; } | tr ',' '\n' | grep . | sort -u | paste -sd, -)"The registry key is how pairing and wiring address the new bot:
echo telegram-{{bot_name}}Restart
Restart the service so it loads the Telegram adapter and the token you just stored, and wait for its CLI socket. The adapter must be live and polling before pairing — it's the thing that observes the code you send:
bash setup/lib/restart.shPair your chat
Telegram tokens carry no user binding, so the agent proves you own the chat with a one-time pairing handshake: it issues a 6-digit code, you send those exact 6 digits to the bot from the chat you want to register, and the live adapter matches them. Open the bot first so you're on the right screen when the code appears. Tell the user:
Open @{{bot_username}} (https://telegram.me/{{bot_username}}) in Telegram now and keep it on screen — a 6-digit pairing code is about to appear in this terminal. When it does, send just those 6 digits to the bot as a message (in a group chat with Group Privacy on, prefix them with @{{bot_username}}). A wrong guess is rejected and a fresh code is issued automatically.Run the pairing handshake. It prints the code, streams "waiting…" and wrong-code
feedback while it watches for your message, and resolves your chat address
telegram:<chatId> plus your Telegram user id once the code matches:
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent mainA second bot pairs through its own instance key: the code is bound to
telegram-<name>, the first bot ignores it, and the paired chat gets its own
messaging-group row for that instance (a bot cannot message a user who never opened
it, so the chat id known from the first bot is not reused). Tell the user:
Open @{{bot_username_2}} (https://telegram.me/{{bot_username_2}}) in Telegram now and keep it on screen: a pairing code is about to appear in this terminal. Send just those digits to this new bot, not to the first one. A wrong guess is rejected and a fresh code is issued automatically.pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main --instance {{instance}}owner_handle (your Telegram user id) and platform_id (telegram:<chatId>)
are what the owner-wiring step needs. The greeting goes out over the same chat as
soon as pairing completes. For a second bot, instance (telegram-<name>) comes
along too: pass it as --instance to scripts/init-first-agent.ts so the DM row,
the wiring and the welcome all target that bot (see /init-first-agent).
Next Steps
If you're in the middle of /setup, return to the setup flow now. Otherwise wire
this channel with /init-first-agent (or /manage-channels).
Connect a group
After the first DM is paired, an owner or global admin can send /connect_group in
their bot DM. The bot replies with Telegram's native group picker. Choosing a
group adds the bot and posts an addressed start command there; NanoClaw then
sends its existing channel-registration approval card to an eligible
owner/admin DM. Nothing is wired until that card is approved.
The picker link is navigation, not authorization: it carries no secret and
creates no role, member, messaging-group, or wiring row. The existing approval
flow remains the authority. If the picker is unavailable, add the bot to the
group manually and post /start@{{bot_username}} connect there to reach the
same approval card.
If the negative Telegram chat ID is already known, the fully manual ncl
equivalent is:
ncl messaging-groups create --channel-type telegram --platform-id "telegram:<chat-id>" --name "<group-name>" --is-group 1
ncl wirings create --channel-type telegram --platform-id "telegram:<chat-id>" --agent-group "<folder>" --session-mode sharedwirings create applies Telegram's group defaults and creates the companion
destination row. Prefer /connect_group when the ID is unknown; it discovers
the group and keeps the approval card in the loop.
Channel Info
- type:
telegram - terminology: Telegram calls them "groups" and "chats." A "group" has multiple members; a "chat" is a 1:1 conversation with the bot.
- platform-id-format:
telegram:{chatId}(e.g.telegram:123456789for a DM,telegram:-1001234567890for a group — negative chat IDs are groups/channels). - how-to-find-id: Do NOT ask the user for a chat ID. Pair the first DM with
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main. For another group, have an owner/global admin send/connect_groupin that paired DM, choose the group, and approve the resulting channel-registration card. The service must be running — the polling adapter observes both flows. - instances:
TELEGRAM_BOT_TOKENis the default instancetelegram;TELEGRAM_INSTANCES=<name>,...plusTELEGRAM_BOT_TOKEN_<NAME>addstelegram-<name>(reference:.claude/skills/telegram-multi-instance/SKILL.mdon thechannelsbranch). - supports-threads: no
- typical-use: Interactive chat — direct messages or small groups
- default-isolation: Same agent group if you're the only participant across multiple chats. Separate agent group if different people are in different groups.
Troubleshooting
The bot token paste is rejected. A BotFather token is <numeric bot id>:<35+ character secret> — e.g. 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11a. Pasting only the part after the colon, or the bot's @username, won't pass. Recover the full token any time by sending /token to @BotFather.
getMe fails. The token was revoked (a /revoke or a fresh /token invalidates the old value) or picked up whitespace in the paste. Get the current token from BotFather and re-paste it.
Pairing never completes. The live adapter is what observes the code, so the service must be running — the restart step comes before pairing for exactly this reason. Send just the 6 digits from the exact chat you want registered; in a group with Group Privacy on, prefix them with @<botname>. Wrong guesses are fine (a fresh code is issued, up to 5 times), but a dead adapter waits forever.
The bot ignores group messages. Group Privacy is on, so the bot only sees addressed commands and replies, not ordinary @bot text. BotFather → /mybots → your bot → Bot Settings → Group Privacy → Turn off — then remove and re-add the bot to the group so the change takes effect.
/connect_group is denied. The Telegram sender is not a NanoClaw owner or global admin. The command never grants privileges; inspect them with ncl roles list and grant the intended role explicitly if appropriate.
The group was chosen but no approval card arrived. Confirm the service is running and post /start@{{bot_username}} connect in the group. The card is delivered to an eligible owner/admin DM, not to the group.
The second bot never comes online. TELEGRAM_INSTANCES and TELEGRAM_BOT_TOKEN_<NAME> are read once at start, so restart after adding a bot. A name whose token equals one already in use is skipped with a warning in logs/nanoclaw.error.log (Telegram allows one poller per token): give each bot its own BotFather token. A pairing code issued for telegram-<name> is ignored by the first bot; send it to the new one.
Everything green but no replies. Run pnpm exec vitest run src/channels/telegram-registration.test.ts — red means the barrel import or the @chat-adapter/telegram install drifted, so re-run the Apply steps. If green, restart again (bash setup/lib/restart.sh) and check logs/nanoclaw.error.log for token errors.
Trending
Quiet since July.about the whole repository
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 versions16 projects use a version of this.
Word for word · 2
- gavrielc/nanoclaw★ 31k100% same
- nanocoai/nanoclaw★ 31k100% same
Edited · 5
- microsoft/amplifier-app-nanoclaw★ 422% same
- TomGranot/groupguard★ 3100% same
- prathish-ks/isthmus★ 2100% same
- mcarmona1064-cell/clawbridge-codex★ 122% same
- ss2code/nanoclaw-ops★ 124% same
Wrote their own version · 9
- Runchuan-BU/BioClaw★ 405same name
- DingyangLyu/MatClaw★ 98same name
- b1rdmania/ghostclaw★ 91same name
- 0-CYBERDYNE-SYSTEMS-0/FFT_nano★ 4same name
- breakcafe/picoclaw★ 1same name
- juancruzmunozalbelo/swarmclaw★ 1same name
- tjg37/ironclaw★ 1same name
- Guykerem/podium★ 0same name
- mrsandman17/chief-of-staff★ 0same name
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.
Used alongsideProjects with it also use add-voice-transcription, add-telegram-swarm and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
juancruzmunozalbeloSkilladd-voice-transcription
Add voice message transcription to NanoClaw using OpenAI's Whisper API. Automatically transcribes WhatsApp voice notes so the agent can read and respond to them.
Also in 5 projects that use this
juancruzmunozalbeloSkilladd-telegram-swarm
Add Agent Swarm (Teams) support to Telegram. Each subagent gets its own bot identity in the group. Requires Telegram channel to be set up first (use /add-telegram). Triggers on "agent swarm", "agent teams telegram", "telegram swarm", "bot pool".
Also in 6 projects that use this
jaypylesSkilladd-gmail
Add Gmail integration to NanoClaw. Can be configured as a tool (agent reads/sends emails when triggered from Discord) or as a full channel (emails can trigger the agent, schedule tasks, and receive replies). Guides through GCP OAuth setup and implements the integration.
Also in 5 projects that use this
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-dial-toolSkill
- 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-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.

