<?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: Suresh Pegadapelli</title>
    <description>The latest articles on DEV Community by Suresh Pegadapelli (@suresh_pegadapelli_dc84b6).</description>
    <link>https://dev.to/suresh_pegadapelli_dc84b6</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%2F3976255%2Fcf779553-7bcf-4047-829b-0934bf942537.jpg</url>
      <title>DEV Community: Suresh Pegadapelli</title>
      <link>https://dev.to/suresh_pegadapelli_dc84b6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suresh_pegadapelli_dc84b6"/>
    <language>en</language>
    <item>
      <title>How I Connected Claude Cowork to My Local Machine</title>
      <dc:creator>Suresh Pegadapelli</dc:creator>
      <pubDate>Wed, 29 Jul 2026 14:46:18 +0000</pubDate>
      <link>https://dev.to/suresh_pegadapelli_dc84b6/how-i-connected-claude-cowork-to-my-local-machine-3799</link>
      <guid>https://dev.to/suresh_pegadapelli_dc84b6/how-i-connected-claude-cowork-to-my-local-machine-3799</guid>
      <description>&lt;p&gt;I've been using Claude Cowork a lot, and it has genuinely changed how I work.&lt;/p&gt;

&lt;p&gt;It can understand my project, edit files, suggest improvements, and even help me debug problems.&lt;/p&gt;

&lt;p&gt;But I kept running into one limitation.&lt;/p&gt;

&lt;p&gt;Every time Cowork asked me to run tests, start a development server, install dependencies, or push code to GitHub, I had to stop what I was doing, switch to my terminal, run the command, and then copy the output back into the chat.&lt;/p&gt;

&lt;p&gt;After doing this over and over again, I started thinking...&lt;/p&gt;

&lt;p&gt;"What if Cowork could safely ask my own machine to do those tasks instead?"&lt;/p&gt;

&lt;p&gt;That idea became "cowork-to-code-bridge".&lt;/p&gt;

&lt;p&gt;The bridge runs as a small background process on my Mac or Linux machine. Instead of opening network ports or exposing a web server, it simply watches a shared folder for tasks from Cowork. When a new task appears, it runs it locally and sends the result back to the same conversation.&lt;/p&gt;

&lt;p&gt;I wanted to keep the design as simple and secure as possible.&lt;/p&gt;

&lt;p&gt;A few things that were important to me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It only runs scripts that I've explicitly approved.&lt;/li&gt;
&lt;li&gt;If I want, it can pause and ask for confirmation before running sensitive actions like deployments.&lt;/li&gt;
&lt;li&gt;It includes per-task cost limits so an AI mistake doesn't lead to unexpected API costs.&lt;/li&gt;
&lt;li&gt;If the same task is retried, it returns the previous result instead of running commands like &lt;code&gt;git push&lt;/code&gt; twice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Getting started only takes a minute.&lt;/p&gt;

&lt;p&gt;curl -fsSL &lt;a href="https://raw.githubusercontent.com/abhinaykrupa/cowork-to-code-bridge/main/install.sh" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/abhinaykrupa/cowork-to-code-bridge/main/install.sh&lt;/a&gt; | bash&lt;/p&gt;

&lt;p&gt;Then simply ask Cowork to set up the bridge.&lt;/p&gt;

&lt;p&gt;The project is still in its early stages (v0.5.x), so I'm much more interested in feedback than stars.&lt;/p&gt;

&lt;p&gt;If you try it, I'd really like to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What worked well?&lt;/li&gt;
&lt;li&gt;What didn't?&lt;/li&gt;
&lt;li&gt;What would make it more useful for your workflow?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/abhinaykrupa/cowork-to-code-bridge" rel="noopener noreferrer"&gt;https://github.com/abhinaykrupa/cowork-to-code-bridge&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cowork</category>
      <category>claude</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>5 Things I Learned Building My First AI Developer Tool</title>
      <dc:creator>Suresh Pegadapelli</dc:creator>
      <pubDate>Tue, 28 Jul 2026 11:59:36 +0000</pubDate>
      <link>https://dev.to/suresh_pegadapelli_dc84b6/5-things-i-learned-building-my-first-ai-developer-tool-18nd</link>
      <guid>https://dev.to/suresh_pegadapelli_dc84b6/5-things-i-learned-building-my-first-ai-developer-tool-18nd</guid>
      <description>&lt;h1&gt;
  
  
  5 Things I Learned Building My First AI Developer Tool
&lt;/h1&gt;

&lt;p&gt;When I started building &lt;strong&gt;cowork-to-code-bridge&lt;/strong&gt;, I thought the hard part would be writing the code.&lt;/p&gt;

&lt;p&gt;I was wrong.&lt;/p&gt;

&lt;p&gt;The real challenge wasn't Python, file handling, or process management—it was making the tool secure, reliable, and simple enough that I'd actually trust it on my own machine.&lt;/p&gt;

&lt;p&gt;Looking back, here are five lessons I learned during the journey.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;My first idea wasn't the best idea&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Like many developers, my first instinct was to use a web server.&lt;/p&gt;

&lt;p&gt;It seemed obvious. Claude sends a request, a local server receives it, executes the task, and sends the response back.&lt;/p&gt;

&lt;p&gt;The more I thought about it, the more problems I discovered.&lt;/p&gt;

&lt;p&gt;Opening ports, authentication, firewall rules, and keeping another service running all added complexity for something that should have been simple.&lt;/p&gt;

&lt;p&gt;Eventually, I stepped back and asked myself:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"What's the simplest way for two processes on the same machine to communicate?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That question led me to a file-based bridge, and the design became much simpler.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Security became more important than convenience&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At first, I focused on making the project work.&lt;/p&gt;

&lt;p&gt;Later I realized the more important question was:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Would I actually trust this running on my own laptop?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That changed how I approached the project.&lt;/p&gt;

&lt;p&gt;Instead of allowing arbitrary execution, I limited the bridge to approved scripts and authenticated requests with a bridge token.&lt;/p&gt;

&lt;p&gt;Removing unnecessary access made the design much easier to reason about.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building features is easy. Building trust is harder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As developers, we enjoy adding features.&lt;/p&gt;

&lt;p&gt;Run Docker.&lt;/p&gt;

&lt;p&gt;Check Git.&lt;/p&gt;

&lt;p&gt;Execute commands.&lt;/p&gt;

&lt;p&gt;Build projects.&lt;/p&gt;

&lt;p&gt;But none of those features matter if users don't trust the software.&lt;/p&gt;

&lt;p&gt;I found myself spending more time thinking about failure cases and edge cases than adding new functionality.&lt;/p&gt;

&lt;p&gt;That wasn't something I expected when I started.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Good documentation is part of the product&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I underestimated how much time I'd spend on the README.&lt;/p&gt;

&lt;p&gt;Writing code is only half the job.&lt;/p&gt;

&lt;p&gt;If someone can't understand what the project does within the first minute, they're unlikely to try it.&lt;/p&gt;

&lt;p&gt;Improving documentation became just as important as improving the code itself.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Shipping early taught me more than waiting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There were plenty of things I wanted to polish before sharing the project.&lt;/p&gt;

&lt;p&gt;But eventually I realized I'd learn far more from real feedback than from endlessly refining it in private.&lt;/p&gt;

&lt;p&gt;Publishing early has already given me new ideas and different perspectives on the design.&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%2Fxibhlf32mao6mwaghkin.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%2Fxibhlf32mao6mwaghkin.PNG" alt=" " width="800" height="400"&gt;&lt;/a&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;This project is still evolving, and I'm sure there are more lessons ahead.&lt;/p&gt;

&lt;p&gt;One of the reasons I enjoy open source is that every discussion, issue, and pull request teaches me something I probably wouldn't have discovered on my own.&lt;/p&gt;

&lt;p&gt;If you're building AI developer tools yourself, I'd genuinely love to hear what design decisions you would have made differently.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/abhinaykrupa/cowork-to-code-bridge" rel="noopener noreferrer"&gt;https://github.com/abhinaykrupa/cowork-to-code-bridge&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Got Tired of Copying Commands Between Claude and My Terminal, So I Built a Bridge.</title>
      <dc:creator>Suresh Pegadapelli</dc:creator>
      <pubDate>Mon, 27 Jul 2026 08:34:51 +0000</pubDate>
      <link>https://dev.to/suresh_pegadapelli_dc84b6/i-got-tired-of-copying-commands-between-claude-and-my-terminal-so-i-built-a-bridge-4k55</link>
      <guid>https://dev.to/suresh_pegadapelli_dc84b6/i-got-tired-of-copying-commands-between-claude-and-my-terminal-so-i-built-a-bridge-4k55</guid>
      <description>&lt;p&gt;Like many developers, I've been spending a lot of time using Claude to help me write code.&lt;/p&gt;

&lt;p&gt;It's incredibly good at explaining ideas, reviewing pull requests, and generating code. But every time I wanted it to actually &lt;em&gt;do&lt;/em&gt; something on my machine, I found myself stuck in the same loop.&lt;/p&gt;

&lt;p&gt;I'd ask Claude to build a small FastAPI project.&lt;/p&gt;

&lt;p&gt;Claude would generate the code and then say something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Run these commands in your terminal."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I'd switch to Terminal.&lt;/p&gt;

&lt;p&gt;Copy the commands.&lt;/p&gt;

&lt;p&gt;Run them.&lt;/p&gt;

&lt;p&gt;Wait for an error.&lt;/p&gt;

&lt;p&gt;Copy the error.&lt;/p&gt;

&lt;p&gt;Come back to Claude.&lt;/p&gt;

&lt;p&gt;Paste it.&lt;/p&gt;

&lt;p&gt;Wait for another response.&lt;/p&gt;

&lt;p&gt;Repeat.&lt;/p&gt;

&lt;p&gt;After a while, I realized I wasn't really working with AI anymore—I was acting as the messenger between Claude and my own computer.&lt;/p&gt;

&lt;p&gt;That got me thinking.&lt;/p&gt;

&lt;p&gt;"Why can't Claude simply ask my computer to do the work?"&lt;/p&gt;

&lt;p&gt;Not by opening ports to the internet.&lt;/p&gt;

&lt;p&gt;Not by exposing SSH.&lt;/p&gt;

&lt;p&gt;Not by installing another server.&lt;/p&gt;

&lt;p&gt;Just... safely.&lt;/p&gt;

&lt;p&gt;That idea eventually became &lt;strong&gt;cowork-to-code-bridge&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I wanted to solve
&lt;/h2&gt;

&lt;p&gt;Claude Cowork is intentionally sandboxed. That's a good thing.&lt;/p&gt;

&lt;p&gt;It can't access my terminal, local repositories, Docker containers, or files outside the mounted workspace.&lt;/p&gt;

&lt;p&gt;From a security perspective, that makes perfect sense.&lt;/p&gt;

&lt;p&gt;But as a developer, it also means there's a gap between planning and execution.&lt;/p&gt;

&lt;p&gt;Claude can tell me exactly what to do, but I still have to perform every step manually.&lt;/p&gt;

&lt;p&gt;For small tasks that's fine.&lt;/p&gt;

&lt;p&gt;For larger tasks—running tests, installing dependencies, fixing build failures, checking logs, or starting services—it becomes repetitive very quickly.&lt;/p&gt;

&lt;p&gt;I wanted to remove that friction without compromising security.&lt;/p&gt;

&lt;h2&gt;
  
  
  My first thought was...
&lt;/h2&gt;

&lt;p&gt;"Why not just use a web server?"&lt;/p&gt;

&lt;p&gt;The more I thought about it, the less I liked the idea.&lt;/p&gt;

&lt;p&gt;Opening ports.&lt;/p&gt;

&lt;p&gt;Managing certificates.&lt;/p&gt;

&lt;p&gt;Authentication.&lt;/p&gt;

&lt;p&gt;Firewalls.&lt;/p&gt;

&lt;p&gt;Keeping another service running.&lt;/p&gt;

&lt;p&gt;It felt like solving one problem by creating three new ones.&lt;/p&gt;

&lt;p&gt;So I took a different approach.&lt;/p&gt;

&lt;p&gt;Instead of networking, I used something much simpler: a shared folder.&lt;/p&gt;

&lt;p&gt;Claude writes a task into the bridge folder.&lt;/p&gt;

&lt;p&gt;A lightweight daemon running on my machine notices the task, executes an approved script (or hands it off to Claude Code), and writes the result back.&lt;/p&gt;

&lt;p&gt;No inbound ports.&lt;/p&gt;

&lt;p&gt;No web server.&lt;/p&gt;

&lt;p&gt;No SSH.&lt;/p&gt;

&lt;p&gt;Just a simple handoff using the filesystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security was more important than convenience
&lt;/h2&gt;

&lt;p&gt;The biggest question people ask is:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Isn't giving an AI access to your machine dangerous?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's exactly the question I asked myself while building it.&lt;/p&gt;

&lt;p&gt;So I tried to keep the design intentionally conservative.&lt;/p&gt;

&lt;p&gt;The bridge doesn't expose any network ports.&lt;/p&gt;

&lt;p&gt;It never runs with elevated privileges.&lt;/p&gt;

&lt;p&gt;Only approved scripts can be executed.&lt;/p&gt;

&lt;p&gt;Every request is authenticated using a bridge token.&lt;/p&gt;

&lt;p&gt;It also keeps track of completed requests, so if a connection drops and the same request is sent again, it won't accidentally execute the task twice.&lt;/p&gt;

&lt;p&gt;I wanted something I would actually feel comfortable running on my own laptop every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  What can it actually do?
&lt;/h2&gt;

&lt;p&gt;Once it's connected, I can ask Claude to do things that previously required switching back and forth between the browser and my terminal.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a FastAPI project locally.&lt;/li&gt;
&lt;li&gt;Run the test suite and report failures.&lt;/li&gt;
&lt;li&gt;Install missing dependencies.&lt;/li&gt;
&lt;li&gt;Check Docker containers.&lt;/li&gt;
&lt;li&gt;Inspect disk usage.&lt;/li&gt;
&lt;li&gt;Review a Git repository before pushing changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of telling me &lt;em&gt;how&lt;/em&gt; to do those things, Claude delegates the work to Claude Code running on my own machine and sends the results back into the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I decided to open-source it
&lt;/h2&gt;

&lt;p&gt;I originally built this for myself.&lt;/p&gt;

&lt;p&gt;After using it for a while, I realized other developers were running into exactly the same problem.&lt;/p&gt;

&lt;p&gt;Most of us don't need AI to write another function.&lt;/p&gt;

&lt;p&gt;We need AI to help with the repetitive work around software development.&lt;/p&gt;

&lt;p&gt;If this project saves someone a few minutes every day—or inspires a better approach—then publishing it was worth it.&lt;/p&gt;

&lt;p&gt;I'm still actively improving the project, so feedback is genuinely welcome.&lt;/p&gt;

&lt;p&gt;If you think the idea is interesting, I'd really appreciate a Star on GitHub. Stars help more developers discover the project, and every issue, discussion, or pull request helps make it better.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/abhinaykrupa/cowork-to-code-bridge" rel="noopener noreferrer"&gt;https://github.com/abhinaykrupa/cowork-to-code-bridge&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Bridge the Gap Between Cowork and Claude Code with Human Approval Loops</title>
      <dc:creator>Suresh Pegadapelli</dc:creator>
      <pubDate>Mon, 20 Jul 2026 09:23:09 +0000</pubDate>
      <link>https://dev.to/suresh_pegadapelli_dc84b6/bridge-the-gap-between-cowork-and-claude-code-with-human-approval-loops-1e3f</link>
      <guid>https://dev.to/suresh_pegadapelli_dc84b6/bridge-the-gap-between-cowork-and-claude-code-with-human-approval-loops-1e3f</guid>
      <description>&lt;p&gt;If you've ever used &lt;strong&gt;Claude Code&lt;/strong&gt; on your local machine while chatting with "Cowork", you've probably noticed something frustrating.&lt;/p&gt;

&lt;p&gt;The two experiences are completely separate.&lt;/p&gt;

&lt;p&gt;Claude Code is running on your Mac, waiting for terminal input whenever it needs approval. Meanwhile, you're having the conversation somewhere else.&lt;/p&gt;

&lt;p&gt;That disconnect inspired me to build &lt;strong&gt;cowork-to-code-bridge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let Claude Code ask for approval directly inside Cowork, then continue running after receiving your answer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No tunnels. No servers. No custom infrastructure.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Problem
&lt;/h1&gt;

&lt;p&gt;Imagine asking Claude Code to deploy an application.&lt;/p&gt;

&lt;p&gt;Run the tests.&lt;/p&gt;

&lt;p&gt;If everything passes,&lt;br&gt;
ask me before deploying.&lt;/p&gt;

&lt;p&gt;Eventually Claude Code reaches the deployment step and waits for confirmation.&lt;/p&gt;

&lt;p&gt;Ready to deploy?&lt;br&gt;
[y/n]&lt;/p&gt;

&lt;p&gt;The problem is that the prompt appears inside your terminal.&lt;/p&gt;

&lt;p&gt;Now you have to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep watching the terminal&lt;/li&gt;
&lt;li&gt;Switch away from Cowork&lt;/li&gt;
&lt;li&gt;Type your answer&lt;/li&gt;
&lt;li&gt;Return to your conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For long-running tasks this quickly becomes annoying.&lt;/p&gt;

&lt;p&gt;It also becomes risky.&lt;/p&gt;

&lt;p&gt;Many AI-assisted workflows run unattended for long periods, consuming tokens or making changes without another checkpoint.&lt;/p&gt;

&lt;p&gt;I wanted a simpler workflow.&lt;/p&gt;
&lt;h1&gt;
  
  
  The Idea
&lt;/h1&gt;

&lt;p&gt;Instead of asking for approval in the terminal, why not ask inside Cowork?&lt;/p&gt;

&lt;p&gt;The conversation becomes something like this.&lt;/p&gt;

&lt;p&gt;You:&lt;br&gt;
Deploy if tests pass.&lt;/p&gt;

&lt;p&gt;Claude Code:&lt;br&gt;
Tests passed.&lt;br&gt;
Deploy to production?&lt;/p&gt;

&lt;p&gt;You:&lt;br&gt;
Yes&lt;/p&gt;

&lt;p&gt;Claude Code:&lt;br&gt;
Deployment completed.&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="n"&gt;Everything&lt;/span&gt; &lt;span class="n"&gt;stays&lt;/span&gt; &lt;span class="n"&gt;inside&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;# How the Bridge Works
&lt;/span&gt;
&lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;bridge&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;intentionally&lt;/span&gt; &lt;span class="n"&gt;simple&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Instead&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;opening&lt;/span&gt; &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;exposing&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;API&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;both&lt;/span&gt; &lt;span class="n"&gt;sides&lt;/span&gt; &lt;span class="n"&gt;communicate&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;shared&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt; &lt;span class="n"&gt;using&lt;/span&gt; &lt;span class="n"&gt;JSON&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cowork&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
 queue/&lt;br&gt;
 results/&lt;br&gt;
 to_cowork/&lt;br&gt;
 cowork_results/&lt;br&gt;
      ▲&lt;br&gt;
      │&lt;br&gt;
Mac Daemon&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Claude Code&lt;/p&gt;

&lt;p&gt;The flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cowork writes a task into the queue.&lt;/li&gt;
&lt;li&gt;A lightweight daemon running on your Mac picks it up.&lt;/li&gt;
&lt;li&gt;Claude Code executes the task.&lt;/li&gt;
&lt;li&gt;If approval is required, the daemon writes a request back.&lt;/li&gt;
&lt;li&gt;Cowork displays the question.&lt;/li&gt;
&lt;li&gt;You answer.&lt;/li&gt;
&lt;li&gt;Claude Code resumes execution.&lt;/li&gt;
&lt;li&gt;The final result is returned.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since everything is file-based:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no HTTP server&lt;/li&gt;
&lt;li&gt;no SSH tunnel&lt;/li&gt;
&lt;li&gt;no cloud infrastructure&lt;/li&gt;
&lt;li&gt;no open ports&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;

&lt;p&gt;Here's what the workflow looks like from Python.&lt;/p&gt;

&lt;p&gt;from bridge_client import (&lt;br&gt;
    call_remote_streaming,&lt;br&gt;
    reply_to_machine,&lt;br&gt;
    resume_remote,&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;result = call_remote_streaming(&lt;br&gt;
    "scripts/run_claude.sh",&lt;br&gt;
    args=[&lt;br&gt;
        "Run tests then ask before deployment",&lt;br&gt;
        "/Users/you/project"&lt;br&gt;
    ],&lt;br&gt;
    interactive=True,&lt;br&gt;
    timeout=600,&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;while result.get("state") == "awaiting_reply":&lt;br&gt;
    print(result["question"])&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reply_to_machine(
    result["request_id"],
    "yes"
)

result = resume_remote(
    result["cmd_id"],
    result["_deadline"]
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;print(result["stdout"])&lt;/p&gt;

&lt;p&gt;The approval step becomes part of the conversation instead of interrupting your workflow.&lt;/p&gt;
&lt;h1&gt;
  
  
  Features
&lt;/h1&gt;

&lt;p&gt;Human Approval Loops&lt;/p&gt;

&lt;p&gt;Claude Code can pause whenever it needs confirmation.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployments&lt;/li&gt;
&lt;li&gt;Database changes&lt;/li&gt;
&lt;li&gt;Large refactors&lt;/li&gt;
&lt;li&gt;Security-sensitive actions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Cost Limits
&lt;/h2&gt;

&lt;p&gt;You can define a maximum budget for each task.&lt;/p&gt;

&lt;p&gt;call_remote_streaming(&lt;br&gt;
    "scripts/run_claude.sh",&lt;br&gt;
    args=["Refactor project"],&lt;br&gt;
    max_budget_usd=2.00,&lt;br&gt;
)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
If the budget is reached, execution stops.

This helps avoid unexpected token costs.

---

## Permission Scopes

Not every task needs full access.

You can run Claude Code with different permission levels.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
python&lt;br&gt;
call_remote(&lt;br&gt;
    "scripts/run_claude.sh",&lt;br&gt;
    args=["Analyze repository"],&lt;br&gt;
    permission_scope="plan",&lt;br&gt;
)&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


This makes it easier to share AI tooling without giving unrestricted access.

---

## Interactive Debugging

Sometimes Claude Code discovers missing information halfway through a task.

Instead of failing immediately, it can ask.

Need AWS credentials.
Continue?

You respond in Cowork and execution resumes.

# Why I Chose a File-Based Design

There are plenty of ways to build remote communication.

I deliberately chose files because they provide several advantages.

* Easy to debug
* No networking configuration
* Works offline
* Atomic writes
* Simple deployment
* Platform-independent

Sometimes the simplest architecture is the easiest to maintain.

# Current Status

The project currently supports:

* Interactive approval loops
* Live execution status
* Cost limits
* Permission scopes
* Idempotent task execution
* Model selection
* Open-source implementation

I'm also working on easier installation through Homebrew and PyPI.

# Getting Started

Install the daemon on your Mac.

curl -fsSL https://raw.githubusercontent.com/abhinaykrupa/cowork-to-code-bridge/main/install.sh | bash

Then call it from Cowork.

from bridge_client import call_remote_streaming

result = call_remote_streaming(
    "scripts/run_claude.sh",
    args=[
        "Do something useful",
        "/path/to/project"
    ],
    interactive=True,
)


That's all that's required to start experimenting with approval-driven workflows.

# Final Thoughts

Large language models continue to improve, but safe automation still depends on


![ ](https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/8bhkzdnq33l4mlw2hevw.png) good guardrails.

Approval checkpoints, budget limits, and permission controls are just as important as the model itself.

This project is my attempt to make those guardrails easier to use without adding unnecessary infrastructure.

If you're experimenting with Cowork and Claude Code together, I'd love to hear your feedback.

## Project Links

* GitHub: https://github.com/abhinaykrupa/cowork-to-code-bridge
* Documentation: https://github.com/abhinaykrupa/cowork-to-code-bridge#readme

Demo Video: https://youtu.be/IkzxMxVpKTk

If you find the project useful, consider starring the repository or opening an issue with ideas for improvement.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>claude</category>
      <category>cowork</category>
      <category>opensource</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Connect Claude Cowork to Your Local Machine — Install + Live Demo</title>
      <dc:creator>Suresh Pegadapelli</dc:creator>
      <pubDate>Fri, 12 Jun 2026 08:33:41 +0000</pubDate>
      <link>https://dev.to/suresh_pegadapelli_dc84b6/connect-claude-cowork-to-your-local-machine-install-live-demo-44m8</link>
      <guid>https://dev.to/suresh_pegadapelli_dc84b6/connect-claude-cowork-to-your-local-machine-install-live-demo-44m8</guid>
      <description>&lt;p&gt;Claude Cowork is great for planning, editing, and chatting — but it runs in a sealed cloud sandbox. It can't touch your machine. No shell. No repos. No tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;, running locally, &lt;em&gt;can&lt;/em&gt;. This bridge connects the two.&lt;/p&gt;

&lt;p&gt;One message in Cowork → a real Claude Code agent on your Mac does the work → result streams back to your chat. No copy-pasting commands. No switching windows.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
