Noddocs

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.

Claude Code
Your terminal session
Nod Channel
MCP server
Nod Backend
WebSocket + REST
Nod App
Your phone

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 appRich approval cards, choice buttons, activity feeds, task management
No permission controlFull permission relay — approve or deny tool calls from your phone
One session per channelMultiple sessions connected to the same Nod dashboard
No observabilityActivity feed showing every agent action with timestamps
No task schedulingCreate and manage scheduled tasks from your phone
Generic chat UIPurpose-built agent management UI with structured decision types

Getting started

1

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
2

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.

3

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
4

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.

5

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
Credentials are stored in .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
Channel agents in the same project share the same context — same files, same MCP servers, same permissions. Unlike the Nod CLI which provides full per-agent isolation (scoped MCPs, separate permissions, dedicated memory), the Channel is mainly for identifying which Claude Code session an agent represents. If you need true agent isolation, use the CLI.

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.json so 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.

ToolPurpose
nod__replySend a text message to the user’s phone
nod__reportSend structured content as a tappable card (for output >10 lines)
nod__requestAsk the user for a decision — blocks until they respond
nod__activityLog a milestone to the activity feed
nod__imageSend an image (base64) to the user’s phone
nod__task_outputComplete 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

The Channel is designed to be invisible when you're at the terminal. When you type in the terminal, Claude responds normally — no Nod tools, no cards, just standard Claude Code behavior. Nod tools are only activated when a message arrives from the mobile app via the channel.

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

ChannelCLI
Use caseAdd Nod to interactive sessionsRun persistent background agents
LifecycleTied to Claude Code processOS-managed daemon (survives restarts)
Setupclaude --channel server:nod + /nod:configure + /nod:upnod → connect → up
Agent isolationSession-level (shared project config)Full per-agent isolation (MCPs, skills, permissions)
Scheduled tasksSupported via channel messagesRuns automatically even when terminal is closed
Best forDevelopers at the terminal who want mobile fallbackAlways-on agents and automation