<?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: Serge</title>
    <description>The latest articles on DEV Community by Serge (@olosegres).</description>
    <link>https://dev.to/olosegres</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%2F4116043%2Fa0ab7406-4967-41c6-88a2-d45196928116.jpg</url>
      <title>DEV Community: Serge</title>
      <link>https://dev.to/olosegres</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olosegres"/>
    <language>en</language>
    <item>
      <title>If you also want to finally get away from your laptop and work from anywhere, you’ll probably find this interesting :)</title>
      <dc:creator>Serge</dc:creator>
      <pubDate>Tue, 08 Sep 2026 17:45:50 +0000</pubDate>
      <link>https://dev.to/olosegres/if-you-also-want-to-finally-get-away-from-your-laptop-and-work-from-anywhere-youll-probably-find-10e3</link>
      <guid>https://dev.to/olosegres/if-you-also-want-to-finally-get-away-from-your-laptop-and-work-from-anywhere-youll-probably-find-10e3</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75" class="crayons-story__hidden-navigation-link"&gt;Vibe-coding by voice, from my phone: Claude Code and OpenCode over Telegram&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/olosegres" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4116043%2Fa0ab7406-4967-41c6-88a2-d45196928116.jpg" alt="olosegres profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/olosegres" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Serge
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Serge
                
                
              
              &lt;div id="story-author-preview-content-4608283" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/olosegres" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4116043%2Fa0ab7406-4967-41c6-88a2-d45196928116.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Serge&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 8&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75" id="article-link-4608283"&gt;
          Vibe-coding by voice, from my phone: Claude Code and OpenCode over Telegram
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claude"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claude&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>development</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Vibe-coding by voice, from my phone: Claude Code and OpenCode over Telegram</title>
      <dc:creator>Serge</dc:creator>
      <pubDate>Tue, 08 Sep 2026 17:00:22 +0000</pubDate>
      <link>https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75</link>
      <guid>https://dev.to/olosegres/vibe-coding-by-voice-from-my-phone-claude-code-and-opencode-over-telegram-j75</guid>
      <description>&lt;p&gt;A while back I started running Claude Code on my computer, and every time I&lt;br&gt;
stepped out I wanted to keep an eye on what the agent was doing. Back then there&lt;br&gt;
was no way to reach it from your phone, so I quickly hacked together a little&lt;br&gt;
tool — also running on my machine — that launched Claude Code and let me talk to&lt;br&gt;
it over Telegram. Suddenly I could keep working from my phone while I was away&lt;br&gt;
from the desk. The catch: it all still ran on my local computer, which had to&lt;br&gt;
stay on the whole time.&lt;/p&gt;

&lt;p&gt;Later Claude Code shipped its own phone integration — but it constantly glitches&lt;br&gt;
and drops, and you have to remember to turn it on in the first place. So I kept&lt;br&gt;
using my own thing, and along the way I added &lt;a href="https://opencode.ai" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt;&lt;br&gt;
next to Claude Code.&lt;/p&gt;

&lt;p&gt;It grew well past the original "peek at the agent while I'm out." I can drive it&lt;br&gt;
by voice, restart agents, even open a raw terminal to see what's running and&lt;br&gt;
kill or keep whatever I want — at that point it's less "control the agent" and&lt;br&gt;
more "control the whole machine." And the big one: I moved the whole thing onto&lt;br&gt;
a VPS. Now nothing has to run on my laptop 24/7 — the agents are just always up,&lt;br&gt;
reachable from my phone, tablet, or desktop, whether my laptop is awake or not.&lt;br&gt;
I can queue up work for them ahead of time, and they even send videos and&lt;br&gt;
screenshots back into the chat.&lt;/p&gt;

&lt;p&gt;I built it for myself, use it daily, kept it quietly open source — figured it's&lt;br&gt;
time to tell people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I run &lt;strong&gt;Claude Code&lt;/strong&gt; and &lt;strong&gt;OpenCode&lt;/strong&gt; on my own VPS and drive them entirely from Telegram — by voice or text, from my phone, tablet, or desktop.&lt;/li&gt;
&lt;li&gt;One Telegram forum &lt;strong&gt;topic = one project = one agent session&lt;/strong&gt;. Topics behave like terminal tabs; Claude Code in one, OpenCode in another.&lt;/li&gt;
&lt;li&gt;It's a &lt;strong&gt;relay, not a cloud&lt;/strong&gt;: the bot talks to the agents on &lt;code&gt;localhost&lt;/code&gt; and reaches me over Telegram — no open ports, nothing exposed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted, MIT.&lt;/strong&gt; Sessions survive restarts, work can be scheduled ahead, and the agent sends screenshots and videos back into the chat.&lt;/li&gt;
&lt;li&gt;Setup is a few minutes; the full walkthrough lives in the &lt;a href="https://github.com/olosegres/telegramcode" rel="noopener noreferrer"&gt;repo&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What is TelegramCode?
&lt;/h2&gt;

&lt;p&gt;TelegramCode is a free, self-hosted, MIT-licensed Telegram bot that lets you drive AI coding agents — &lt;strong&gt;Claude Code&lt;/strong&gt; and &lt;strong&gt;OpenCode&lt;/strong&gt; — running on your own VPS or machine, entirely from your phone, with one Telegram forum topic per project.&lt;/p&gt;

&lt;p&gt;It isn't a cloud service and there's no account to sign up for. You run the bot next to your agents; Telegram is just the remote control.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I actually use it for
&lt;/h2&gt;

&lt;p&gt;The install was never the point — this is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Talking to it, literally.&lt;/strong&gt; I hold the mic, describe a task, and the bot transcribes the voice note and hands it to the agent. Half my prompts never get typed. The reply streams back into the topic as the agent works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One topic per project, like terminal tabs.&lt;/strong&gt; Each forum topic binds to a folder and runs its own isolated session. I keep several open — one project on Claude Code, another on OpenCode, a third running in parallel on the same repo — and switch between them like tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throwing a bug at it.&lt;/strong&gt; A screenshot of broken layout, a stack trace, a PDF — I drop it straight into the topic and it goes to the agent with my note. (An album arrives as a single prompt.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queuing work for later.&lt;/strong&gt; I &lt;code&gt;/schedule&lt;/code&gt; a prompt — "every weekday at 9, go through the open PRs and summarize" — and it runs as a fresh session at that time, even if I'm nowhere near a keyboard. It survives restarts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The one notification that matters.&lt;/strong&gt; I keep every topic muted. The single moment the agent needs a decision, it &lt;em&gt;pins&lt;/em&gt; the question — and a pin pierces the mute, so I get exactly one buzz instead of a stream of noise. I answer with a tap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlling the machine, not just the agent.&lt;/strong&gt; I can restart an agent, or open a raw &lt;code&gt;/terminal&lt;/code&gt; in the project folder to see what's running, kill something, leave something. At that point it's closer to carrying my whole dev box in my pocket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It talks back with more than text.&lt;/strong&gt; The agent can send screenshots, charts, even short videos into the chat — handy when "show me" beats "describe it."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ipbud2ss2inx6ctfr9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ipbud2ss2inx6ctfr9c.png" alt="Screenshot: the Telegram forum topic list — one topic per project, a couple with a live agent (Claude Code in one, OpenCode in another) — the topics act like terminal tabs" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And because the whole thing lives on a VPS, none of this depends on my laptop being awake. The agents are just always up — reachable from my phone on a bus, my tablet on the couch, or my desktop when I'm back at it.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it all works
&lt;/h2&gt;

&lt;p&gt;The bot is almost entirely a &lt;strong&gt;relay&lt;/strong&gt;. It adds no "AI" of its own — its job is to route your phone to the agent running on your box and stream the agent's output back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One topic ↔ one folder ↔ one session.&lt;/strong&gt; Routing, model, and history are isolated per topic. Two topics can point at the same folder when you want two agents on one repo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two backends, your pick per topic.&lt;/strong&gt; Claude Code runs as a local process the bot drives; OpenCode runs as a local HTTP server the bot talks to. From your side it's the same interface — &lt;code&gt;/claude&lt;/code&gt; or &lt;code&gt;/opencode&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outgoing only — nothing exposed.&lt;/strong&gt; The bot reaches Telegram over an outbound connection and talks to the agents on &lt;code&gt;localhost&lt;/code&gt;. No open ports, no tunnel, no public endpoint on your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessions survive restarts.&lt;/strong&gt; The agents live in external processes, so a bot update or a server reboot re-adopts them instead of killing them — and the same session is still reachable over plain SSH if you sit down at the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice, files, scheduling, pins&lt;/strong&gt; are the layers on top: voice notes go through Whisper (Groq, free tier), files are saved and announced to the agent, scheduled prompts re-arm after a reboot, and pending questions get pinned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's the whole model: your agents and your code stay on hardware you own; Telegram is just the pane of glass you already carry.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Setup takes a few minutes, and the full step-by-step — BotFather, group setup, config — lives in the &lt;a href="https://github.com/olosegres/telegramcode" rel="noopener noreferrer"&gt;README&lt;/a&gt;. The short version:&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; telegramcode      &lt;span class="c"&gt;# needs Node ≥ 22&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a bot with &lt;a href="https://t.me/BotFather" rel="noopener noreferrer"&gt;@BotFather&lt;/a&gt;, drop its token into &lt;code&gt;~/.config/telegramcode/.env&lt;/code&gt;, then launch from the parent folder of your projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; telegramcode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open a Telegram topic, &lt;code&gt;/bind&lt;/code&gt; it to a project folder, and start an agent with &lt;code&gt;/claude&lt;/code&gt; or &lt;code&gt;/oc&lt;/code&gt;. That's it — type or talk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ov1gjngoxtv58gac9ak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ov1gjngoxtv58gac9ak.png" alt="A voice message from a phone → the transcript appears with a 🎤 mark → the agent's reply streams into the topic" width="800" height="831"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I lean on this every day, so it has grown a lot of features — very likely more than the other phone/Telegram bridges for coding agents. Here's the fuller map, beyond the basics above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two agents, your pick per topic&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code and OpenCode in the same bot — switch per topic, run them side by side.&lt;/li&gt;
&lt;li&gt;Per-topic model (&lt;code&gt;/model&lt;/code&gt;) and reasoning effort (&lt;code&gt;/effort&lt;/code&gt;), on both backends.&lt;/li&gt;
&lt;li&gt;Control how much you see: &lt;code&gt;/thinking&lt;/code&gt;, &lt;code&gt;/tool_results&lt;/code&gt;, &lt;code&gt;/subagent&lt;/code&gt;, &lt;code&gt;/verbosity&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The agent talks back — properly&lt;/strong&gt; (the part people miss)&lt;/p&gt;

&lt;p&gt;The bot hands the agent its own set of MCP tools, so it uses Telegram the right way instead of flattening everything into text:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send a &lt;strong&gt;video as a real, playable video&lt;/strong&gt; (not a GIF), a &lt;strong&gt;file as a file&lt;/strong&gt;, and an &lt;strong&gt;image inline as an image&lt;/strong&gt; — single items or a whole album.&lt;/li&gt;
&lt;li&gt;Send &lt;strong&gt;several separate messages at once&lt;/strong&gt; — e.g. a digest where each item lands as its own message instead of one giant wall.&lt;/li&gt;
&lt;li&gt;Schedule its &lt;strong&gt;own&lt;/strong&gt; prompts and jobs — the agent can set up its future runs, list them, and cancel them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Runs like infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosted, MIT, outgoing-only — no open ports, nothing exposed on your box.&lt;/li&gt;
&lt;li&gt;Sessions survive a restart of both the bot and the agent server; the same session is still reachable over plain SSH.&lt;/li&gt;
&lt;li&gt;Scheduled prompts (&lt;code&gt;/schedule&lt;/code&gt;) — cron, one-shot, or recurring, and restart-safe.&lt;/li&gt;
&lt;li&gt;Pinned question alerts — one pin pierces a muted topic, so you get exactly one buzz when the agent needs you.&lt;/li&gt;
&lt;li&gt;API-error auto-recovery — a rate-limited or logged-out agent is surfaced and retried instead of silently hanging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fits how you work&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run it from a forum group, from the bot's private chat, or both at once.&lt;/li&gt;
&lt;li&gt;Sign in to Claude right from the topic (&lt;code&gt;/login&lt;/code&gt;), or hand a provider key to the agent (&lt;code&gt;/connect&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Voice, file/photo/PDF intake, and tap-to-answer questions (covered above).&lt;/li&gt;
&lt;li&gt;12 UI languages, switchable per chat (&lt;code&gt;/language&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a few other Telegram bots for coding agents out there, and some are genuinely good — I won't knock them. For what it's worth, I was early to this: I'd been driving Claude Code from Telegram before it had any phone integration of its own, and this repo has been public since early 2026 — before the other OpenCode/Telegram bots. I just kept it low-key instead of promoting it, which is probably why you may have met one of the others first. My honest pitch is simple: this one runs &lt;strong&gt;both&lt;/strong&gt; Claude Code and OpenCode, it very likely covers more than the alternatives, and since I use it every single day, the everyday rough edges are the ones that actually got filed down.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few honest caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You need an always-on host.&lt;/strong&gt; A cheap VPS is the honest answer; on a laptop the agents are only reachable while it's awake.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bot access = shell access.&lt;/strong&gt; Anyone who can message the served group runs commands as the bot's OS user. Keep the group private; only trust people you'd give SSH to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your agent's own auth is on you.&lt;/strong&gt; Log Claude/OpenCode in to your provider, or hand the bot a key with &lt;code&gt;/connect&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram's limits.&lt;/strong&gt; ~20 MB per file, and long output is paced into chunks by design — that's not a stall.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is there a mobile client for Claude Code or OpenCode?
&lt;/h3&gt;

&lt;p&gt;No official app for either — TelegramCode is the closest thing, for both. It gives you a real phone UI (send prompts, switch models, tap to answer the agent's questions) over the agents running on your own machine, inside the Telegram app you already have.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I control my coding agent from my phone without exposing any ports?
&lt;/h3&gt;

&lt;p&gt;Yes. The bot talks to the agents on &lt;code&gt;localhost&lt;/code&gt; and reaches you through Telegram's servers, so nothing on your machine needs a public port or a tunnel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it run Claude Code too, or only OpenCode?
&lt;/h3&gt;

&lt;p&gt;Both, in the same bot. Each topic picks its backend — &lt;code&gt;/claude&lt;/code&gt; or &lt;code&gt;/opencode&lt;/code&gt; — so you can run Claude Code in one project and OpenCode in another.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to my session if the server restarts?
&lt;/h3&gt;

&lt;p&gt;It's re-adopted. The bot persists which topic maps to which session and re-attaches on boot; if the agent server itself restarts, it restores the sessions from disk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it really free?
&lt;/h3&gt;

&lt;p&gt;The bot is MIT and self-hosted — you pay only for your own VPS and your Claude/OpenCode usage. No SaaS layer, no account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;I stopped being chained to my desk the day my agents' questions started reaching my phone instead of a terminal I wasn't looking at. If that's a problem you have too, the repo is &lt;a href="https://github.com/olosegres/telegramcode" rel="noopener noreferrer"&gt;here&lt;/a&gt; (MIT). If not, no worries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next up:&lt;/strong&gt; I'll walk through the other half — standing up the VPS itself: how to provision it, what to watch out for, and how to keep your agents alive 24/7. That's the follow-up post.&lt;/p&gt;

&lt;p&gt;If you try it, I'd love to hear which agent you run in which topic — and what you'd want it to do while you're away from the keyboard.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>claude</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
