Telegram and WhatsApp
You can chat with Nod from Telegram or WhatsApp. It's the same conversation, memory and tasks as in the Nod app.
With a self-hosted server, channels stay connected while the server runs. You can close the web or desktop app.
Nod replies in the app you wrote from. A message from Telegram gets its answer on Telegram, and a schedule you set up there sends its results there too. Everything also shows in the chat in the Nod app.
Nod uses your conversation language for pairing notices and private-step guidance. Its model writes the message; the server adds permitted file links and keeps private sign-in and payment links out of chat apps. If an attachment cannot be read, its caption still helps set the recovery message’s language; the failed attachment does not start a task.
Before you start
Section titled “Before you start”| Telegram | WhatsApp with a QR code | |
|---|---|---|
| You need | A Telegram bot, made with BotFather | A registered WhatsApp account |
| Works on a laptop | Yes | Yes |
| Who can message Nod | Only the Telegram account you pair | Your personal number, or your own self-chat |
| Files from Nod | Images, documents, video and audio | Images, documents, video and audio |
| When Nod can write | While Nod runs | While Nod runs and WhatsApp is connected |
The QR connection does not need a Meta developer account, an API token, or a public callback address. It uses Baileys, an unofficial WhatsApp client, so there's a small risk of account restrictions, and a WhatsApp update can break the connection for a while. Nod only messages you. A separate bot number keeps your own chats safe. Check the WhatsApp terms before you connect.
Replies keep their bold text, lists, links, quotes, and code. A table arrives as one short labelled list per row. On Telegram, names of .md, .py, .sh, .java, .zip and .mov files show as code, so they don't open as web links. On WhatsApp, a literal *, _ or ~ pair shows as code, so it doesn't turn into formatting. A long reply arrives as several messages. If a file doesn't arrive, open Nod to get it. When the model can't write a required notice, even on a second try, that channel message stays blocked and isn't retried later.
Set up a channel
Section titled “Set up a channel”Open Channels in the sidebar, then select Connect on Telegram or WhatsApp. Nod checks your details before it saves them, and keeps them encrypted, outside the chat.
On a self-hosted server, leave that channel's environment variables blank or unset to use this setup. A channel configured through the environment is server-managed: edit its settings in .env and apply the configuration.
- In Create a bot, scan the code or select Open Telegram to open BotFather. Send
/newbot, choose a name, then a username ending inbot, such asmy_nod_bot. - Select I have my token. Paste BotFather's reply, or just the token, into BotFather message or token. Select Connect bot.
- In Open your bot, scan the new code or select Open Telegram, then press Start in the bot's chat. This code works for 15 minutes. On desktop, Nod opens the Telegram app when it is available. If Start does not connect, select Copy pairing command and paste the command in your bot's chat. Keep that command private.
- In Confirm your account, check your name, username, and numeric ID, then select Confirm. Only this account can message Nod.
- Select Start conversation and say hello. Nod must be running to reply.
If the link doesn't work for you, select Enter your user ID instead and use the ID that @userinfobot sends you.
- Choose Separate bot number or Use my own number.
- For a bot number, register a second number in WhatsApp or the WhatsApp Business app. Enter your personal number in Nod, with the country code and without
+or spaces. Only your personal number can start work. - Read the account risk and terms. Select Show QR code.
- On the phone for the account you will link, open Settings → Linked Devices → Link a Device. Scan the code in Nod. A code expires after one minute. The setup expires after five minutes.
- For a bot number, message the linked number from your personal WhatsApp. For your own number, open Message yourself and write there.
Nod ignores groups, status updates, other senders and message history. In self-chat, Nod ignores its own replies. Your other chats stay outside the Nod conversation.
The QR code updates automatically. If the code expires or Nod cannot check the connection, Nod hides it until a new check succeeds. Select Start again if setup does not continue.
Closing an unfinished setup cancels that setup. Once connected, closing the panel keeps WhatsApp connected. Select Disconnect to remove the saved link. You can also remove Nod from Linked Devices on your phone. To get a new link after a sign-out, select Finish setup, then Start again.
Use the Meta Cloud API
Select Use Meta Cloud API instead in the setup panel. You need a Meta app with WhatsApp, a business sender number and a public HTTPS callback. Enter the business phone number ID, your personal number, the business access token and the Meta app secret. Set a webhook verification token. Save the setup, then use the same callback and token in Meta and subscribe to messages.
The Cloud API replies only within 24 hours of your last message. Its file support is limited: open Nod to get files. The QR connection supports files directly.
Configure channels in .env instead
On a source install or self-hosted server, set the TELEGRAM_* or WHATSAPP_* values in Configuration, then apply the configuration. Any nonempty value makes that channel server-managed. The Channels page cannot edit or remove its configuration, and Telegram pairing is unavailable. A managed WhatsApp QR connection still lets you scan or renew its QR code.
To configure and pair the channel in the app, clear all its environment variables and apply the configuration again. This restores any configuration previously saved through Channels.
Files and voice messages
Section titled “Files and voice messages”In Nod chat, audio has an inline player with a waveform, play and pause, seek, elapsed time and playback speed. The waveform is processed locally for Ogg Opus voice notes. Before decoding, Nod checks the stream, packet duration and page checksums. Long or unsupported audio can still play without a waveform.
A sticker is a conversation message, not a request to review a file. Static and animated WebP stickers, Telegram TGS animations and WebM video stickers play inline. Animations pause outside the visible chat or when the app is hidden. The reduced-motion setting stops automatic playback. TGS playback uses a local canvas in a sandbox with no network access. Invalid or oversized animations keep their original download. Telegram's thumbnail can still help the model read a sticker; it does not appear as a second message card. A sticker sent as a reply stays linked to that message.
A file message sent before model setup gets a setup notice without a media download or transcription. If a chat model is connected but speech is not set up, Nod directs you to Settings → General → Voice to connect a voice service or download free voices.
With Telegram or the WhatsApp QR connection, send an image, document, video or audio file with your message. Captions stay with the file. Reply directly to a task message or its file to continue that task. A reply to a pending question goes to the session that asked it.
You can send a photo or file without a caption. Nod uses its content and the conversation to respond, and can ask what you want when that is unclear. It does not add a request to review the file. PNG, JPEG and WebP images reach the selected model directly when it accepts images, within the runtime's image limits. If that model cannot read images, Nod looks for an image model in its connected service, then in your other connected services. That model receives the images and your current request. It sends a description to the selected chat model. The chat selection stays the same. If no image model is available, the files stay in the workspace and Nod can explain the missing capability. Other files remain in the workspace for file tools.
Shared locations show their coordinates and place details in a map card. Select View map to load the map from OpenStreetMap. No map request runs before that click. A live-location share is a snapshot; Nod does not track later movements.
Shared contacts show a contact card with the name, organization, title, phone numbers, email addresses, postal addresses and website text when present. The preview reads vCard 2.1, 3.0 and 4.0, including folded fields and quoted-printable names. Website fields do not open automatically. The original vCard stays available to download, including extra contacts and fields that the card preview does not show. A shared location or contact is data, not permission to contact a person or change an app.
A .vcf reply can arrive as a native contact. Telegram supports one native card with a vCard of at most 2048 bytes; larger or grouped cards arrive as a file. A valid location.json reply can arrive as a native location. The Telegram API defines its native contact limit.
A message usually has one file. An animated Telegram sticker can include its original file and a model-only image preview. Album files arrive as separate messages and are not combined. The shared intake has a safety cap of ten files and 50 MB, and current adapters attach at most an original sticker and its preview. TGS previews accept Telegram's 64 KiB compressed limit, at most 4 MB after decompression, and a bounded vector structure. Telegram's hosted file API limits each incoming file to 20 MB. A voice message has a 25 MB limit. Nod checks the sender before it downloads a file. Files belong to your shared conversation workspace.
Nod prepares at most four file messages at a time. If the channel is busy, send the message again after the current files finish. A caption and its transcript must fit within 100,000 characters. A failed save removes files that have no saved record.
Voice input reuses a connected OpenAI, OpenRouter or ElevenLabs account, or downloaded free voices. Choosing a local voice keeps transcription local; choosing a direct ElevenLabs voice uses that connection. Otherwise, Nod uses an available OpenAI connection, then OpenRouter, then ElevenLabs, then prepared local models. A connection marked as needing attention is not used. If you have several keys for the same provider, select the connection you want to use. A ChatGPT or Claude subscription alone does not include cloud speech. Source installs can also use OPENAI_API_KEY or OPENROUTER_API_KEY after the connection is validated. Nod selects one service before sending audio; a failed request does not send the recording to another service.
STT_MODEL selects the transcription model. The default is gpt-transcribe for OpenAI and openai/gpt-transcribe for OpenRouter. For OpenRouter, use a full model ID from its transcription catalog. A model ID without / gets the openai/ prefix on OpenRouter. Text-only chat models cannot transcribe audio. Without speech setup, Nod asks you to send text. Text and file messages still work.
Use text to approve an action. A file or voice attachment does not approve it.
Ask Nod for a voice reply to get a native voice note. Choose a voice in Settings → General → Voice, using a connected OpenAI, OpenRouter or ElevenLabs account, or downloaded free voices. TTS_MODEL and TTS_VOICE set the default OpenAI speech model and voice. Speech calls use the spending-limit check and have usage records. OpenRouter reports the transcription cost. Where OpenAI returns supported usage, Nod calculates an API-price estimate. A speech response without a known price is marked unpriced.
Nod sends files up to 50 MB each. Large or unavailable files stay available in Nod. Long replies are split into messages. Nod shows typing status while work runs.
For a short reply with one image, video or document, the text is its caption. Longer replies, voice replies and replies with several files send the text in a separate message.
Connection and delivery
Section titled “Connection and delivery”Nod saves the WhatsApp device keys encrypted in its database. The keys stay on the server. They do not enter the model, sandbox, analytics or chat. The QR code is available only in the private setup panel and is not saved in channel settings.
After a restart or network loss, Nod uses the saved link to connect again. Replies that have not started sending wait while WhatsApp is disconnected. A send with an unclear result is not repeated automatically. This prevents duplicate messages; check Nod if a reply does not arrive.
Private steps happen in the Nod app
Section titled “Private steps happen in the Nod app”Passwords, saved logins, app sign-ins and payment approvals never go through a chat app. When a task started on Telegram or WhatsApp needs one, Nod asks you to open Nod. Finish the step there, and the task carries on and replies in the chat app.
sequenceDiagram actor You participant Chat as Telegram or WhatsApp participant App as Nod app participant Nod You->>Chat: Book the table with my saved login Chat->>Nod: Your request Nod-->>Chat: Open Nod to continue securely You->>App: Finish the private step App->>Nod: Done Nod-->>Chat: The result
If a website sends you a one-time sign-in code, you can reply with it in the chat where Nod asked. Nod uses it for that sign-in and keeps it out of its chat history. Card security codes work only in the Nod app. See Vault and Payments.
A direct reply must name the current sign-in question. A reply to a closed or unknown question cannot send a code to another sign-in request.
Taking over Nod's browser also needs the Nod app, because chat apps can't show the page.
While Nod works
Section titled “While Nod works”While Nod works on something you asked for in this chat, including a task it started for you, you see typing….
- Telegram adds a quoted progress section in your language when the task's first message, or the opening message for work in chat, arrives as one short text message. It updates quietly in place and is removed when the work stops. The answer arrives separately. You can keep typing and sending messages, or reply to that first message to correct the task while it works. Long or split messages, attachments, visual cards, files and private sign-in or payment links keep typing status only.
- WhatsApp shows typing… while connected. The Meta Cloud API also marks your latest message as read and stops typing after its 24-hour reply window closes. The QR connection has no reply window.
Nod still sends real messages for its opening line, useful milestones or partial results, questions, blockers, the final result and failures. Live status can continue while those messages arrive. See Message cadence.
Reactions
Section titled “Reactions”Reactions work both ways, as they do in the Nod app.
- Nod's reactions. Nod sometimes reacts to your message with an emoji, such as ❤️ when you thank it or 🎉 for good news. A reaction comes on top of Nod's reply, never instead of it. On Telegram, Nod uses only Telegram's standard reactions.
- Your reactions. React to any Nod message, and Nod takes it as feedback on that message. A reaction never answers a question or approves an action. Your reactions also show in the Nod app, including reactions to later parts of a long reply.
If a reaction send fails, its result can be unclear. Nod keeps the attempt and does not send it again. You can ask Nod to remove it. A failed removal keeps the previous reaction.
A Telegram webhook must include message_reaction in its allowed update types to pass your reactions to Nod. For an environment-managed channel, follow Telegram webhooks to register it again. For a channel configured in the app, select Connect bot again in the channel settings. A bot that polls for messages, such as in the desktop app, already requests reactions.
Commands
Section titled “Commands”These commands prepare a report without starting a task. Your selected model writes the short summary in your conversation language, and that model call counts toward usage. The export is generated directly from your saved data.
| Send | To get |
|---|---|
/usage |
This month's spending and app actions, with a PDF statement |
/memory |
A short summary of what Nod remembers, with the full export |
Telegram and the WhatsApp QR connection receive the PDF and export as documents. With the WhatsApp Cloud API, open Nod to get them.
Both channels have task controls. /tasks lists open tasks, with one message per task. Reply to a task message with /status to see its goal, steps and state, or /stop to stop only that task. /stop without a reply stops all active work and closes open tasks. Progress, questions and results stay linked to the same task. See Track tasks.