Agent skill

DeltaChat Channel for NanoClaw

by nanocoai in nanocoai/nanoclaw

Connects NanoClaw to DeltaChat, which carries end-to-end encrypted messages over ordinary email, using a native adapter and no Chat SDK bridge.

MITAuto-check: notesProductivity & Automation

Install DeltaChat Channel for NanoClaw

skills CLI
$ npx skills add nanocoai/nanoclaw --skill add-deltachat -a claude-code

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

GitHub CLI
$ gh skill install nanocoai/nanoclaw add-deltachat --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/nanocoai/nanoclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-deltachat .claude/skills/add-deltachat && 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
add-deltachat
GitHub stars
31k
Token cost
~2.7k tokens
SKILL.md length
1,158 words
Files
2
Skills in repo
59
Repo updated
First seen
Licence
MIT

At a glance

Connects NanoClaw to DeltaChat, which carries end-to-end encrypted messages over ordinary email, using a native adapter and no Chat SDK bridge.

  • Works in 4 steps: Copy the adapter and its registration test → Append the self-registration import → Install the adapter package (pinned) → …
  • Talking to a NanoClaw agent through end-to-end encrypted DeltaChat messages
  • SKILL.md covers Install, Account Setup, Credentials and Wiring, plus 3 more sections
  • Calls pnpm and node; reaches i.delta.chat; needs DC_PASSWORD

What it does

DeltaChat messages travel by email with Autocrypt and OpenPGP encryption, and this skill links that channel to NanoClaw through the `@deltachat/stdio-rpc-server` JSON-RPC subprocess. The adapter is plain Node.js. Installation copies the adapter and a registration test from the `channels` branch, appends a self-registration import to `src/channels/index.ts`, installs the pinned package and builds the project.

The one automated test confirms the channel registry contains `deltachat`, and it also fails if the import line drifts or the package is missing. Real delivery is checked by hand afterward. A dedicated email account is strongly recommended, because it collects encrypted messages and keys, and the provider should be checked against the DeltaChat provider list. IMAP defaults to SSL/TLS on port 993 and SMTP to STARTTLS on port 587, with credentials such as `DC_EMAIL` and `DC_PASSWORD` kept in `.env`.

When your agent uses it

  • Talking to a NanoClaw agent through end-to-end encrypted DeltaChat messages
  • Giving the agent its own email-backed chat identity
  • Checking that the DeltaChat adapter is registered after an upgrade

Example prompts

  • “Add the DeltaChat channel to NanoClaw using the dedicated mailbox I created for the bot.”
  • “Find the right IMAP and SMTP hostnames for my domain so I can fill in the DeltaChat settings.”
  • “Run the DeltaChat registration test and tell me whether the channel is wired in.”

Requirements

  • A NanoClaw installation with pnpm
  • A dedicated email account with IMAP and SMTP access

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Copy the adapter and its registration test
  2. Append the self-registration import
  3. Install the adapter package (pinned)
  4. Build and validate

What it can do on your machine

Read from SKILL.md and the folder at commit af699e7. 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:

    • pnpm
    • node

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • i.delta.chat

    Also links to:

    • providers.delta.chat

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

  • Credentials

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

    • DC_PASSWORD

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

Context cost

DeltaChat Channel for NanoClaw loads about 2.7k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 1,158 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:53
    S (port 587). Both are configurable via `.env` — see Credentials below.
  • NoteMentions a .env fileSKILL.md:65
    Add to `.env`:
  • NoteMentions a .env fileSKILL.md:78
    d on every startup, so changing them in `.env` and restarting takes effect without wiping the account.
  • NoteMentions a .env fileSKILL.md:83
    read from the process environment (not `.env`). To override them, add `Environment=` lines to the systemd service unit
  • NoteMentions a .env fileSKILL.md:212
    ST`, `DC_SMTP_PORT`) must be present in `.env`.
  • NoteMentions a .env fileSKILL.md:223
    or `DC_SMTP_PORT`/`DC_SMTP_SECURITY` in `.env`
  • NoteMentions a .env fileSKILL.md:227
    P_SECURITY=1` and `DC_SMTP_PORT=465` in `.env`, then restart.

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 nanocoai/nanoclaw at commit af699e7, republished under its MIT licence (© nanocoai). 1,158 words, ~2,711 tokens.

Download SKILL.mdSave it as .claude/skills/add-deltachat/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
add-deltachat
description
Add DeltaChat channel integration via @deltachat/stdio-rpc-server. Native adapter — no Chat SDK bridge. Email-based messaging with end-to-end encryption.

Add DeltaChat Channel

The adapter drives the @deltachat/stdio-rpc-server JSON-RPC subprocess directly — pure Node.js against the DeltaChat core library. Messages are delivered over email with Autocrypt/OpenPGP encryption.

Install

1. Copy the adapter and its registration test

Fetch the channels branch from the configured remote that carries it, then overwrite the skill-owned files with the canonical registry copies:

nccopy
src/channels/deltachat.ts
src/channels/deltachat-registration.test.ts
2. Append the self-registration import

Append to src/channels/index.ts (skip if already present):

ncappend
import './deltachat.js';
3. Install the adapter package (pinned)
ncdep
@deltachat/stdio-rpc-server@2.49.0
4. Build and validate
ncrun
pnpm run build
ncrun
pnpm exec vitest run src/channels/deltachat-registration.test.ts

Both must be clean before proceeding. deltachat-registration.test.ts is the one integration test: it imports the real channel barrel and asserts the registry contains deltachat. It goes red if the import './deltachat.js'; line is deleted or drifts, if the barrel fails to evaluate (so the channel genuinely would not register), or if @deltachat/stdio-rpc-server isn't installed (the import throws) — so it also implicitly verifies the dependency from step 4. Importing is safe: deltachat instantiates the rpc client only in setup() (at host startup), never at import.

End-to-end message delivery against a real email account is verified manually once the service is running — see Wiring and Troubleshooting.

Account Setup

A dedicated email account is strongly recommended — it will accumulate DeltaChat-formatted messages and store encryption keys. Not all providers work well with DeltaChat; check https://providers.delta.chat/ before picking one.

Default security modes: IMAP uses SSL/TLS (port 993), SMTP uses STARTTLS (port 587). Both are configurable via .env — see Credentials below.

To find the correct hostnames for a domain:

bash
node -e "require('dns').resolveMx('example.com', (e,r) => console.log(r))"

Most providers publish their IMAP/SMTP hostnames in their help docs under "manual setup" or "IMAP access."

Credentials

Add to .env:

bash
DC_EMAIL=bot@example.com
DC_PASSWORD=your-app-password
DC_IMAP_HOST=imap.example.com
DC_IMAP_PORT=993
DC_IMAP_SECURITY=1        # 1=SSL/TLS (default), 2=STARTTLS, 3=plain
DC_SMTP_HOST=smtp.example.com
DC_SMTP_PORT=587
DC_SMTP_SECURITY=2        # 2=STARTTLS (default), 1=SSL/TLS, 3=plain

Security settings are applied on every startup, so changing them in .env and restarting takes effect without wiping the account.

Optional settings

The following are read from the process environment (not .env). To override them, add Environment= lines to the systemd service unit or your launchd plist:

VariableDefaultDescription
DC_ACCOUNT_DIRdc-accountDirectory for DeltaChat account data (IMAP state, keys, blobs)
DC_DISPLAY_NAMENanoClawBot display name shown in DeltaChat
DC_AVATAR_PATH(none)Absolute path to avatar image; set at startup only

The /set-avatar command (send an image with that caption) is the easiest way to set the avatar at runtime without modifying the service file. Only users with owner or global admin role can use it.

Restart

Run from your NanoClaw project root:

bash
source setup/lib/install-slug.sh

# Linux
systemctl --user restart $(systemd_unit)

# macOS
launchctl kickstart -k gui/$(id -u)/$(launchd_label)

On first start the adapter configures the email account (IMAP/SMTP credentials, calls configure()). Subsequent starts skip straight to startIo(). Account data is stored in dc-account/ in the project root (or your DC_ACCOUNT_DIR).

Wiring

DMs

DeltaChat contacts cannot be added by email alone — to start a chat, the user must open the bot's invite link in their DeltaChat app or scan its QR code. This triggers the SecureJoin handshake.

After the service starts, the adapter logs the invite URL and writes a QR SVG:

bash
grep "invite link" logs/nanoclaw.log | tail -1
# url field contains the https://i.delta.chat/... invite link
# also written to dc-account/invite-qr.svg (or $DC_ACCOUNT_DIR/invite-qr.svg)

The invite URL is stable (tied to the bot's email and encryption keys) so it stays valid across restarts.

Step 2 — Add the bot in DeltaChat

Two options for the user to connect:

  • Link: Copy the https://i.delta.chat/... URL and open it on the device running DeltaChat. The app recognises it and shows a "Start chat" prompt.
  • QR code: Open dc-account/invite-qr.svg in a browser or image viewer, display it on screen, and scan it from the DeltaChat app using the QR-scan button on the new-chat screen.

After accepting, DeltaChat exchanges keys and creates the chat automatically.

Step 3 — Wire the chat to an agent

Once the first message arrives the router auto-creates a messaging_groups row. Look up the chat ID:

bash
pnpm exec tsx scripts/q.ts data/v2.db \
  "SELECT platform_id, name FROM messaging_groups WHERE channel_type='deltachat' AND is_group=0 ORDER BY created_at DESC LIMIT 5"

Then run /init-first-agent — it creates the agent group, grants the user owner access, and wires the messaging group in one step:

bash
pnpm exec tsx scripts/init-first-agent.ts \
  --channel deltachat \
  --user-id deltachat:user@example.com \
  --platform-id <platform_id from above> \
  --display-name "Your Name"
Groups

Add the bot email to a DeltaChat group. When any member sends a message, the router creates a messaging_groups row with is_group = 1. Run /manage-channels to wire it to an agent group, or wire it directly with ncl — the host service must be running (ncl connects to it over a Unix socket):

bash
# Engage mode/pattern default to the DeltaChat adapter's declared channel
# defaults — for DeltaChat groups that's a name pattern (the platform has no
# mention metadata), so the agent responds when addressed by name.
ncl wirings create --messaging-group-id <mg-id> --agent-group-id <ag-id>

Next Steps

If you're in the middle of /setup, return to the setup flow now.

Otherwise, run /init-first-agent to create an agent and wire it to your DeltaChat DM (see Wiring above), or /manage-channels to wire this channel to an existing agent group.

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

Channel Info

  • type: deltachat
  • terminology: DeltaChat calls them "chats" (1:1 DMs) and "groups"
  • supports-threads: no — DeltaChat has no thread model
  • platform-id-format: numeric chat ID as a string (e.g. "12") — the DeltaChat core's internal chat identifier
  • user-id-format: deltachat:{email} — the contact's email address
  • how-to-find-id: Send a message from DeltaChat to the bot email, then query messaging_groups as shown above
  • typical-use: Personal assistant over DeltaChat DMs; small groups where participants use DeltaChat
  • default-isolation: One agent per bot identity. Multiple chats with the same operator can share an agent group; groups with other people should typically get their own agent group (the default shared session mode already gives each messaging group its own session)
Features
  • File attachments — inbound and outbound; inbound waits up to 30 seconds for large-message download to complete
  • Invite link logged on every startup — URL + QR SVG written to dc-account/invite-qr.svg; see Wiring for the bootstrap flow
  • /set-avatar — send an image with this caption to change the bot's DeltaChat avatar (admin/owner only)
  • Connectivity watchdog — restarts IO if IMAP goes quiet for 20 minutes or connectivity drops below threshold for two consecutive 5-minute checks
  • Network nudge — maybeNetwork() called every 10 minutes to recover from prolonged idle

Not supported: DeltaChat reactions, message editing/deletion, read receipts.

Connectivity model

isConnected() returns true when the internal connectivity value is ≥ 3000:

RangeMeaning
1000–1999Not connected
2000–2999Connecting
3000–3999Working (IMAP fetching)
≥ 4000Fully connected (IMAP IDLE)

Troubleshooting

Adapter not starting — credentials missing
bash
grep "Channel credentials missing" logs/nanoclaw.log | grep deltachat

All six required vars (DC_EMAIL, DC_PASSWORD, DC_IMAP_HOST, DC_IMAP_PORT, DC_SMTP_HOST, DC_SMTP_PORT) must be present in .env.

Account configure fails
bash
grep "DeltaChat" logs/nanoclaw.log | tail -20

Common causes:

  • Wrong IMAP/SMTP hostnames — double-check provider docs
  • App password not generated — Gmail and some others require this when 2FA is enabled
  • Port/security mismatch — defaults are port 993 + SSL/TLS for IMAP and port 587 + STARTTLS for SMTP; override with DC_IMAP_PORT/DC_IMAP_SECURITY or DC_SMTP_PORT/DC_SMTP_SECURITY in .env
Provider uses SMTP port 465 (SSL/TLS) instead of 587

Set DC_SMTP_SECURITY=1 and DC_SMTP_PORT=465 in .env, then restart.

Messages not arriving
  1. Check the service is running and the adapter started: grep "Channel adapter started.*deltachat" logs/nanoclaw.log
  2. Check connectivity: grep "DeltaChat: IO started" logs/nanoclaw.log
  3. Check the sender has been granted access — run /init-first-agent to create their user record and wire the chat
  4. Verify the messaging group is wired: pnpm exec tsx scripts/q.ts data/v2.db "SELECT mg.platform_id, mga.agent_group_id FROM messaging_groups mg JOIN messaging_group_agents mga ON mg.id = mga.messaging_group_id WHERE mg.channel_type='deltachat'"
Stale lock file after crash
bash
rm -f dc-account/accounts.lock
systemctl --user restart "$(. setup/lib/install-slug.sh && systemd_unit)"
Bot not responding after restart

The account is already configured — IO restarts automatically on service start. If the RPC subprocess is stuck, restart the service. Check for errors:

bash
grep "DeltaChat" logs/nanoclaw.error.log | tail -20
Messages received but agent not responding

The messaging group exists but may not be wired to an agent group. Run:

bash
pnpm exec tsx scripts/q.ts data/v2.db "SELECT id, platform_id, name FROM messaging_groups WHERE channel_type='deltachat'"

If the group has no entry in messaging_group_agents, wire it with /manage-channels.

© nanocoai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .claude/skills/add-deltachat of nanocoai/nanoclaw.

  • SKILL.md
  • REMOVE.md

Open the folder on GitHubat commit af699e7

Compare with similar skills

DeltaChat Channel for NanoClaw 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.

DeltaChat Channel for NanoClaw compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
DeltaChat Channel for NanoClaw this skillnanocoai/nanoclaw31k—~2.7kAutomated safety check: NotesMIT
Instagram Skillsupreme-gg-gg/instagram-cli2.2k—~1.4kAutomated safety check: PassMIT
Openloomi Connectorsmelandlabs/openloomi1k—~3.3kAutomated safety check: PassApache-2.0
Traul Message Searchdandaka/traul112—~3.9kAutomated safety check: NotesAGPL-3.0
Li InboxJakeschincariol/linkedin-agent-skill1.7k—~723Automated safety check: PassMIT
Ak Dev New Messaging Integrationyaalalabs/agent-kernel192—~4.6kAutomated safety check: PassApache-2.0

Similar skills

  • Instagram Skill

    supreme-gg-gg/instagram-cli

    How to use Instagram CLI to interact with Instagram from the command line on behalf of a user.

    2.2k GitHub stars~1.4k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Openloomi Connectors

    melandlabs/openloomi

    openloomi Connectors tools - manage the native 7 messaging integrations and pair with the composio skill for the 1000+ apps OAuth layer (Slack, Discord, X, Gmail, Outlook, Google…

    1k GitHub stars~3.3k tokensUpdated 16 days ago
    Productivity & AutomationAuto-check passed
  • Drives the traul CLI to sync, search and monitor messages from Slack, Telegram, Discord, Linear, Gmail, WhatsApp, Claude Code sessions and Markdown files.

    112 GitHub stars~3.9k tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check: notes
  • Li Inbox

    Jakeschincariol/linkedin-agent-skill

    Triage the LinkedIn inbox - sort connection requests and DMs into leads, recruiters, peers and spam, and draft the replies worth sending.

    1.7k GitHub stars~723 tokensUpdated 23 days ago
    Productivity & AutomationAuto-check passed
  • Ak Dev New Messaging Integration

    yaalalabs/agent-kernel

    Step-by-step guide for adding a new messaging platform integration to Agent Kernel.

    192 GitHub stars~4.6k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • X Use Inbox

    ihuzaifashoukat/x-use

    Read X direct messages, triage inbox and request folders, send contextual reviewed messages, and inspect notifications with x-use.

    171 GitHub stars~1.5k tokensUpdated today
    Productivity & AutomationAuto-check passed

More from nanocoai/nanoclaw

All 59 skills in this repo
  • Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.

    31k GitHub stars~4.6k tokensUpdated today
    Auto-check: notes
  • Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.

    31k GitHub stars~1.1k tokensUpdated today
    Auto-check: notes
  • Agent Browser

    nanocoai/nanoclaw

    Drives a web browser from the shell with the agent-browser CLI: open pages, read an element snapshot, click and fill by reference, grab text and screenshots.

    31k GitHub starsUsed in 2 repos~1.6k tokens
    Auto-check passed
  • Add Dial Tool

    nanocoai/nanoclaw

    Installs the `dial` CLI and a credential in NanoClaw agent containers so chosen agents can send SMS, place AI voice calls and receive verification codes.

    31k GitHub stars~4.8k tokensUpdated today
    Auto-check passed
  • Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.

    31k GitHub stars~6k tokensUpdated today
    Auto-check: notes
  • Wires up an additional phone number onto an already-installed Dial channel, so one NanoClaw install answers SMS and AI voice calls on more than one line.

    31k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Works with

Questions about DeltaChat Channel for NanoClaw

What does DeltaChat Channel for NanoClaw do?

Connects NanoClaw to DeltaChat, which carries end-to-end encrypted messages over ordinary email, using a native adapter and no Chat SDK bridge. DeltaChat messages travel by email with Autocrypt and OpenPGP encryption, and this skill links that channel to NanoClaw through the `@deltachat/stdio-rpc-server` JSON-RPC subprocess.js.

When should I use DeltaChat Channel for NanoClaw?

DeltaChat Channel for NanoClaw fits situations like: talking to a NanoClaw agent through end-to-end encrypted DeltaChat messages; giving the agent its own email-backed chat identity; checking that the DeltaChat adapter is registered after an upgrade.

How do I install DeltaChat Channel for NanoClaw in Claude Code?

Run `npx skills add nanocoai/nanoclaw --skill add-deltachat -a claude-code`. Or copy the skill folder (.claude/skills/add-deltachat in nanocoai/nanoclaw) into .claude/skills/add-deltachat in your project. Claude Code loads it when a task matches its description.

How do I install DeltaChat Channel for NanoClaw in Codex?

Run `npx skills add nanocoai/nanoclaw --skill add-deltachat -a codex`. Or copy the skill folder (.claude/skills/add-deltachat in nanocoai/nanoclaw) into .agents/skills/add-deltachat in your project. Codex loads it when a task matches its description.

Can I use DeltaChat Channel for NanoClaw 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 nanocoai/nanoclaw --skill add-deltachat -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-deltachat, .gemini/skills/add-deltachat, .github/skills/add-deltachat and .opencode/skills/add-deltachat in your project.

What does DeltaChat Channel for NanoClaw need to run?

Going by SKILL.md and its folder, DeltaChat Channel for NanoClaw needs the command-line tools its instructions call (pnpm and node) and credentials named DC_PASSWORD. Our summary lists: A NanoClaw installation with pnpm; A dedicated email account with IMAP and SMTP access.

Does DeltaChat Channel for NanoClaw access the network?

SKILL.md names 2 domains. In commands or code: i.delta.chat; the agent is likely to contact it when it follows the instructions. As links in the text: providers.delta.chat. This is read from the text; nothing was executed.

Is DeltaChat Channel for NanoClaw safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does DeltaChat Channel for NanoClaw use?

DeltaChat Channel for NanoClaw is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does DeltaChat Channel for NanoClaw use?

About 2.7k tokens (SKILL.md is roughly 11k 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 DeltaChat Channel for NanoClaw?

Skills that share tags, products or a category with DeltaChat Channel for NanoClaw: Instagram Skill (supreme-gg-gg/instagram-cli, 2.2k stars), Openloomi Connectors (melandlabs/openloomi, 1k stars), Traul Message Search (dandaka/traul, 112 stars) and Li Inbox (Jakeschincariol/linkedin-agent-skill, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains DeltaChat Channel for NanoClaw?

nanocoai (a GitHub organization) maintains it in nanocoai/nanoclaw, which has 30,906 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on October 9, 2026.

Source: nanocoai/nanoclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.