<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Subhendu Das</title>
    <description>The latest articles on DEV Community by Subhendu Das (@sumaninster).</description>
    <link>https://dev.to/sumaninster</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4055832%2Fe0e1fcc3-e36e-4f90-8814-c6aef548f373.jpg</url>
      <title>DEV Community: Subhendu Das</title>
      <link>https://dev.to/sumaninster</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumaninster"/>
    <language>en</language>
    <item>
      <title>Why your AI messages shouldn't leave your machine</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:27:31 +0000</pubDate>
      <link>https://dev.to/sumaninster/why-your-ai-messages-shouldnt-leave-your-machine-1913</link>
      <guid>https://dev.to/sumaninster/why-your-ai-messages-shouldnt-leave-your-machine-1913</guid>
      <description>&lt;p&gt;Every time you send a message to ChatGPT, Claude, or Gemini through their web interface, that message travels to a data center, gets processed, logged, and stored. The AI company sees it. Their infrastructure handles it. Their policies govern it.&lt;/p&gt;

&lt;p&gt;For casual use — "write me a haiku about coffee" — this is fine. But developers are increasingly using AI for things that matter: reviewing proprietary code, debugging production incidents, discussing architecture decisions, processing customer data. The content of these conversations is sensitive, often more sensitive than the code itself.&lt;/p&gt;

&lt;p&gt;This is why self-hosted AI matters. Not as a philosophical stance, but as a practical engineering decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The privacy surface area of cloud AI
&lt;/h2&gt;

&lt;p&gt;When you use a cloud AI service, your data touches:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The network&lt;/strong&gt; — Your message traverses the public internet. TLS encrypts it in transit, but it's still leaving your network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The provider's infrastructure&lt;/strong&gt; — Load balancers, API gateways, inference servers. Each is a potential logging point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The provider's data policies&lt;/strong&gt; — Most providers say they don't train on your data. But policies change. Companies get acquired. Regulations shift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party integrations&lt;/strong&gt; — If the AI service integrates with other tools, each integration adds surface area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs and monitoring&lt;/strong&gt; — Providers log requests for debugging, billing, and abuse detection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these are nefarious. They're the standard architecture of cloud services. But for sensitive workloads, each one is a risk factor.&lt;/p&gt;

&lt;h2&gt;
  
  
  When self-hosted AI makes sense
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Your conversations contain proprietary code.&lt;/strong&gt; If you're using Claude to review a pre-launch feature, debug a security vulnerability, or discuss architecture for a competitive product, the content is trade-secret-adjacent. Self-hosting keeps it off third-party infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You handle regulated data.&lt;/strong&gt; Healthcare (HIPAA), finance (SOX), legal (attorney-client privilege) — these domains have specific requirements about where data can be processed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're in a data-sovereignty jurisdiction.&lt;/strong&gt; GDPR, India's DPDP Act, Brazil's LGPD — these regulations care about where data is processed and stored.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want an audit trail you control.&lt;/strong&gt; You know exactly what's stored, where, and for how long. You can rotate, encrypt, or delete conversation history on your own schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You work with clients who ask.&lt;/strong&gt; Enterprise clients increasingly include "where does our data go?" in vendor assessments. "It stays on our infrastructure, the only external call is to the inference API" is a clean answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture of zero-relay AI
&lt;/h2&gt;

&lt;p&gt;In a cloud AI chat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your device -&amp;gt; Internet -&amp;gt; Anthropic's servers -&amp;gt; Claude -&amp;gt; Anthropic's servers -&amp;gt; Internet -&amp;gt; Your device
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a self-hosted setup like Telechat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your phone -&amp;gt; Telegram/WhatsApp API -&amp;gt; Your server -&amp;gt; Anthropic API -&amp;gt; Your server -&amp;gt; Telegram/WhatsApp API -&amp;gt; Your phone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The messaging platform sees that you're sending messages to a bot, but the content is encrypted in transit. Anthropic's API sees the query content (they have to, for inference), but nothing else — no user metadata, no conversation history beyond what you send in the API call.&lt;/p&gt;

&lt;h2&gt;
  
  
  What self-hosting doesn't solve
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The inference provider still sees your queries.&lt;/strong&gt; Self-hosting eliminates the &lt;em&gt;intermediary&lt;/em&gt;, not the &lt;em&gt;provider&lt;/em&gt;. If you need the provider to not see your data, you need on-device models (Llama, Mistral), which is a different tradeoff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Messaging platforms see metadata.&lt;/strong&gt; Telegram knows you're messaging a bot. They don't see the AI processing, but they see the communication patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting adds responsibility.&lt;/strong&gt; You're responsible for uptime, security patches, access control, and backup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Telechat: Self-hosted Claude in practice
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One process on your machine. Four messaging platforms. Zero cloud relay. Conversation history in local SQLite.&lt;/p&gt;

&lt;p&gt;It also does smart model routing (saves ~60% on API costs), per-user budget caps, and has a Desktop Bridge for approving Claude's destructive actions from your phone.&lt;/p&gt;

&lt;p&gt;The core value proposition is simple: your AI conversations stay on your infrastructure. Not because cloud is evil, but because some conversations deserve the same care you give your source code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=why-your-ai-messages-shouldn-t-leave-your-machine" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; — Self-hosted Claude AI. Your machine, your messages.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Telechat — Claude AI on your phone. Self-hosted. No cloud relay.</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:27:29 +0000</pubDate>
      <link>https://dev.to/sumaninster/telechat-claude-ai-on-your-phone-self-hosted-no-cloud-relay-1l55</link>
      <guid>https://dev.to/sumaninster/telechat-claude-ai-on-your-phone-self-hosted-no-cloud-relay-1l55</guid>
      <description>&lt;h2&gt;
  
  
  Tagline
&lt;/h2&gt;

&lt;p&gt;Claude AI on your phone. Self-hosted. No cloud relay.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;You want Claude AI in your messaging apps — Telegram, WhatsApp, Slack. Anthropic's Claude Code Channels does this for Telegram and Discord, but it routes everything through their cloud, requires a Pro subscription, and offers no cost controls.&lt;/p&gt;

&lt;p&gt;What if you could run Claude on your own machine, keep every message private, control costs down to the penny, and connect to WhatsApp and Slack too?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Telechat&lt;/strong&gt; is a self-hosted Claude AI bot that runs on your machine and connects to Telegram, WhatsApp, Slack, and web chat simultaneously.&lt;/p&gt;

&lt;p&gt;Install in 60 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. One process, four platforms, zero cloud relay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Smart Model Routing
&lt;/h3&gt;

&lt;p&gt;Telechat analyzes each message and routes it to the cheapest Claude model that can handle it. Simple questions go to Haiku ($0.001/query). Complex reasoning goes to Opus. This saves ~60% on API costs compared to always using Sonnet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Desktop Bridge
&lt;/h3&gt;

&lt;p&gt;The feature nobody else has. When Claude Code is running on your desktop and needs human approval for a destructive action, you get a push notification on your phone. Approve or deny from Telegram or WhatsApp.&lt;/p&gt;

&lt;h3&gt;
  
  
  Budget Controls
&lt;/h3&gt;

&lt;p&gt;Set per-user daily and monthly spending caps. Get warnings at 80%. Hard cutoff at 100%. Share Claude with your team without surprise bills.&lt;/p&gt;

&lt;h3&gt;
  
  
  True Privacy
&lt;/h3&gt;

&lt;p&gt;Every message stays on your machine. No relay server, no telemetry, no analytics. The only external call is to Anthropic's API for inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Platform
&lt;/h3&gt;

&lt;p&gt;Telegram, WhatsApp, Slack, and web chat — all from one process. Claude Code Channels only supports Telegram and Discord.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who It's For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; who want Claude on their phone without a Pro subscription&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams&lt;/strong&gt; who need shared AI access with budget controls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-conscious users&lt;/strong&gt; who want self-hosted AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise&lt;/strong&gt; with data sovereignty requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps engineers&lt;/strong&gt; who want remote approval for AI agent actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;Telechat is free and open-source. You pay only for Anthropic API usage (bring your own key).&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=telechat-claude-ai-on-your-phone-self-hosted-no-cloud-relay" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;code&gt;npm install -g telechatai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;code&gt;pip install telechatai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/telechatai" rel="noopener noreferrer"&gt;github.com/telechatai&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Claude Code Channels phones home. Telechat stays home.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>We added mobile approvals to our CLI AI tool -- approve Claude's destructive commands from your phone</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:22:29 +0000</pubDate>
      <link>https://dev.to/sumaninster/we-added-mobile-approvals-to-our-cli-ai-tool-approve-claudes-destructive-commands-from-your-19il</link>
      <guid>https://dev.to/sumaninster/we-added-mobile-approvals-to-our-cli-ai-tool-approve-claudes-destructive-commands-from-your-19il</guid>
      <description>&lt;p&gt;Quick share of a feature we built into &lt;strong&gt;Telechat&lt;/strong&gt; (self-hosted Claude AI bot) that's been surprisingly useful for devops workflows: &lt;strong&gt;Desktop Bridge with mobile approvals&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You're running Claude Code (or any Claude-powered agent) on your workstation. It's refactoring a module, running tests, deploying to staging. You step away for coffee, a meeting, or just to stretch.&lt;/p&gt;

&lt;p&gt;Claude hits a tool call that needs human approval:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;rm -rf build/&lt;/code&gt; (wants to clean the build directory)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push --force&lt;/code&gt; (rebase gone wrong)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kubectl delete pod&lt;/code&gt; (scaling decision)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without you at the keyboard, it just... waits. For however long you're gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;Telechat's Desktop Bridge connects your Claude Code session to your phone via Telegram, WhatsApp, or Slack. When Claude needs approval:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You get a push notification with exactly what Claude wants to execute&lt;/li&gt;
&lt;li&gt;You see the full command and context&lt;/li&gt;
&lt;li&gt;You tap &lt;strong&gt;Approve&lt;/strong&gt; or &lt;strong&gt;Deny&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Claude continues (or backs off)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All from your phone. No VPN, no SSH, no laptop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for devops
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Unattended CI/CD with a human gate.&lt;/strong&gt; Run Claude as part of your pipeline for code review, test generation, or deployment prep. Gate the destructive steps on mobile approval instead of blocking the pipeline until someone checks Slack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overnight tasks.&lt;/strong&gt; Kick off a large refactoring or migration analysis before bed. If Claude needs a decision at 2 AM, you'll see it in the morning and approve from your phone. It doesn't lose context while waiting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pair programming while mobile.&lt;/strong&gt; Reviewing Claude's work from your phone between meetings. Approve the good stuff, deny the risky stuff, add context via chat.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Telechat runs on your workstation alongside Claude Code. It acts as a bridge between Claude's approval prompts and your messaging app. When Claude's tool-use loop hits a human-approval checkpoint, Telechat intercepts it, formats the request, and sends it to your Telegram/WhatsApp/Slack. Your response flows back and unblocks the agent.&lt;/p&gt;

&lt;p&gt;No cloud relay — the bridge runs locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai
telechat init  &lt;span class="c"&gt;# interactive setup&lt;/span&gt;
telechat bridge &lt;span class="nt"&gt;--connect&lt;/span&gt;  &lt;span class="c"&gt;# link to Claude Code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=we-added-mobile-approvals-to-our-cli-ai-tool-approve-claude-s-destructive-commands-from-your-phone" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; | &lt;code&gt;npm install -g telechatai&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Curious if anyone else has solved the "approve AI actions remotely" problem differently.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>cli</category>
      <category>devops</category>
    </item>
    <item>
      <title>Telechat: self-host Claude AI across Telegram/WhatsApp/Slack with one npm install</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:22:29 +0000</pubDate>
      <link>https://dev.to/sumaninster/telechat-self-host-claude-ai-across-telegramwhatsappslack-with-one-npm-install-26pj</link>
      <guid>https://dev.to/sumaninster/telechat-self-host-claude-ai-across-telegramwhatsappslack-with-one-npm-install-26pj</guid>
      <description>&lt;p&gt;Built something the r/selfhosted crowd might appreciate: &lt;strong&gt;Telechat&lt;/strong&gt; — a self-hosted Claude AI bot that connects to Telegram, WhatsApp, Slack, and web chat from a single process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-hosted matters here
&lt;/h2&gt;

&lt;p&gt;Anthropic launched Claude Code Channels recently — Claude on Telegram/Discord, managed by Anthropic. It works great, but every message goes through their cloud. Telechat takes the opposite approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs on your machine (laptop, VPS, RPi, NAS — anything that runs Node.js or Python)&lt;/li&gt;
&lt;li&gt;Messages flow: phone → your server → Anthropic API → back to phone&lt;/li&gt;
&lt;li&gt;No relay server, no telemetry, no analytics&lt;/li&gt;
&lt;li&gt;SQLite for conversation history, stored locally&lt;/li&gt;
&lt;li&gt;The only external call is to Anthropic's chat-completions API for inference&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your messages, your hardware, your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init

&lt;span class="c"&gt;# pip&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init

&lt;span class="c"&gt;# Docker&lt;/span&gt;
docker run &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.telechat:/config telechatai/telechat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;telechat init&lt;/code&gt; walks you through an interactive setup — API key, bot tokens for whichever platforms you want, model preferences, budget limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-platform&lt;/strong&gt; — Telegram, WhatsApp, Slack, Web Chat. All running simultaneously from one process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart model routing&lt;/strong&gt; — Routes queries to the cheapest Claude model that handles them. Saves ~60% on API costs vs always using Sonnet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget caps&lt;/strong&gt; — Per-user daily and monthly limits. Set $5/day and forget about it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent memory&lt;/strong&gt; — SQLite-backed. Context carries across conversations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop Bridge&lt;/strong&gt; — If you run Claude Code on your desktop and it needs approval for a destructive action, you get a push notification on your phone. Approve/deny remotely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media support&lt;/strong&gt; — Send images for analysis, generate images if you have DALL-E configured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource usage
&lt;/h2&gt;

&lt;p&gt;Light. Single process, ~50MB RSS idle, spikes briefly during inference calls. SQLite means no database server. The bottleneck is always the Anthropic API latency, not local compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Self-hosting tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run behind a reverse proxy (Caddy/nginx) for HTTPS if using webhooks&lt;/li&gt;
&lt;li&gt;Telegram supports long-polling (no public IP needed) — great for home setups&lt;/li&gt;
&lt;li&gt;WhatsApp requires the WhatsApp Business API (webhook-based, needs HTTPS)&lt;/li&gt;
&lt;li&gt;Set up systemd/Docker restart policies for reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=telechat-self-host-claude-ai-across-telegram-whatsapp-slack-with-one-npm-install" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; | &lt;a href="https://github.com/telechatai" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback from the self-hosting community. What would make this more useful for your setup?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>node</category>
    </item>
    <item>
      <title>I built a self-hosted alternative to Claude Code Channels -- here's why</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:14:44 +0000</pubDate>
      <link>https://dev.to/sumaninster/i-built-a-self-hosted-alternative-to-claude-code-channels-heres-why-3j0g</link>
      <guid>https://dev.to/sumaninster/i-built-a-self-hosted-alternative-to-claude-code-channels-heres-why-3j0g</guid>
      <description>&lt;p&gt;When Claude Code Channels launched, I was stoked — Claude on my phone, finally. Then I hit the limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only Telegram and Discord. I live in WhatsApp (most of the world does).&lt;/li&gt;
&lt;li&gt;Everything routes through Anthropic's servers. Fine for most people, but I work with clients who have strict data policies.&lt;/li&gt;
&lt;li&gt;Requires Pro subscription. I was already spending less via API keys for my usage pattern.&lt;/li&gt;
&lt;li&gt;No budget controls. I wanted to give Claude access to my team without worrying about runaway costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;Telechat&lt;/strong&gt; — same idea (Claude on your phone), completely different architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's self-hosted.&lt;/strong&gt; Runs as one process on your machine. Messages go from your phone → your server → Anthropic API → back. No relay, no middleware, no telemetry. Your conversations never touch any server I control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4 platforms, not 2.&lt;/strong&gt; Telegram, WhatsApp, Slack, and web chat. All from one process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart model routing.&lt;/strong&gt; This is the cost killer. Telechat looks at each message and routes it to the cheapest model that can handle it. "What time is it in Tokyo?" → Haiku ($0.001). "Review this PR" → Opus. In practice, ~70% of my messages hit Haiku or Sonnet. Saves about 60% vs always using Sonnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per-user budget caps.&lt;/strong&gt; Daily and monthly limits. 80% warning, hard cutoff at 100%. Essential when you're sharing with a team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desktop Bridge&lt;/strong&gt; — this is the feature that keeps surprising people. When Claude Code is running on your desktop and wants to do something destructive (delete a file, run a risky command), you get a push notification on your phone. Tap approve or deny. Keep working from the couch while Claude codes at your desk.&lt;/p&gt;

&lt;p&gt;Setup is literally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Walk through the interactive setup, add your API key and bot tokens, done.&lt;/p&gt;

&lt;p&gt;I'm not going to pretend it's better than Channels in every way. Channels wins on zero-setup convenience and being a first-party Anthropic product. But if you need WhatsApp, want self-hosted privacy, or care about cost control, give Telechat a look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=i-built-a-self-hosted-alternative-to-claude-code-channels-here-s-why" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; | &lt;code&gt;npm install -g telechatai&lt;/code&gt; | &lt;code&gt;pip install telechatai&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions. Roast the architecture, I can take it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>software</category>
      <category>tools</category>
    </item>
    <item>
      <title>How Telechat routes Claude queries to save 60% on API costs</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:12:31 +0000</pubDate>
      <link>https://dev.to/sumaninster/how-telechat-routes-claude-queries-to-save-60-on-api-costs-2c3</link>
      <guid>https://dev.to/sumaninster/how-telechat-routes-claude-queries-to-save-60-on-api-costs-2c3</guid>
      <description>&lt;p&gt;Most Claude-powered applications use a single model for everything. A "what's 2+2?" gets the same Sonnet treatment as "review this 500-line PR for security vulnerabilities." That's like taking a taxi to the mailbox.&lt;/p&gt;

&lt;p&gt;Telechat's smart model router fixes this. It analyzes each incoming message and routes it to the cheapest Claude model that can handle it — without sacrificing quality on complex queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost problem
&lt;/h2&gt;

&lt;p&gt;Claude's pricing varies dramatically by model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input (per 1M tokens)&lt;/th&gt;
&lt;th&gt;Output (per 1M tokens)&lt;/th&gt;
&lt;th&gt;Relative cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Haiku&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;td&gt;1x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonnet&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;12x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;$75.00&lt;/td&gt;
&lt;td&gt;60x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A typical conversational message (100 input tokens, 200 output tokens) costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Haiku: $0.000275&lt;/li&gt;
&lt;li&gt;Sonnet: $0.0033&lt;/li&gt;
&lt;li&gt;Opus: $0.0165&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's a 60x cost spread. If 70% of your messages are simple enough for Haiku and only 5% need Opus, you're massively overpaying by defaulting to Sonnet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The routing algorithm
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Message classification
&lt;/h3&gt;

&lt;p&gt;The router categorizes each message into complexity tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 (Haiku):&lt;/strong&gt; Factual questions, simple math, translations, format conversions, quick lookups. Pattern: short messages, no code blocks, no "review/analyze/design" keywords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 (Sonnet):&lt;/strong&gt; Code explanations, summaries, content generation, moderate analysis. Pattern: medium-length messages, single code blocks, "explain/summarize/write" keywords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 3 (Opus):&lt;/strong&gt; Architecture reviews, complex multi-step reasoning, large code reviews, security analysis. Pattern: long messages, multiple code blocks, "review/architect/design/security" keywords.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Context-aware adjustment
&lt;/h3&gt;

&lt;p&gt;The router considers conversation context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the last 3 messages were all Tier 1, and this message is ambiguous, keep it at Tier 1&lt;/li&gt;
&lt;li&gt;If the conversation involves code, bump ambiguous messages to Tier 2&lt;/li&gt;
&lt;li&gt;If the user has explicitly set a model preference, respect it&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Confidence scoring
&lt;/h3&gt;

&lt;p&gt;Each classification gets a confidence score. If below a configurable threshold (default: 0.7), the router defaults up one tier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;tier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tier&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MAX_TIER&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conservative by default. You'd rather overspend by $0.003 than give a bad answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The math
&lt;/h2&gt;

&lt;p&gt;Based on 30 days of moderate use (~50 messages/day):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Without routing (all Sonnet)&lt;/th&gt;
&lt;th&gt;With routing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;~1,500 messages/month&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost: $4.95/month&lt;/td&gt;
&lt;td&gt;Cost: $1.89/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Haiku: 68% of messages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Sonnet: 27% of messages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Opus: 5% of messages&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Savings: 62%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For heavier usage (200 messages/day): $19.80 → $7.56.&lt;/p&gt;

&lt;h2&gt;
  
  
  Budget caps: The safety net
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BudgetTracker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_budget&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;estimated_cost&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;daily_spent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_daily_spend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;monthly_spent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_monthly_spend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;daily_spent&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;estimated_cost&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;daily_limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;BudgetStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BLOCKED&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;monthly_spent&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;estimated_cost&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;monthly_limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;BudgetStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BLOCKED&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;daily_spent&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;daily_limit&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;BudgetStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WARNING&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;BudgetStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OK&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cost is estimated before the API call and reconciled after with actual token counts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"default_model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sonnet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"confidence_threshold"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tier_overrides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"code_review"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"opus"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"translation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"haiku"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"budget"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"daily_limit_usd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;5.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"monthly_limit_usd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;50.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"warning_threshold"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Force a specific model per-message: &lt;code&gt;/opus Review this deployment script for security issues&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tradeoffs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Routing adds latency.&lt;/strong&gt; The classification pass takes 50-100ms. For Haiku queries (~300ms), that's noticeable. For Opus queries (2-5s), it's invisible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misroutes happen.&lt;/strong&gt; About 3-5% of messages get routed to a model that's arguably too weak. The confidence threshold helps, but it's not perfect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai
telechat init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=how-telechat-routes-claude-queries-to-save-60-on-api-costs" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; | Open source, free forever.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>claude</category>
      <category>llm</category>
    </item>
    <item>
      <title>Telechat vs Claude Code Channels: Which Claude-on-mobile setup is right for you?</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:07:32 +0000</pubDate>
      <link>https://dev.to/sumaninster/telechat-vs-claude-code-channels-which-claude-on-mobile-setup-is-right-for-you-2a8k</link>
      <guid>https://dev.to/sumaninster/telechat-vs-claude-code-channels-which-claude-on-mobile-setup-is-right-for-you-2a8k</guid>
      <description>&lt;p&gt;If you want Claude AI on your phone, you now have two real options: &lt;strong&gt;Claude Code Channels&lt;/strong&gt; (Anthropic's official integration) and &lt;strong&gt;Telechat&lt;/strong&gt; (an open-source, self-hosted alternative). Both solve the same problem — getting Claude into your messaging apps — but they make fundamentally different architectural choices.&lt;/p&gt;

&lt;p&gt;This is an honest comparison. I built Telechat, so I'm biased, but I'll be upfront about where Channels is the better choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quick version
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Claude Code Channels&lt;/th&gt;
&lt;th&gt;Telechat&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platforms&lt;/td&gt;
&lt;td&gt;Telegram, Discord&lt;/td&gt;
&lt;td&gt;Telegram, WhatsApp, Slack, Web Chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Cloud (Anthropic servers)&lt;/td&gt;
&lt;td&gt;Self-hosted (your machine)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup time&lt;/td&gt;
&lt;td&gt;~2 minutes&lt;/td&gt;
&lt;td&gt;~5 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing&lt;/td&gt;
&lt;td&gt;Requires Claude Pro/Max/Enterprise&lt;/td&gt;
&lt;td&gt;Anthropic API key (pay per token)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Message privacy&lt;/td&gt;
&lt;td&gt;Routes through Anthropic&lt;/td&gt;
&lt;td&gt;Never leaves your machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model selection&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;td&gt;Smart routing (you configure thresholds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budget controls&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Per-user daily + monthly caps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile approvals&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (Desktop Bridge)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance&lt;/td&gt;
&lt;td&gt;Zero (managed)&lt;/td&gt;
&lt;td&gt;You manage updates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Architecture: Cloud vs Self-hosted
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Channels&lt;/strong&gt; runs on Anthropic's infrastructure. You connect your Telegram or Discord account, and messages flow through Anthropic's servers to Claude and back. This means zero infrastructure on your end, but your messages are processed on Anthropic's cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Telechat&lt;/strong&gt; runs as a single process on your machine — a laptop, a VPS, a Raspberry Pi, whatever. Messages arrive via webhooks (or long-polling for Telegram), get processed locally, hit the Anthropic API for the AI response, and go back. The only external call is to Anthropic's API for the actual Claude inference. There's no relay server, no telemetry, no middleware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When Channels wins:&lt;/strong&gt; You don't want to manage infrastructure. You're already paying for Claude Pro. You trust Anthropic with your messages. You just want it to work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When Telechat wins:&lt;/strong&gt; You have strict data policies (enterprise, healthcare, legal). You're in a region where data sovereignty matters. You want to run Claude on a VPS you control. You prefer paying per-token over a monthly subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform coverage
&lt;/h2&gt;

&lt;p&gt;This is a clear differentiator. Channels supports Telegram and Discord. Telechat supports Telegram, WhatsApp, Slack, and web chat.&lt;/p&gt;

&lt;p&gt;If you need WhatsApp — and in India, Southeast Asia, Latin America, and much of Africa, WhatsApp &lt;em&gt;is&lt;/em&gt; the messaging app — Channels isn't an option today. Similarly, if your team lives in Slack, Telechat integrates directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost model
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Channels&lt;/strong&gt; requires a Claude Pro subscription ($20/month) at minimum. You get the subscription's usage limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Telechat&lt;/strong&gt; uses a plain Anthropic API key. You pay per token. For moderate usage (say, 50 messages/day), this often works out cheaper — especially with smart model routing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart model routing
&lt;/h3&gt;

&lt;p&gt;Telechat's model router analyzes each incoming message and picks the cheapest Claude model that can handle it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple factual questions → Haiku (~$0.001/query)&lt;/li&gt;
&lt;li&gt;Code explanations, summaries → Sonnet (~$0.01/query)&lt;/li&gt;
&lt;li&gt;Architecture reviews, complex reasoning → Opus (~$0.05/query)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You configure the confidence thresholds. In practice, 70-80% of messages route to Haiku or Sonnet, cutting costs roughly 60% compared to always using Sonnet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desktop Bridge: The unique feature
&lt;/h2&gt;

&lt;p&gt;This is Telechat's most distinctive capability. When you're running Claude Code on your desktop and it hits a tool call that needs human approval — say, it wants to delete a file or run a destructive command — Telechat sends a push notification to your phone via Telegram or WhatsApp.&lt;/p&gt;

&lt;p&gt;You see exactly what Claude wants to do, and you tap Approve or Deny. The desktop agent continues without you being at your desk. No other tool does this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should use what
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use Channels if:&lt;/strong&gt; You want zero maintenance, you're already on Claude Pro, you only need Telegram or Discord, and you're comfortable with cloud processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Telechat if:&lt;/strong&gt; You need WhatsApp or Slack, you want self-hosted privacy, you want granular cost control, you need the Desktop Bridge for remote approvals, or you prefer pay-per-token economics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Telechat: &lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=telechat-vs-claude-code-channels-which-claude-on-mobile-setup-is-right-for-you" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt; | &lt;code&gt;npm install -g telechatai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Claude Code Channels: Available in Claude Pro/Max/Enterprise settings&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Show HN: Telechat – Self-hosted Claude on Telegram/WhatsApp/Slack, no cloud relay</title>
      <dc:creator>Subhendu Das</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:07:30 +0000</pubDate>
      <link>https://dev.to/sumaninster/show-hn-telechat-self-hosted-claude-on-telegramwhatsappslack-no-cloud-relay-50dg</link>
      <guid>https://dev.to/sumaninster/show-hn-telechat-self-hosted-claude-on-telegramwhatsappslack-no-cloud-relay-50dg</guid>
      <description>&lt;p&gt;Hey HN,&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Telechat&lt;/strong&gt; — a self-hosted Claude AI bot that runs on your machine and connects to Telegram, WhatsApp, Slack, and web chat simultaneously from a single process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;When Anthropic launched Claude Code Channels in March, I was excited — finally, Claude on my phone. But Channels only supports Telegram and Discord, routes everything through Anthropic's servers, and requires a Pro/Max subscription. I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeps every message on my machine (zero cloud relay)&lt;/li&gt;
&lt;li&gt;Works across more surfaces (WhatsApp is essential in India/SE Asia/LatAm)&lt;/li&gt;
&lt;li&gt;Lets me use a plain API key and control costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built Telechat.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; telechatai &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telechat init
&lt;span class="c"&gt;# or: pip install telechatai&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command sets up config, walks you through bot tokens, and starts the process. From there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart model routing&lt;/strong&gt; — Routes each query to the cheapest Claude model that can handle it. Quick factual question? Haiku ($0.001). Architecture review? Opus. You pick the thresholds. In my usage this cuts costs ~60% vs always hitting Sonnet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget caps&lt;/strong&gt; — Per-user daily and monthly limits in dollars. 80% warning, hard cutoff at 100%. No surprise bills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop Bridge&lt;/strong&gt; — This is the one I'm most proud of. When Claude is running a coding agent on your desktop and hits a tool call that needs approval, you get a push notification on your phone. Approve or deny from Telegram/WhatsApp while you're away from your desk. No other tool does this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent memory&lt;/strong&gt; — SQLite-backed conversation history. Context carries across sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media generation&lt;/strong&gt; — Send images, get analysis. Generate images via DALL-E if configured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Telechat runs as a single Node.js/Python process on your machine. Messages from Telegram/WhatsApp/Slack/Web arrive at local webhook endpoints (or long-polling for Telegram). They're processed locally, sent to the Anthropic API, and the response goes back. Your messages never touch any server I control. There is no cloud relay, no telemetry, no analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest comparison with Claude Code Channels
&lt;/h2&gt;

&lt;p&gt;Channels wins on: zero setup (it just works if you have Claude Pro), Anthropic-supported (it's a first-party product), no self-hosting overhead.&lt;/p&gt;

&lt;p&gt;Telechat wins on: privacy (self-hosted), cost (API keys are cheaper than Pro for moderate usage), surfaces (4 vs 2), budget controls (Channels has none), Desktop Bridge (unique feature), and you own the deployment.&lt;/p&gt;

&lt;p&gt;If you're already paying for Claude Pro and just want Telegram, Channels is the easier choice. If you care about privacy, cost control, or need WhatsApp/Slack, Telechat is worth the 5-minute setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://telechat.fyi?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=telechat&amp;amp;utm_content=show-hn-telechat-self-hosted-claude-on-telegram-whatsapp-slack-no-cloud-relay" rel="noopener noreferrer"&gt;telechat.fyi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;code&gt;npm install -g telechatai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PyPI: &lt;code&gt;pip install telechatai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/telechatai" rel="noopener noreferrer"&gt;github.com/telechatai&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy to answer any questions about the architecture, self-hosting tradeoffs, or the Desktop Bridge implementation.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
