<?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: joe shawn</title>
    <description>The latest articles on DEV Community by joe shawn (@joe_shawn).</description>
    <link>https://dev.to/joe_shawn</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3813021%2F82a13f59-f99b-4508-aa3d-04d422b1d396.JPG</url>
      <title>DEV Community: joe shawn</title>
      <link>https://dev.to/joe_shawn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joe_shawn"/>
    <language>en</language>
    <item>
      <title>How I Turned Claude Code into a 24/7 Slack &amp; Telegram Bot (No AI Framework Needed)</title>
      <dc:creator>joe shawn</dc:creator>
      <pubDate>Sun, 08 Mar 2026 14:24:25 +0000</pubDate>
      <link>https://dev.to/joe_shawn/how-i-turned-claude-code-into-a-247-slack-telegram-bot-no-ai-framework-needed-5184</link>
      <guid>https://dev.to/joe_shawn/how-i-turned-claude-code-into-a-247-slack-telegram-bot-no-ai-framework-needed-5184</guid>
      <description>&lt;p&gt;Claude Code can write code, run tests, analyze data, and debug anything. But it's stuck in your terminal.&lt;/p&gt;

&lt;p&gt;What if your entire team could talk to it in Slack? What if it answered questions in your Telegram group 24/7? What if you could embed it into your own product with 5 lines of code?&lt;/p&gt;

&lt;p&gt;That's exactly what I built. Here's how.&lt;/p&gt;

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

&lt;p&gt;I have Claude Code running locally. It's great — it understands my codebase, writes solid code, runs shell commands, does git operations. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My teammates can't use it (it's &lt;em&gt;my&lt;/em&gt; terminal)&lt;/li&gt;
&lt;li&gt;I can't leave it running as a service&lt;/li&gt;
&lt;li&gt;There's no API to integrate it into our internal tools&lt;/li&gt;
&lt;li&gt;When I want to switch to Cursor or Codex, I have to change my entire workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I didn't want to build another LangChain app or wire up API calls. Claude Code is already a fully capable agent — I just needed to give it a way to receive messages from Slack and send replies back.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/0xranx/golembot" rel="noopener noreferrer"&gt;GolemBot&lt;/a&gt; wraps your existing coding agent (Claude Code, Cursor, OpenCode, or Codex) and connects it to messaging platforms. The agent is the brain — GolemBot is the body.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Slack / Telegram / Discord / Feishu / DingTalk / WeCom
                    |
                    v
             GolemBot Gateway
                    |
                    v
    Claude Code / Cursor / OpenCode / Codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No prompt engineering. No API wiring. No vector databases. The agent you already have does all the thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install
&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; golembot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requirements: Node.js 18+ and at least one coding agent CLI installed (e.g., Claude Code).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Run the Onboard Wizard
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-bot &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;my-bot
golembot onboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The wizard walks you through everything:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick your engine&lt;/strong&gt; — Claude Code, Cursor, OpenCode, or Codex&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose a skill template&lt;/strong&gt; — or start with built-in skills only&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect IM channels&lt;/strong&gt; — paste your Slack/Telegram/Discord bot token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launch&lt;/strong&gt; — the gateway starts immediately&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Your coding agent is now live in your team chat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Talk to It
&lt;/h2&gt;

&lt;p&gt;In Slack or Telegram, just @ the bot:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;@my-bot analyze the error rate in our logs from the past 24 hours&lt;/p&gt;

&lt;p&gt;@my-bot write a Python script that converts all PNGs in /uploads to WebP&lt;/p&gt;

&lt;p&gt;@my-bot review the latest PR on our repo and summarize the changes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Behind the scenes, GolemBot passes the message to Claude Code (or whatever engine you chose), streams the response, and sends it back to the channel. The agent has full access to your workspace — files, git, shell — just like it does in your terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Or: Embed in Your Own Product
&lt;/h2&gt;

&lt;p&gt;Don't need IM? Use GolemBot as a library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAssistant&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;golembot&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createAssistant&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./my-agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Analyze last month sales data&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Five lines. Full agent power. Works in any Node.js backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use the Claude API?
&lt;/h2&gt;

&lt;p&gt;Good question. Here's the difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;GolemBot + Claude Code&lt;/th&gt;
&lt;th&gt;Claude API wrapper&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reads/writes files in your workspace&lt;/td&gt;
&lt;td&gt;You build file tools from scratch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shell commands&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Runs git, npm, tests, anything&lt;/td&gt;
&lt;td&gt;You build exec tools from scratch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Understands your entire codebase&lt;/td&gt;
&lt;td&gt;You implement RAG + chunking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tool use&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built into the agent&lt;/td&gt;
&lt;td&gt;You define JSON schemas + handlers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Upgrades&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude Code gets smarter → your bot gets smarter&lt;/td&gt;
&lt;td&gt;You maintain everything&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Claude Code is already a complete agent. GolemBot just connects it to the outside world.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Skill System
&lt;/h2&gt;

&lt;p&gt;Want your bot to do something specific? Add a Skill — it's just a directory with a &lt;code&gt;SKILL.md&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skills/
  code-review/
    SKILL.md    # "When asked to review code, check for..."
  daily-report/
    SKILL.md    # "Generate a summary of git commits..."
    template.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop it in, the bot gains the ability. Remove it, the ability is gone. No code changes, no redeployment.&lt;/p&gt;

&lt;p&gt;GolemBot is also compatible with &lt;a href="https://clawhub.ai" rel="noopener noreferrer"&gt;ClawHub&lt;/a&gt;'s 13,000+ community skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;golembot skill search &lt;span class="s2"&gt;"code review"&lt;/span&gt;
golembot skill add clawhub:code-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Engine Switching
&lt;/h2&gt;

&lt;p&gt;Tired of Claude Code? Switch to Cursor or Codex in one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# golem.yaml&lt;/span&gt;
&lt;span class="na"&gt;engine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;codex&lt;/span&gt;    &lt;span class="c1"&gt;# was: claude-code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;StreamEvent&lt;/code&gt; interface is identical across all engines. Your IM connections, skills, and sessions keep working.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Multiple Bots
&lt;/h2&gt;

&lt;p&gt;Need different bots for different teams?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;golembot fleet serve    &lt;span class="c"&gt;# starts all bots, unified dashboard&lt;/span&gt;
golembot fleet &lt;span class="nb"&gt;ls&lt;/span&gt;       &lt;span class="c"&gt;# see status of all running bots&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each bot gets its own engine, skills, and channel connections. The Fleet Dashboard shows them all in one view.&lt;/p&gt;

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

&lt;p&gt;Everything lives in one file — &lt;code&gt;golem.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;team-assistant&lt;/span&gt;
&lt;span class="na"&gt;engine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-code&lt;/span&gt;

&lt;span class="na"&gt;channels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;slack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;botToken&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${SLACK_BOT_TOKEN}&lt;/span&gt;
    &lt;span class="na"&gt;appToken&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${SLACK_APP_TOKEN}&lt;/span&gt;
  &lt;span class="na"&gt;telegram&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;botToken&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${TELEGRAM_BOT_TOKEN}&lt;/span&gt;
  &lt;span class="na"&gt;discord&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;botToken&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${DISCORD_BOT_TOKEN}&lt;/span&gt;

&lt;span class="na"&gt;gateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&lt;/span&gt;
  &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${GOLEM_TOKEN}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sensitive values use &lt;code&gt;${ENV_VAR}&lt;/code&gt; references. Put secrets in &lt;code&gt;.env&lt;/code&gt;, commit &lt;code&gt;golem.yaml&lt;/code&gt; to your repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Deployment
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node:22-slim&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; golembot
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /assistant&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 3000&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["golembot", "gateway"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try It Now
&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; golembot
&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-bot &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;my-bot
golembot onboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The whole setup takes about 2 minutes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/0xranx/golembot" rel="noopener noreferrer"&gt;github.com/0xranx/golembot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href="https://0xranx.github.io/golembot/" rel="noopener noreferrer"&gt;0xranx.github.io/golembot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/golembot" rel="noopener noreferrer"&gt;npmjs.com/package/golembot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href="https://discord.gg/tgU5FXChgM" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIT licensed. No telemetry. No network calls beyond the underlying agent.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this useful, a star on &lt;a href="https://github.com/0xranx/golembot" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; would mean a lot. Questions or feedback? Open an issue or join the Discord.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
