<?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: Ahmed Gamal</title>
    <description>The latest articles on DEV Community by Ahmed Gamal (@elgemmy).</description>
    <link>https://dev.to/elgemmy</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%2F966327%2Fa2cb1eb8-6e95-4a93-9e39-890edaf7fe68.png</url>
      <title>DEV Community: Ahmed Gamal</title>
      <link>https://dev.to/elgemmy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elgemmy"/>
    <language>en</language>
    <item>
      <title>Getting Droid to Work with HyperFrames Studio on Linux</title>
      <dc:creator>Ahmed Gamal</dc:creator>
      <pubDate>Wed, 07 Oct 2026 05:29:05 +0000</pubDate>
      <link>https://dev.to/elgemmy/getting-droid-to-work-with-hyperframes-studio-on-linux-59gn</link>
      <guid>https://dev.to/elgemmy/getting-droid-to-work-with-hyperframes-studio-on-linux-59gn</guid>
      <description>&lt;p&gt;I recently joined the &lt;a href="https://factory.com" rel="noopener noreferrer"&gt;Factory&lt;/a&gt; AI Guild, and around the same time &lt;a href="https://hyperframes.dev" rel="noopener noreferrer"&gt;HyperFrames&lt;/a&gt; Studio was released. The version I tested offered Claude Code, Codex, and Grok as built-in agents, but not Droid.&lt;/p&gt;

&lt;p&gt;Since it supports custom agents, I wanted to see if I could get Droid working inside it. I found a short video for my Guild post would become a suitable test.&lt;/p&gt;

&lt;p&gt;Getting it working took three fixes: non-interactive mode, an absolute command path, and a manual skills install. Here’s the setup.&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%2Fo5wjuccg7gwdp5ginjv4.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%2Fo5wjuccg7gwdp5ginjv4.png" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install HyperFrames Studio and Droid on Linux
&lt;/h3&gt;

&lt;p&gt;The Linux version is a single AppImage file for 64-bit Intel and AMD computers. Before configuring Droid, follow &lt;a href="https://docs.factory.com/droid-cli/quickstart" rel="noopener noreferrer"&gt;Factory’s CLI installation guide&lt;/a&gt;, then run droid in your terminal and sign in; the skills commands below also require Node.js and npm.&lt;/p&gt;

&lt;p&gt;You can also refer to &lt;a href="https://hyperframes.heygen.com/studio-app" rel="noopener noreferrer"&gt;HyperFrames Studio Docs&lt;/a&gt; for installation guidance.&lt;/p&gt;

&lt;h3&gt;
  
  
  How HyperFrames runs a custom agent
&lt;/h3&gt;

&lt;p&gt;In the version I tested, HyperFrames handles each message like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Runs your command inside the project folder.&lt;/li&gt;
&lt;li&gt;Sends the prompt on standard input (stdin).&lt;/li&gt;
&lt;li&gt;Waits for the program to exit.&lt;/li&gt;
&lt;li&gt;Shows the last line of output as the reply.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the agent has to read a prompt, do the work, print an answer, and exit, with no interactive screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 1: Droid never answers
&lt;/h3&gt;

&lt;p&gt;When you go to add a new custom agent, you will be able to enter the name, the command to launch your agent, and any additional arguments to pass to the command.&lt;/p&gt;

&lt;p&gt;Adding a custom agent in HyperFrames screen&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; If you add Droid with only the command droid, it opens its interactive terminal screen and waits for you to type. HyperFrames waits for it to finish, so nothing happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Use Droid’s non-interactive mode, droid exec. It reads the prompt from stdin, does the work, and exits.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Find Droid’s full path:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;p&gt;You’ll usually get /home//.local/bin/droid.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check that non-interactive mode works:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Reply with exactly: OK"&lt;/span&gt; | droid &lt;span class="nb"&gt;exec&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should print OK and exit. If it asks you to sign in, run droid once and sign in first.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In HyperFrames Studio, open the agent picker, choose to add a custom agent, and fill in:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; Droid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command:&lt;/strong&gt; the full path from step 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arguments:&lt;/strong&gt; exec --auto medium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Command takes only the program. Put every flag in Arguments.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick Droid in the agent picker and send a short test message, such as “List the files in this project”.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The --auto flag sets what Droid may do without asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;--auto low: allow low-risk project file creation and edits.&lt;/li&gt;
&lt;li&gt;--auto medium: allow those edits plus local development commands, such as builds, tests, and trusted package installs. Use this for local build and render workflows.&lt;/li&gt;
&lt;li&gt;No --auto flag: Droid can read files but can’t change anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Problem 2: The app says Droid is not installed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Apps opened from the desktop launcher may use a different PATH than your terminal. A program that your terminal finds can still be missing for the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Always put the full path in Command, as in step 3. This matters even more for CLIs that install into their own folder, such as ~/.kimi-code/bin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 3: Droid doesn’t know HyperFrames
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; In my setup, Studio’s skills picker did not supply skills to custom agents. Install them separately so Droid has the HyperFrames rules for timing, animation, and rendering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Install the HyperFrames skills yourself, in the folder Droid reads them from. Droid then loads them in every project, including the ones Studio opens.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the official installer:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add heygen-com/hyperframes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;When it asks:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Choose Core Skills. The /hyperframes skill installs the other workflows when a request needs them.&lt;/li&gt;
&lt;li&gt;Choose Droid as the agent and a global (user-level) install so the skills are available across projects. Droid reads user-level skills from ~/.factory/skills/. A project’s own .factory/skills/ folder works too, but only for that project.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Check the install:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; ~/.factory/skills | &lt;span class="nb"&gt;grep &lt;/span&gt;hyperframes
npx hyperframes skills check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Start a new chat and name the skill in your first request:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using /hyperframes, make a 10-second title card that says “Hello from Droid”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing a model
&lt;/h3&gt;

&lt;p&gt;You can add any droid exec flag in Arguments. For example:&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;exec&lt;/span&gt; &lt;span class="nt"&gt;--auto&lt;/span&gt; medium &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt;model-id&amp;gt; &lt;span class="nt"&gt;-r&lt;/span&gt; high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here -m picks the model and -r sets the reasoning effort; supported levels depend on the model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;h4&gt;
  
  
  HyperFrames won’t open after you close it
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What you see:&lt;/strong&gt; You close the window, and after that, opening the app does nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; An old HyperFrames process may still be running without a window, preventing a fresh launch. In my case, this happened after Droid and Kimi got stuck in interactive mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check whether an old copy is still running:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pgrep &lt;span class="nt"&gt;-af&lt;/span&gt; HyperFrames
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Stop it:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; HyperFrames
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it’s still listed a few seconds later, force it to stop with pkill -9 -f HyperFrames.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the app again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Prevent it:&lt;/strong&gt; Use non-interactive mode for custom agents (Problem 1).&lt;/p&gt;

&lt;h4&gt;
  
  
  HyperFrames doesn’t start at all
&lt;/h4&gt;

&lt;p&gt;Open a terminal first to read the startup error. If it reports a sandbox failure, this workaround may help:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/Applications/hyperframes.AppImage &lt;span class="nt"&gt;--no-sandbox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running with --no-sandbox disables Electron’s sandbox. Use it only as a workaround for a confirmed sandbox error, rather than as the default launch option.&lt;/p&gt;

&lt;p&gt;The essential setup is simple: droid exec, an absolute command path, and a separate HyperFrames skills install. Start with the title-card test before moving on to a larger video.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>videoproduction</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building CP Buddy with Droid, from an hour of watching to a day of not</title>
      <dc:creator>Ahmed Gamal</dc:creator>
      <pubDate>Sun, 30 Aug 2026 14:21:43 +0000</pubDate>
      <link>https://dev.to/elgemmy/building-cp-buddy-with-droid-from-an-hour-of-watching-to-a-day-of-not-4f09</link>
      <guid>https://dev.to/elgemmy/building-cp-buddy-with-droid-from-an-hour-of-watching-to-a-day-of-not-4f09</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Making practice easier to start&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Competitive programming used to be a much bigger part of my routine when I was actively competing. After I started working full time and stopped competing seriously, keeping a consistent solving routine became much harder.&lt;/p&gt;

&lt;p&gt;The friction was usually in starting: decide to practice, open Codeforces or AtCoder or wherever, find a suitable problem, prepare my environment, then finally solve. None of that is hard, but it’s often easier to just keep doing whatever I’m already working on. I’ve heard the same thing from friends who stopped competing seriously.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elgemmy/omarchy-cp-buddy" rel="noopener noreferrer"&gt;CP Buddy&lt;/a&gt; started as an idea to reduce that friction. For the MVP, I reduced it to a simple workflow: give me a suitable problem I haven’t solved before, start a focused solving session, and detect when I get it accepted.&lt;/p&gt;

&lt;p&gt;When Omarchy Quattro launched with its plugin competition, that gave me the idea of making it the starting point for CP Buddy. I could participate, explore a new area, and have fun at the same time. I knew it was too niche for the competition and probably wouldn’t compete with the other amazing plugins the community had built, but I felt like: why not have fun building something I actually want? Instead of another app I have to remember to open, it’s a couple of clicks, and it looks really cool!&lt;/p&gt;

&lt;p&gt;It also became my first proper Droid experiment. Omarchy plugins were new territory for me, so I wanted to use a real project to see how well Droid could help me through the full process: researching, planning, iterating on prototypes quickly, and finally shipping before the deadline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVELY9s8Z0NUbPGn9hNyMEA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVELY9s8Z0NUbPGn9hNyMEA.gif" alt="The first released CP Buddy plugin running inside Omarchy" width="560" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The first released CP Buddy plugin running in Omarchy — See on GitHub&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Building the first version with Droid&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I knew what an Omarchy plugin looked like from the outside, but I had no experience building one.&lt;/p&gt;

&lt;p&gt;I pointed Droid to the guides for developing and submitting plugins, then gave it a strategy instead of a feature list: get the smallest real plugin running inside the system first, even if it barely does anything, then build on top of something we already know works.&lt;/p&gt;

&lt;p&gt;That turned into a series of small steps: build the plugin’s foundation, get the Codeforces integration working, connect it to the UI, add the solving sprint timers, then detect accepted submissions to end the sprint.&lt;/p&gt;

&lt;p&gt;Droid handled most of the unfamiliar implementation details while I was having fun watching it explore examples and coordinate work across agents. That left me spending more time experimenting with the actual plugin, deciding what direction I wanted to take it in, and noticing what would make me actually use it. It took about 49 minutes of active Droid work to get the first full loop working.&lt;/p&gt;

&lt;p&gt;After that, most of the improvements came from actually using it: timer presets, tiled and floating modes, UI details, and local history so it stopped recommending problems I had solved long enough ago that they had fallen out of the recent-submissions window.&lt;/p&gt;

&lt;p&gt;I could start with the product itself, see it working, and decide what I wanted from it before I had to know anything about QML.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Shipping it exposed what the spec had missed&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Getting the first working version was the easy part. Using it like a real plugin exposed the more interesting problems.&lt;/p&gt;

&lt;p&gt;A nonexistent Codeforces handle could leave the UI waiting forever. A helper process could get stuck without a deadline. If something crashed during an active sprint, the error path still had to preserve enough state for the session to continue correctly.&lt;/p&gt;

&lt;p&gt;At that point I started seeing the cost of me rushing through the prototype. A few missing cases were enough to leave the plugin hanging or break the state of an active session.&lt;/p&gt;

&lt;p&gt;I had specified the successful flow much better than the failures. That’s survivable when the cycles are short and I’m watching, especially during the first iterations when I’m still exploring the idea. But once I wanted something I could actually publish in the marketplace, I couldn’t keep relying on myself to notice those cases afterward.&lt;/p&gt;

&lt;p&gt;The next specs had to make those cases part of the task itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not every step needs the best model
&lt;/h3&gt;

&lt;p&gt;I was already hitting Droid Pro’s usage limits, so running the strongest available model for every task didn’t make sense. I started relying on cheaper models through Droid Core for most of the work.&lt;/p&gt;

&lt;p&gt;Those cheaper models are very good when I’m working on scoped or lightweight stuff, but for decisions and planning I still wanted a stronger model in the loop.&lt;/p&gt;

&lt;p&gt;I didn’t want that to ruin the Droid experiment, and since I already had a separate Codex subscription, I added a /consult-codex skill. Droid could keep coordinating the task and ask Codex for a second opinion on architectural or design decisions when it was worth it.&lt;/p&gt;

&lt;p&gt;The pattern I liked throughout that build was using cheaper models for exploration and implementation, stronger reasoning for design decisions, and keeping verification with the parent Droid session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Giving Droid something too big to watch
&lt;/h3&gt;

&lt;p&gt;A couple of days later I wanted to see what Droid Missions actually did differently from the “Goal” modes I had tried in other agents.&lt;/p&gt;

&lt;p&gt;So I gave it a much bigger spec and deliberately planned to steer as little as possible. I wanted to see how far it could go on its own. Droid recommends using a flagship model like GPT or Opus as the orchestrator, but me not having enough quota to keep that running for the whole Mission, I leaned on cheaper models to keep it moving.&lt;/p&gt;

&lt;p&gt;Before implementation, I asked the orchestrator to consult Codex during the architecture planning and initial docs generation. It did, organized the work, and then I left it running and went to sleep.&lt;/p&gt;

&lt;p&gt;When I came back, a big chunk of the work was already done, but the Mission eventually got stuck. At first I thought that was probably the end of the experiment. I left it for a while, then interrupted the run and tried to see what “resume” actually meant.&lt;/p&gt;

&lt;p&gt;I expected it might start over, or at least lose a lot of progress. Instead, it looked at the logs, docs, and current repository state, then continued from around where it had stopped.&lt;/p&gt;

&lt;p&gt;That was the part that made the long run feel different to me. I wasn’t continuously steering it, and an interrupted request didn’t mean throwing away the Mission state.&lt;/p&gt;

&lt;p&gt;The full run ended up doing about 23.6 hours of active Droid work across roughly a day and a half.&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%2F84h9uq8hf8uyu923ti6b.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%2F84h9uq8hf8uyu923ti6b.png" alt="Droid Mission progress" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;22 hours into the CP Buddy web Mission.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I put in a spec now
&lt;/h3&gt;

&lt;p&gt;For the next Mission sessions, I’m going to spend much more time on the spec before pressing go.&lt;/p&gt;

&lt;p&gt;With short interactive turns, I can leave parts vague and correct them as I see the result. That gets much more expensive when the task keeps running for hours. I need to have a much clearer picture of the end state before I hand it over.&lt;/p&gt;

&lt;p&gt;I started keeping a small checklist for that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do I actually know what I want to end up with, or is this still a research task to explore different shapes of the idea?&lt;/li&gt;
&lt;li&gt;What should the whole flow look like when everything goes right?&lt;/li&gt;
&lt;li&gt;What failures would ruin the experience, add enough friction that I don’t like the result, or make me consider the run disappointing?&lt;/li&gt;
&lt;li&gt;What can the agent verify by itself while it’s working to make sure it’s still going in the right direction?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I expect that checklist to keep changing as I run more experiments and notice what I forgot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where CP Buddy is now
&lt;/h3&gt;

&lt;p&gt;The Omarchy plugin is live on the marketplace, which I’m pretty happy about. I use it myself, other people can try it in a couple of clicks, and I already have a long list of things I want to add before I’d call it a proper daily companion.&lt;/p&gt;

&lt;p&gt;The web companion is still private while I refine the core experience and figure out how it should work alongside the plugin instead of being tied only to Omarchy.&lt;/p&gt;

&lt;p&gt;I’m getting more comfortable giving long-running agents ideas to work on while I’m busy with something else. I even set up Droid on my dev VPS so I can start a task there and check on it later from wherever I am.&lt;/p&gt;

&lt;p&gt;I’m still not completely comfortable merging code I haven’t read. For non-critical experiments, though, I’m becoming more willing to accept that gap while I look for ways to trust the process more.&lt;/p&gt;

&lt;p&gt;I don’t really know what the optimal version of this workflow looks like yet. I think the only way I’m going to find out is to keep trying it, notice where it sucks, fix one part, and repeat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt; &lt;a href="https://github.com/elgemmy/omarchy-cp-buddy" rel="noopener noreferrer"&gt;CP Buddy on GitHub&lt;/a&gt; ·&lt;a href="https://plugins.omarchy.org/plugin.html?id=io.github.elgemmy.cp-buddy" rel="noopener noreferrer"&gt;Omarchy plugin page&lt;/a&gt;&lt;/p&gt;

</description>
      <category>competitiveprogrammi</category>
      <category>softwaredevelopment</category>
      <category>linux</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
