<?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: yicheng47</title>
    <description>The latest articles on DEV Community by yicheng47 (@yicheng47).</description>
    <link>https://dev.to/yicheng47</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%2F1378924%2Fc4896d44-5a02-4cd1-9ce2-0cfa7105b054.jpeg</url>
      <title>DEV Community: yicheng47</title>
      <link>https://dev.to/yicheng47</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yicheng47"/>
    <language>en</language>
    <item>
      <title>Runner: the desktop tool I use to manage my coding agents</title>
      <dc:creator>yicheng47</dc:creator>
      <pubDate>Sun, 25 Oct 2026 10:11:20 +0000</pubDate>
      <link>https://dev.to/yicheng47/runner-the-desktop-tool-i-use-to-manage-my-coding-agents-2431</link>
      <guid>https://dev.to/yicheng47/runner-the-desktop-tool-i-use-to-manage-my-coding-agents-2431</guid>
      <description>&lt;p&gt;Hi everyone, I've been working on a few personal projects with coding agents and gradually settled into a workflow that works for me. I wanted to share a small tool I've been building and using myself, &lt;a href="https://runnersh.dev/" rel="noopener noreferrer"&gt;Runner&lt;/a&gt;. If you use several agents too, I'd appreciate you giving it a try and sharing some feedback.&lt;/p&gt;

&lt;p&gt;Runner is a local desktop app for managing agent CLIs like Claude Code and Codex. It works like a terminal multiplexer for agents: you can keep sessions from different providers in one app, arrange them into tabs and split panes, and put a few agents into a crew to work together. Remote control now lets you use the same app to reach chats and missions on another computer.&lt;/p&gt;

&lt;p&gt;There are already quite a few tools for managing agents. My main reason for building another one was to make it fit the way I work. I also wanted to try agents from different providers and switch between them easily, while keeping the rest of my workflow. Being able to choose which agent to use, without tying everything to one provider, is something I care about.&lt;/p&gt;

&lt;p&gt;I use Runner to develop Runner itself. Below are the parts I use most and how they fit into my day-to-day work.&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%2Fsm40ssbalxx88rg9g2g6.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%2Fsm40ssbalxx88rg9g2g6.png" alt="Runner's demo mission, with coder, reviewer and QA messages and a question waiting for the human" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow I use most
&lt;/h2&gt;

&lt;p&gt;My usual starting point is a coder and a reviewer. The coder owns the implementation and fixes. The reviewer reads the diff, checks it against the task, and sends findings back to the coder. They repeat that loop until the review is clean.&lt;/p&gt;

&lt;p&gt;For changes that need live testing, I add QA. In Runner's development workflow, the reviewer checks the code first, then QA builds the reviewed revision and exercises the relevant behavior in the development app. If QA finds a problem, it goes back to the coder.&lt;/p&gt;

&lt;p&gt;The roles have specific boundaries. My reviewer is instructed to report findings without editing the implementation. QA records what it tested and the results. I still decide the scope, answer product questions, and review the result before merging.&lt;/p&gt;

&lt;p&gt;I also used a coder/reviewer/QA crew to build &lt;a href="https://runnersh.dev/" rel="noopener noreferrer"&gt;Runner's website&lt;/a&gt;. The role prompts for the &lt;a href="https://github.com/yicheng47/runner/tree/main/examples/pair-coding" rel="noopener noreferrer"&gt;coding pair&lt;/a&gt; and &lt;a href="https://github.com/yicheng47/runner/tree/main/examples/codex-trio" rel="noopener noreferrer"&gt;trio&lt;/a&gt; are in the repository if you want to try the same arrangement.&lt;/p&gt;

&lt;p&gt;For a small fix, I often just use one chat. A crew adds communication and review time, so I use it when that extra review is useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roles, crews, and missions
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;role&lt;/strong&gt; is a saved agent configuration: its runtime, model settings, and instructions. A &lt;strong&gt;crew&lt;/strong&gt; combines roles and chooses a lead. A &lt;strong&gt;mission&lt;/strong&gt; is one run of that crew with a task and working directory.&lt;/p&gt;

&lt;p&gt;For example, I can put Claude Code in the coder slot and Codex in the reviewer slot, or use Codex for both with different instructions. I want to be able to change those choices as I try different agents.&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%2Fu4dox5qrmr8esg90c47b.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%2Fu4dox5qrmr8esg90c47b.png" alt="A saved crew with Claude Code as coder, Codex as reviewer, and shared team conventions" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The crew also has shared team conventions. Mine describe when to hand off work, who can change files, which checks to run, and when commits or pull requests are allowed. These are instructions given to the agents, so their behavior still needs supervision.&lt;/p&gt;

&lt;p&gt;Members communicate through the bundled &lt;code&gt;runner&lt;/code&gt; CLI. Their messages appear in the mission feed, and they can address a particular teammate or ask me a question there. I can answer, send a correction, or change the task's constraints while they work.&lt;/p&gt;

&lt;p&gt;The roster can change during a mission too. I can add another role with its own task, remove a member, or stop and resume one session while the others continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every member has a real terminal
&lt;/h2&gt;

&lt;p&gt;Opening a mission member shows its live CLI session. It has the same terminal interface the agent normally provides, and I can type into it, answer a prompt, or interrupt a turn.&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%2Fu3as24tru3pwm8uofzuc.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%2Fu3as24tru3pwm8uofzuc.png" alt="The coder's Codex terminal inside the same demo mission" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That matters when I need to understand a handoff. The feed shows what the agents told each other; the terminal lets me inspect the work behind those messages.&lt;/p&gt;

&lt;p&gt;The mission screenshots show a small haiku-generator demo. It includes a coder asking the human to choose a theme, so you can see both agent coordination and the question-and-answer flow. There is a &lt;a href="https://github.com/yicheng47/runner#demo" rel="noopener noreferrer"&gt;video tour in the README&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep working from another computer
&lt;/h2&gt;

&lt;p&gt;Remote control is now in beta. Switch computers from Runner's sidebar to open an existing chat or mission and continue using its live terminals. You can also start new chats and missions there, send messages to the crew, and answer its questions.&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%2Fqn6135ywarm7pzupss1k.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%2Fqn6135ywarm7pzupss1k.png" alt="Runner's computer picker listing this Mac and another computer on the same account" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sign both computers into the same Runner account, enable remote access on the computer you want to reach, and pair using its six-digit PIN. The connection is encrypted end to end through Runner's relay; the agents and their sessions stay on the host computer.&lt;/p&gt;

&lt;p&gt;Access is currently invite-only and limited to mainland China. Request an invite in the &lt;a href="https://discord.gg/6BrfZdHKNf" rel="noopener noreferrer"&gt;Runner Discord&lt;/a&gt; or &lt;a href="https://github.com/yicheng47/runner#community" rel="noopener noreferrer"&gt;WeChat user group&lt;/a&gt;. The &lt;a href="https://github.com/yicheng47/runner/blob/main/docs/guide/guides/remote-access.md" rel="noopener noreferrer"&gt;remote-access guide&lt;/a&gt; covers setup and pairing.&lt;/p&gt;

&lt;h2&gt;
  
  
  An everyday workspace for individual chats
&lt;/h2&gt;

&lt;p&gt;I also use Runner for ordinary sessions outside a crew. Chats are organized into tabs and projects, a tab can contain several panes, and panes can be rearranged. You can open multiple windows as well.&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%2F9qkbhy1lobfrol78up9r.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%2F9qkbhy1lobfrol78up9r.png" alt="Codex, Claude Code, Antigravity CLI and pi in four panes of one tab" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sessions run in a background service called &lt;code&gt;runnerd&lt;/code&gt;. When closing the app, I can choose to keep them running. Reopening Runner reconnects to those live terminals. Desktop notifications can bring me back when an agent needs input, finishes a turn, or fails; mission notifications are opt-in.&lt;/p&gt;

&lt;p&gt;I recently added Claude Code account switching too. Each account keeps its own sign-in, and the usage menu lets me choose which account to use. For an existing chat, I can stop it, select another account, and resume the same conversation. Sessions already running keep their original account.&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%2F2f9hy5ve0svrjajkkgnz.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%2F2f9hy5ve0svrjajkkgnz.png" alt="Claude Code account selection and usage in Runner" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is an option to share the main account's configuration, including skills, MCP servers, and enabled plugins. I use quite a few of these, so setting them up again for every account would be tedious. The &lt;a href="https://github.com/yicheng47/runner/blob/main/docs/guide/guides/claude-accounts.md" rel="noopener noreferrer"&gt;account guide&lt;/a&gt; covers how sharing and resume work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents can operate Runner too
&lt;/h2&gt;

&lt;p&gt;The desktop app and the bundled CLI use the same background service. An agent can start a mission, read its feed, and send instructions through shell commands, while I can open the resulting sessions in the app.&lt;/p&gt;

&lt;p&gt;For example, from a macOS shell, after saving a task in &lt;code&gt;brief.md&lt;/code&gt;:&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="nv"&gt;mission&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;runner mission start &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--crew&lt;/span&gt; &lt;span class="s2"&gt;"Pair coding crew"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cwd&lt;/span&gt; /absolute/path/to/project &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--goal-file&lt;/span&gt; brief.md &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

runner mission feed &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$mission&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--follow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use your own crew name and working directory. The &lt;a href="https://github.com/yicheng47/runner/blob/main/docs/guide/guides/drive-runner-from-agents.md" rel="noopener noreferrer"&gt;CLI guide&lt;/a&gt; also has PowerShell examples and the commands for sending messages and answering questions.&lt;/p&gt;

&lt;p&gt;Underneath, Runner is written in Rust with GPUI and &lt;code&gt;alacritty_terminal&lt;/code&gt;. Its session and mission records stay on your machine. Model requests still go through each agent CLI's configured provider, using your existing accounts or API setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying it
&lt;/h2&gt;

&lt;p&gt;Install and sign in to at least one supported agent CLI, then &lt;a href="https://runnersh.dev/downloads/" rel="noopener noreferrer"&gt;download Runner&lt;/a&gt;. Start with a direct chat to check your setup. A fresh installation includes a pair-coding crew with two Codex roles; you can change the agents and instructions to suit your workflow.&lt;/p&gt;

&lt;p&gt;For a first mission, choose a small task in a folder you are comfortable letting agents edit. Members share the directory you provide, and Runner does not create a Git worktree automatically. In my own development workflow, I prepare a worktree for each feature before starting its mission.&lt;/p&gt;

&lt;p&gt;Runner is free and open source under the MIT license. It is still in alpha, and runtime capabilities differ. The &lt;a href="https://github.com/yicheng47/runner#supported-agents" rel="noopener noreferrer"&gt;support table&lt;/a&gt; lists those differences. The production builds currently support macOS Apple Silicon and Windows x64; Linux support is still in development.&lt;/p&gt;

&lt;p&gt;If you try it, I would like to hear how you divide work between agents and where the coordination becomes awkward. That is the part I am spending the most time on myself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://runnersh.dev/" rel="noopener noreferrer"&gt;Website and downloads&lt;/a&gt; · &lt;a href="https://github.com/yicheng47/runner" rel="noopener noreferrer"&gt;Source code&lt;/a&gt; · &lt;a href="https://github.com/yicheng47/runner/issues" rel="noopener noreferrer"&gt;Issues and feedback&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>showdev</category>
      <category>softwaredevelopment</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
