<?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: ghorbelhamdi</title>
    <description>The latest articles on DEV Community by ghorbelhamdi (@ghorbelhamdi).</description>
    <link>https://dev.to/ghorbelhamdi</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%2F4186377%2Fa472f1df-bf29-49ab-afa7-d3f1c512ee6a.png</url>
      <title>DEV Community: ghorbelhamdi</title>
      <link>https://dev.to/ghorbelhamdi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ghorbelhamdi"/>
    <language>en</language>
    <item>
      <title>"Buddy: let Claude Code, Codex and other AI agents use your Android phone</title>
      <dc:creator>ghorbelhamdi</dc:creator>
      <pubDate>Sat, 31 Oct 2026 23:43:29 +0000</pubDate>
      <link>https://dev.to/ghorbelhamdi/buddy-let-claude-code-codex-and-other-ai-agents-use-your-android-phone-1g4</link>
      <guid>https://dev.to/ghorbelhamdi/buddy-let-claude-code-codex-and-other-ai-agents-use-your-android-phone-1g4</guid>
      <description>&lt;p&gt;Buddy is a free, open-source Android app that lets AI agents use your phone for you. You type or say what you want in a chat bubble, and the agent reads the screen, taps and types through your apps until it's done.&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%2Fwsq8pm1p88x1t0dmb2gh.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%2Fwsq8pm1p88x1t0dmb2gh.png" alt=" " width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you can ask&lt;br&gt;
"Reply to Sarah that I'll be 10 minutes late."&lt;br&gt;
"Add milk and eggs to my Amazon cart."&lt;br&gt;
"What did I miss? Summarize my notifications."&lt;br&gt;
"Every morning at 8, check the price of this flight and tell me if it drops."&lt;br&gt;
"Remind me at 6 to call mom."&lt;br&gt;
Pick your agent&lt;br&gt;
Buddy runs Claude Code, Codex, OpenCode, Antigravity or Grok right on the phone, in a small Linux inside the app. No PC, no adb, no root.&lt;br&gt;
Use the plan you already have (Claude, ChatGPT, Google), an API key (DeepSeek, OpenRouter and others), or OpenCode's free models with no account at all. API keys stay in the app: the agents never see them.&lt;br&gt;
You stay in control&lt;br&gt;
It asks first. Before anything is sent, posted, bought or deleted, Buddy shows you exactly what's about to happen, and waits for Approve, Change or Deny. The app enforces this, not the AI.&lt;br&gt;
You can take over anytime. Touch the screen and the agent pauses.&lt;br&gt;
Per-app rules. Trust some apps, keep others on a hard limit (money and messaging apps start there).&lt;br&gt;
See what it did. Every step shows in the chat, with "View steps" for a picture of each action.&lt;br&gt;
More&lt;br&gt;
Voice input and live voice conversations&lt;br&gt;
Notification rules: let an agent answer certain messages for you, with your OK&lt;br&gt;
Scheduled tasks and reminders&lt;br&gt;
Skills (the same SKILL.md format as Claude and ChatGPT)&lt;br&gt;
A background browser for web tasks, without taking over your screen&lt;br&gt;
In 17 languages&lt;br&gt;
Try it&lt;br&gt;
GitHub (APK download): &lt;a href="https://github.com/ghorbelhamdi/buddy-android" rel="noopener noreferrer"&gt;https://github.com/ghorbelhamdi/buddy-android&lt;/a&gt;&lt;br&gt;
Website: &lt;a href="https://ghorbelhamdi.github.io/buddy-android/" rel="noopener noreferrer"&gt;https://ghorbelhamdi.github.io/buddy-android/&lt;/a&gt;&lt;br&gt;
Android 11+, 64-bit phone. It's not on Google Play: Play doesn't allow apps that use accessibility to act on their own. The APK is built from the public code by GitHub Actions, and Buddy updates itself.&lt;br&gt;
I'd love to hear what you'd ask it to do, and where it gets stuck.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>opensource</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I gave Claude Code my phone (and made it ask before it buys anything)</title>
      <dc:creator>ghorbelhamdi</dc:creator>
      <pubDate>Thu, 15 Oct 2026 11:32:10 +0000</pubDate>
      <link>https://dev.to/ghorbelhamdi/i-gave-claude-code-my-phone-and-made-it-ask-before-it-buys-anything-2p5l</link>
      <guid>https://dev.to/ghorbelhamdi/i-gave-claude-code-my-phone-and-made-it-ask-before-it-buys-anything-2p5l</guid>
      <description>&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%2F8btibvhwjhe60xhol5cv.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%2F8btibvhwjhe60xhol5cv.png" alt="Buddy" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use Claude Code every day for work. At some point I caught myself wishing it could do the boring stuff on my phone too: reply to a message, turn on the lights, add something to my Amazon cart. Not write code for it. Just do it.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Buddy&lt;/strong&gt;, a free, open-source Android app. It's a chat bubble that floats over your apps. You type or say what you want, and an AI agent (Claude Code, Codex or OpenCode) reads the screen and taps through your apps for you.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/f-858Qq0k48" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here's how it works, and a few things that surprised me along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small Linux inside the app
&lt;/h2&gt;

&lt;p&gt;I didn't want "connect your phone to a PC with adb" or "root your phone". I wanted it to work after installing one app.&lt;/p&gt;

&lt;p&gt;Claude Code, Codex and OpenCode are CLI tools, so Buddy ships a small Alpine Linux and runs it with proot, which needs no root. On first start it installs the agent you picked inside that Linux. You sign in with the plan you already pay for (Claude or ChatGPT), or use OpenCode's free models with no account at all. No API keys.&lt;/p&gt;

&lt;p&gt;The first real bug I hit was in this layer. Android app storage doesn't allow hard links, so proot runs with &lt;code&gt;--link2symlink&lt;/code&gt;, which fakes them with symlinks. That works until npm replaces a package in place: the fake links break, and you get &lt;code&gt;opencode: not found&lt;/code&gt; right after an "update". The fix was boring: remove the old install completely before installing again, and only reinstall when there really is a newer version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Giving the agent hands
&lt;/h2&gt;

&lt;p&gt;The agent gets a small set of phone tools over MCP: read the screen, tap, type, scroll, swipe, open an app. Under the hood it's an Android accessibility service. The agent reads the screen as a tree of text and buttons with their positions, which is cheaper and more reliable than sending screenshots every step.&lt;/p&gt;

&lt;p&gt;Every step shows up in the chat, so you watch it work, and you can stop it at any time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety can't be left to the model
&lt;/h2&gt;

&lt;p&gt;This was the part I spent the most time on.&lt;/p&gt;

&lt;p&gt;My first version put the rule in the system prompt: "ask the user before you send, post, pay or delete". Models mostly follow that. Mostly isn't good enough when the button says "Buy now".&lt;/p&gt;

&lt;p&gt;So Buddy checks it itself. Before a tap that would send, post, pay, delete or add to cart, Buddy stops and shows a card with exactly what's about to happen, and waits for your OK. The model can't skip that card, whatever it decides.&lt;/p&gt;

&lt;p&gt;It paid off early. During testing, one free model went for "Buy now" instead of "Add to cart". Buddy stopped it and asked.&lt;/p&gt;

&lt;p&gt;And a bug I found only this week proved the point again: after an OpenCode update, OpenCode quietly stopped reading the instructions Buddy passed to it, so for a few versions it ran without Buddy's system prompt at all. The confirm cards still worked, because they never depended on the prompt. (Fixed in 2.1.9: Buddy now writes its instructions to OpenCode's global &lt;code&gt;AGENTS.md&lt;/code&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Builds you can check
&lt;/h2&gt;

&lt;p&gt;Buddy asks for a lot of trust: it can see your screen and tap for you. So it's Apache 2.0, and every release APK is built from the public code by GitHub Actions, not on my laptop. It's also on Google Play in closed testing.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;GitHub (APK download): &lt;a href="https://github.com/ghorbelhamdi/buddy-android" rel="noopener noreferrer"&gt;https://github.com/ghorbelhamdi/buddy-android&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google Play closed test: &lt;a href="https://play.google.com/apps/testing/app.buddy.assistant" rel="noopener noreferrer"&gt;https://play.google.com/apps/testing/app.buddy.assistant&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It needs Android 11+ and a 64-bit phone. I'd love to hear what you'd ask it to do, and where it gets stuck.&lt;/p&gt;

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