Nod Channel
Bring Nod's mobile control and multi-agent powers to your native Claude Code sessions
What is the Nod Channel?
The Nod Channel is an MCP server that plugs into Claude Code's native --channels system. Instead of wrapping Claude Code in a daemon, it adds Nod powers directly to your existing sessions — chat from your phone, approve tool calls, coordinate multiple sessions, all without leaving your normal workflow.
When the user sends a message from the Nod app, it arrives in Claude Code as a <channel source="nod"> message. Claude responds using Nod MCP tools (nod__reply, nod__report, etc.) that send the response back to the phone. Terminal interactions remain completely normal — Nod tools are only used for channel messages.
Why use the Channel?
| Generic channels (Telegram/Discord) | Nod Channel |
|---|---|
| Plain text messages in a chat app | Rich approval cards, choice buttons, activity feeds, task management |
| No permission control | Full permission relay — approve or deny tool calls from your phone |
| One session per channel | Multiple sessions connected to the same Nod dashboard |
| No observability | Activity feed showing every agent action with timestamps |
| No task scheduling | Create and manage scheduled tasks from your phone |
| Generic chat UI | Purpose-built agent management UI with structured decision types |
Getting started
Clone the Nod plugin repository
The Nod Channel is open source. Clone it and install dependencies:
git clone https://github.com/guibonaccorsi/nod-plugin.git cd nod-plugin && npm install
Create an agent in the Nod app
Open the Nod app on your phone. Create a new agent — you'll get an Agent ID and Secret.
Start Claude Code with the channel
Start a Claude Code session with the Nod channel. The --dangerously-skip-permissions flag is required for third-party channel servers:
claude --dangerously-skip-permissions --channel server:nod
Configure the agent
Inside the Claude Code session, run the configure skill:
/nod:configure <agent_id> <agent_secret>
This validates your credentials against the Nod API, saves the agent config to .claude/channels/nod/agents.json, and sets up the MCP server entry. The agent appears online in the Nod app.
Start and stop the agent
Use skills inside the Claude Code session to control the agent:
/nod:up # Connect the agent — goes online in the Nod app /nod:down # Disconnect the agent — goes offline
.claude/channels/nod/agents.json, not in .mcp.json. Make sure .claude/channels/ is in your .gitignore — the configure command checks this for you.Multiple sessions on the same project
You can configure multiple agents to identify different Claude Code sessions working on the same project. Each session appears as a separate conversation in the Nod app, so you can track which session is doing what.
# In each terminal, start Claude Code with the Nod channel claude --dangerously-skip-permissions --channel server:nod # Then inside each session, configure and start a different agent /nod:configure <frontend_agent_id> <secret> /nod:up # In another terminal: /nod:configure <backend_agent_id> <secret> /nod:up
Each session appears as a separate agent in the Nod app. You can:
- Send different instructions to each session
- Approve tool calls independently per session
- See activity from all sessions in one unified feed
- Walk away from your desk and keep all sessions running from your phone
Permission relay
When Claude Code needs permission for a tool call, the Nod Channel relays it to your phone as a permission card — just like the CLI:
- Allow — approve this specific tool call
- Always Allow — approve and save a pattern (e.g.
Bash(npm install *)) to.claude/settings.local.jsonso it auto-approves in the future - Deny — block this specific tool call
Always Allow patterns are written to Claude Code's native settings format — they persist across sessions and work even without the Channel.
Available tools
The Channel exposes MCP tools that Claude uses to communicate with you on mobile. These are only invoked when responding to <channel source="nod">messages — terminal interactions remain completely normal.
| Tool | Purpose |
|---|---|
| nod__reply | Send a text message to the user’s phone |
| nod__report | Send structured content as a tappable card (for output >10 lines) |
| nod__request | Ask the user for a decision — blocks until they respond |
| nod__activity | Log a milestone to the activity feed |
| nod__image | Send an image (base64) to the user’s phone |
| nod__task_output | Complete a scheduled task with its deliverable |
Scheduled tasks
The Channel supports Nod's task system. Tasks arrive as <channel source="nod" type="task"> messages with a run_id. Claude does the work and calls nod__task_output to deliver the result.
Tasks can be created from the Nod app or proposed by Claude during a conversation. They run on a cron schedule and deliver results as rich cards on your phone.
Terminal vs. mobile interactions
This means you can use the same Claude Code session for both:
- Terminal: type commands, see tool calls, interact normally
- Mobile: send messages from the Nod app, get responses via
nod__reply
Channel vs. CLI
| Channel | CLI | |
|---|---|---|
| Use case | Add Nod to interactive sessions | Run persistent background agents |
| Lifecycle | Tied to Claude Code process | OS-managed daemon (survives restarts) |
| Setup | claude --channel server:nod + /nod:configure + /nod:up | nod → connect → up |
| Agent isolation | Session-level (shared project config) | Full per-agent isolation (MCPs, skills, permissions) |
| Scheduled tasks | Supported via channel messages | Runs automatically even when terminal is closed |
| Best for | Developers at the terminal who want mobile fallback | Always-on agents and automation |