Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number…

MITAuto-check: notesProductivity & Automation

Install Textme

skills CLI
$ npx skills add sickn33/agentic-awesome-skills --skill textme -a claude-code

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

GitHub CLI
$ gh skill install sickn33/agentic-awesome-skills textme --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/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sendblue/textme .claude/skills/textme && 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
textme
GitHub stars
47k
Used in
1 other repo
Token cost
~3.2k tokens
SKILL.md length
1,515 words
Files
1
Skills in repo
1,394
Repo updated
First seen
Licence
MIT

At a glance

Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number…

  • Works in 5 steps: Install the daemon → Configure credentials and the whitelist → Run the daemon → …
  • Tasks that involve Messaging and chat bots
  • SKILL.md covers Overview, When to Use This Skill, Prerequisites and How It Works, plus 7 more sections
  • Calls npm, git and claude; reaches github.com; needs OPENAI_API_KEY and SENDBLUE_API_API_KEY

What it does

Textme is an agent skill from sickn33/agentic-awesome-skills. Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number whitelist.

Its SKILL.md is about 3.2k 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 Productivity & Automation, covering Messaging and chat bots and Transcription. The repository describes itself as: AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400+ agentic skills. Includes… The licence is MIT.

When your agent uses it

  • Tasks that involve Messaging and chat bots
  • Tasks that involve Transcription

Example prompts

  • “/textme”

Requirements

  • Node.js
  • A credential in YOUR_SENDBLUE_API_KEY
  • A credential in YOUR_SENDBLUE_API_SECRET

Workflow steps

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

  1. Install the daemon
  2. Configure credentials and the whitelist
  3. Run the daemon
  4. Drive Claude from iMessage
  5. Verify before relying on it

What it can do on your machine

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

    • npm
    • git
    • claude

    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:

    • github.com

    Also links to:

    • sendblue.com
    • docs.sendblue.com

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

  • Credentials

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

    • OPENAI_API_KEY
    • SENDBLUE_API_API_KEY
    • SENDBLUE_API_API_SECRET

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

Context cost

Textme loads about 3.2k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 1,515 words of instructions outside code blocks.

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

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:74
    voice transcription, optionally add to `.env` in the daemon directory:

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 sickn33/agentic-awesome-skills at commit 1e53ce2, republished under its MIT licence (© sickn33). 1,515 words, ~3,172 tokens.

Download SKILL.mdSave it as .claude/skills/textme/SKILL.md (or your agent's skills folder).
name
textme
description
Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number whitelist.
category
automation
risk
critical
source
community
source_repo
njerschow/textme
source_type
community
date_added
2026-05-26
author
AnthonyFirth
tags
textme, sendblue, imessage, sms, claude-code, daemon, remote-control, automation
tools
claude, cursor, gemini
license
MIT

TextMe

Overview

njerschow/textme is a local daemon that bridges inbound iMessages (via Sendblue) to a Claude Code session on the user's machine. Whitelisted phone numbers can text, send voice notes, send images, and drive Claude through filesystem operations, code execution, and cd-based directory navigation — turning the user's phone into a remote control for Claude on their laptop. This is the inbound counterpart to outbound notification patterns ([[sendblue-notify]]): textme is phone → Claude; sendblue-notify is Claude → phone.

When to Use This Skill

  • Use when the user says "text Claude", "text my laptop", "drive Claude from my phone", "I want to send iMessages to Claude", or "let me code from my phone".
  • Use when the user is heads-down away from their desk and wants to kick off, supervise, or interrupt a Claude session via SMS/iMessage.
  • Use when setting up a long-running headless workstation that the user wants to remote-control while travelling or away from the keyboard.
  • Pair with [[sendblue-notify]] for bidirectional flow — outbound completion pings + inbound commands on the same Sendblue account.
  • Do not use for outbound-only "text me when X finishes" patterns. That is [[sendblue-notify]] and does not need a daemon.

Prerequisites

  • macOS or Linux host that stays online (the daemon polls Sendblue continuously).
  • Node.js 18+.
  • An active Sendblue account with API credentials and a provisioned iMessage number — set up via [[sendblue-cli]] (sendblue setup, then sendblue show-keys to surface API key/secret).
  • Claude Code installed and authenticated on the host (npm install -g @anthropic-ai/claude-code).
  • Optional: an OpenAI API key for Whisper voice-note transcription.

How It Works

Step 1: Install the daemon
bash
git clone https://github.com/njerschow/textme.git
cd textme/daemon
npm install
npm run build
mkdir -p ~/.config/claude-imessage
Step 2: Configure credentials and the whitelist

Create ~/.config/claude-imessage/config.json:

json
{
  "sendblue": {
    "apiKey": "YOUR_SENDBLUE_API_KEY",
    "apiSecret": "YOUR_SENDBLUE_API_SECRET",
    "phoneNumber": "+1SENDBLUE_NUMBER"
  },
  "whitelist": ["+1YOUR_PHONE"],
  "pollIntervalMs": 5000,
  "conversationWindowSize": 20
}

The whitelist is the only authorization gate between an inbound iMessage and code execution on the host. Treat it as a security boundary, not a UX preference. Add only phone numbers the user controls; never add a shared, work, or family number "just in case".

For voice transcription, optionally add to .env in the daemon directory:

bash
OPENAI_API_KEY=sk-...
Step 3: Run the daemon

For a quick test run:

bash
cd textme/daemon
npm start

For persistent operation (recommended once the user has verified behavior):

bash
pm2 start dist/index.js --name textme
pm2 save
pm2 startup

Or, on macOS, install the launchd service:

bash
./scripts/install-launchd.sh
Step 4: Drive Claude from iMessage

Once the daemon is running, an iMessage from a whitelisted number to the Sendblue phone number reaches Claude. Built-in commands:

CommandEffect
?List available commands
statusShow current daemon status and working directory
queueShow messages queued for processing
historyRecent message history
homecd back to home directory
resetReturn home and clear conversation history
cd /pathChange working directory
stopCancel the current Claude task
yes / noApprove or reject the pending action

Anything else is treated as a Claude prompt and routed to the active session.

Step 5: Verify before relying on it

Before using textme in unattended workflows, the user must:

  1. Send status from the whitelisted phone — should get a directory + state reply.
  2. Send a benign command (pwd, ls) and confirm output arrives.
  3. Send something from a non-whitelisted number and confirm it is ignored, not echoed.
  4. Pull the plug: kill the daemon and confirm messages stop being processed (no zombie process).

If any of these fail, do not enable launchd / pm2 auto-start.

Examples

Example 1: Initial setup walk-through
bash
# 1. Make sure sendblue CLI is set up and creds work
sendblue whoami

# 2. Grab Sendblue API key & secret (these are NOT the CLI's bearer token)
sendblue show-keys

# 3. Clone + build the daemon
git clone https://github.com/njerschow/textme.git
cd textme/daemon && npm install && npm run build

# 4. Fill in ~/.config/claude-imessage/config.json with the values from step 2
#    and YOUR personal phone number as the only whitelist entry

# 5. Start, send "?" from your phone, confirm response
npm start
Example 2: Composing with sendblue-notify

Wire outbound completion pings via [[sendblue-notify]] and inbound control via textme — they share the same Sendblue account but solve opposite problems:

  • Claude finishes a long task → texts user via [[sendblue-notify]] (Stop hook).
  • User replies "look at the diff" → textme routes that into Claude → Claude responds back via Sendblue.
Example 3: Tail the daemon log
bash
# pm2
pm2 logs textme

# Standalone
tail -f ~/.local/log/claude-imessage.log
Example 4: MCP-only alternative (no daemon)

If the user wants Sendblue messaging available to Claude Code as tools but does not want a polling daemon listening for inbound commands, they can register Sendblue as an MCP server instead:

bash
claude mcp add sendblue_api \
  --env SENDBLUE_API_API_KEY=your-api-key \
  --env SENDBLUE_API_API_SECRET=your-api-secret \
  -- npx -y sendblue-api-mcp --client=claude-code --tools=all

This gives Claude outbound Sendblue tools inside a session but does not open the inbound phone-controls-Claude channel that textme provides. Pick textme when "text Claude from anywhere" is the goal; pick MCP when Claude only needs to send.

Best Practices

  • ✅ Whitelist exactly one phone number to start. The whitelist is the security boundary; expand it slowly and only to numbers the user controls.
  • ✅ Run the daemon as a regular user, never as root or via sudo.
  • ✅ Start in a sandbox directory for first tests (cd ~/textme-sandbox), not in ~ or a real repo.
  • ✅ Verify the non-whitelist ignore path before enabling auto-start. A daemon that processes any sender is an open shell on the host.
  • ✅ Keep pollIntervalMs ≥ 5000 unless the user understands the Sendblue rate limits and cost implications.
  • ❌ Don't share the Sendblue number publicly. Even with a whitelist, the host is doing per-message work; a flood from an unknown sender still costs polling cycles.
  • ❌ Don't store config.json in a repo, dotfiles backup, or cloud sync — it contains API credentials and the user's phone number.
  • ❌ Don't run the daemon on a shared machine without considering what every other user of that machine can now reach by sending an SMS.

Limitations

  • Outbound-only flows do not need this skill. For "text me when X finishes" use [[sendblue-notify]]; running a daemon is overkill.
  • Voice transcription requires a separate OpenAI API key. Without it, voice notes are dropped or surfaced as un-transcribed audio depending on daemon version.
  • The daemon polls on an interval — there is no push delivery. Expect single-digit-second latency between message receipt and Claude response.
  • One conversation, one machine. This is a per-host daemon, not a multi-tenant service. Two daemons sharing one Sendblue number will both try to handle every inbound message.
  • Sendblue free-plan verification still applies. The user's phone must have texted the Sendblue number once before outbound responses from Claude reach the user (see [[sendblue-cli]] limitations).
Show full SKILL.md (580 more words)Show less

Security & Safety Notes

textme is a remote code execution surface gated only by a phone-number whitelist. Treat it accordingly.

  • Whitelist is the security boundary. Anyone who can spoof or hijack a whitelisted number can drive Claude on the host. Be deliberate about which numbers go on the list and remove them when they no longer need access. <!-- security-allowlist: documented remote-control daemon; required disclosure per quality-bar.md -->
  • Sendblue API credentials are sensitive. config.json contains an API key, API secret, and the user's phone number. Mode it 600, keep it out of dotfile repos, and never paste it into shared logs, gists, or screenshots.
  • The daemon inherits the user's privileges. It can read, write, and execute anything the running user can. Do not run as root, do not run from a directory with secrets the user does not want exposed to inbound SMS, and prefer a dedicated host or VM if available.
  • Claude Code's permission model still applies inside the daemon-driven session — destructive actions still surface confirmation prompts. textme exposes the yes/no reply path for those prompts, which means the phone number is making the approval. Make sure the whitelist matches the trust level of approving destructive operations remotely.
  • Inbound messages are untrusted input. Treat textme prompts as user input from the open internet (with phone-number authentication). Do not pipe their contents into eval, shell substitution, or scripts that bypass Claude Code's review.
  • Lock-screen previews of replies leak. When Claude responds to a message, the reply lands on the user's lock screen unredacted. Don't ask Claude over textme to surface secrets, tokens, or customer data via SMS — link to a local log or PR instead.
  • Daemon liveness is a footgun. If pm2/launchd is auto-restarting the daemon, the user must remember to stop it before changing whitelist entries, rotating credentials, or rebooting into an untrusted state.

Common Pitfalls

  • Whitelist drift. A number added "for a demo" never gets removed. Audit whitelist whenever the host changes hands or scope.
  • apiKey / apiSecret confusion. Sendblue's API credentials (from sendblue show-keys) are distinct from the CLI's local bearer token in ~/.sendblue/credentials.json. textme needs the API credentials, not the CLI auth file.
  • Free-plan silent send failures. If the user's phone never texted the Sendblue number first, outbound replies from Claude silently fail. Verify with sendblue contacts before relying on the loop.
  • Auto-start before verification. Installing the launchd plist or pm2 save-ing the daemon before testing the non-whitelist ignore path will baseline a potentially open daemon at boot. Verify first, persist second.
  • Running the daemon in ~ or a repo with secrets. The working directory at startup is exposed to anything textme is told to do (ls, cat, etc.). Start in a sandbox directory and cd deliberately.
  • Confusing textme with the Sendblue MCP. They look similar but the MCP variant only gives Claude outbound Sendblue tools — it does not open an inbound channel. If the user wants "text Claude from my phone", they need textme; if they want "Claude can send a text mid-session", the MCP is lighter.
  • @sendblue-notify — Outbound counterpart (Claude → phone). Composes with textme to make the loop bidirectional.
  • @sendblue-cli — Account setup, credential management, and the show-keys command that surfaces the API key/secret textme needs.
  • @sendblue-api — HTTP API reference for users who want to build a custom inbound handler instead of using textme's daemon.
  • @update-config — If wiring textme alongside Claude Code hooks (e.g. a Stop hook that pings the user), use this for the settings.json edits.

© sickn33, MIT. 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 skills/sendblue/textme of sickn33/agentic-awesome-skills.

Open the folder on GitHubat commit 1e53ce2

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sickn33/agentic-awesome-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Textme 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.

Textme compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Textme this skillsickn33/agentic-awesome-skills47k1 repos~3.2kAutomated safety check: NotesMIT
Youtube SummarizerBrianRWagner/ai-marketing-claude-code-skills4402 repos~3.8kAutomated safety check: PassNone
FeedgrabiBigQiang/feedgrab613—~2kAutomated safety check: PassMIT
Voice Personadavepoon/buildwithclaude3.6k—~947Automated safety check: PassMIT
Lingzaoatian-create/lingzao-skill2941 repos~8.8kAutomated safety check: PassMIT
Ffmpeg Best Practicelinyqh/speclip-skills110—~2.3kAutomated safety check: PassNone

Similar skills

  • Youtube Summarizer

    BrianRWagner/ai-marketing-claude-code-skills

    Automatically fetch YouTube video transcripts, generate structured summaries, and send full transcripts to messaging platforms.

    440 GitHub starsUsed in 2 repos~3.8k tokens
    Productivity & AutomationAuto-check passed
  • Feedgrab

    iBigQiang/feedgrab

    Universal content grabber — fetch any URL and return structured Markdown.

    613 GitHub stars~2k tokensUpdated 29 days ago
    Media & CreativeAuto-check passed
  • Voice Persona

    davepoon/buildwithclaude

    让 Agent 变成能语音对话的机器人:语音文件转文字(支持微信 silk 格式)+ 多音色人格回复(Edge TTS 免费中文音色),全本地零 API 成本。Voice persona chat: transcribe voice messages (incl.

    3.6k GitHub stars~947 tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Lingzao

    atian-create/lingzao-skill

    Use Lingzao creator-content tools for Xiaohongshu/XHS, Douyin, and WeChat official-account public content.

    294 GitHub starsUsed in 1 repo~8.8k tokens
    Media & CreativeAuto-check passed
  • Ffmpeg Best Practice

    linyqh/speclip-skills

    Lean FFmpeg playbook for reliable video compression, WeChat-compatible MP4 export, clip stitching, audio mixing, subtitle handling, and quick fallback decisions.

    110 GitHub stars~2.3k tokensUpdated 5 mo ago
    Media & CreativeAuto-check passed
  • AI Video Script

    zrt-ai-lab/opencode-skills

    A skill your agent uses when a request asks for a Chinese-first AI video script with shot plans, image prompts, narration, subtitles, or handoff contracts for scene generation, image generation…

    287 GitHub stars~1.7k tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed

More from sickn33/agentic-awesome-skills

All 1,394 skills in this repo
  • Liuguang Banlan UI

    sickn33/agentic-awesome-skills

    Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • User Thoughts Memory

    sickn33/agentic-awesome-skills

    Saves a user's project decisions, rules and preferences into a project-local mdbase so later sessions and other agents can recover the intent.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Using LWC Memory and Graphs

    sickn33/agentic-awesome-skills

    Keeps project decisions, research and verified results available across coding-agent sessions through LWC memory, a document Wiki graph and a CodeGraph code index.

    47k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Find Complementary Founders

    sickn33/agentic-awesome-skills

    Guides an agent through assessing its own owner for cofounder fit, publishing an approved profile, and ranking complementary profiles other agents published for their owners.

    47k GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check passed
  • Whatsapp Cloud API

    sickn33/agentic-awesome-skills

    Integracao com WhatsApp Business Cloud API (Meta). An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~4.5k tokens
    Auto-check passed
  • Cline Pilot

    sickn33/agentic-awesome-skills

    Acts as a proxy for the Cline CLI, dispatching coding tasks one at a time, monitoring runs by hard evidence, relaying decisions to you and learning per-project preferences.

    47k GitHub starsUsed in 1 repo~4.6k tokens
    Auto-check passed

Questions about Textme

What does Textme do?

Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number…. Textme is an agent skill from sickn33/agentic-awesome-skills. Text Claude from your phone — set up the njerschow/textme daemon so inbound iMessages drive a Claude Code session on your laptop, with voice notes, image input, code execution, and a phone-number whitelist.

When should I use Textme?

Textme fits situations like: tasks that involve Messaging and chat bots; tasks that involve Transcription.

How do I install Textme in Claude Code?

Run `npx skills add sickn33/agentic-awesome-skills --skill textme -a claude-code`. Or copy the skill folder (skills/sendblue/textme in sickn33/agentic-awesome-skills) into .claude/skills/textme in your project. Claude Code loads it when a task matches its description.

How do I install Textme in Codex?

Run `npx skills add sickn33/agentic-awesome-skills --skill textme -a codex`. Or copy the skill folder (skills/sendblue/textme in sickn33/agentic-awesome-skills) into .agents/skills/textme in your project. Codex loads it when a task matches its description.

Can I use Textme 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 sickn33/agentic-awesome-skills --skill textme -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/textme, .gemini/skills/textme, .github/skills/textme and .opencode/skills/textme in your project.

What does Textme need to run?

Going by SKILL.md and its folder, Textme needs the command-line tools its instructions call (npm, git and claude) and credentials named OPENAI_API_KEY, SENDBLUE_API_API_KEY and SENDBLUE_API_API_SECRET. Our summary lists: Node.js; A credential in YOUR_SENDBLUE_API_KEY; A credential in YOUR_SENDBLUE_API_SECRET.

Does Textme access the network?

SKILL.md names 3 domains. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. As links in the text: sendblue.com and docs.sendblue.com. This is read from the text; nothing was executed.

Is Textme 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 Textme use?

Textme is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Textme use?

About 3.2k tokens (SKILL.md is roughly 13k 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 Textme?

Skills that share tags, products or a category with Textme: Youtube Summarizer (BrianRWagner/ai-marketing-claude-code-skills, 440 stars), Feedgrab (iBigQiang/feedgrab, 613 stars), Voice Persona (davepoon/buildwithclaude, 3.6k stars) and Lingzao (atian-create/lingzao-skill, 294 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Textme?

sickn33 (a GitHub user) maintains it in sickn33/agentic-awesome-skills, which has 47,304 GitHub stars. The repository holds 1,394 skills in this directory. The repository was last updated on October 6, 2026.

Source: sickn33/agentic-awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.