<?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: Siekwie</title>
    <description>The latest articles on DEV Community by Siekwie (@siekwiedev).</description>
    <link>https://dev.to/siekwiedev</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%2F4160792%2Fe01251aa-8575-4f06-b15d-dafb39c82fc6.png</url>
      <title>DEV Community: Siekwie</title>
      <link>https://dev.to/siekwiedev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/siekwiedev"/>
    <language>en</language>
    <item>
      <title>I built a small kanban board that my coding agents update with curl</title>
      <dc:creator>Siekwie</dc:creator>
      <pubDate>Sun, 04 Oct 2026 03:54:45 +0000</pubDate>
      <link>https://dev.to/siekwiedev/i-built-a-small-kanban-board-that-my-coding-agents-update-with-curl-1kf</link>
      <guid>https://dev.to/siekwiedev/i-built-a-small-kanban-board-that-my-coding-agents-update-with-curl-1kf</guid>
      <description>&lt;p&gt;When I work with coding agents I usually have a few things going at once, and after a couple of sessions I no longer know what's finished, what's half done and what's waiting on me. I tried a &lt;code&gt;TODO.md&lt;/code&gt;, but I never looked at it. Jira or Linear felt silly for a one-person project.&lt;/p&gt;

&lt;p&gt;So I wrote KanbanEasy. It's a small desktop kanban board that I keep docked next to my editor. The part I actually wanted is that the agent can move its own cards.&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%2F13fgoicq720f8b72m3rr.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%2F13fgoicq720f8b72m3rr.png" alt="KanbanEasy board with five columns of cards" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code is on GitHub under the MIT license: &lt;a href="https://github.com/Siekwie/KanbanEasy" rel="noopener noreferrer"&gt;https://github.com/Siekwie/KanbanEasy&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent side
&lt;/h2&gt;

&lt;p&gt;While the app is open it serves a JSON API on &lt;code&gt;127.0.0.1:7420&lt;/code&gt;. I didn't want to set up an MCP server for this. Every agent I use can already run a shell command, so curl is enough:&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="c"&gt;# take the next free todo&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;claude localhost:7420/claim

&lt;span class="c"&gt;# leave a comment on a card&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-Actor: claude'&lt;/span&gt; &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Tests pass'&lt;/span&gt; localhost:7420/issues/KE-7/comments

&lt;span class="c"&gt;# hand it back to me for review&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; PATCH &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;review localhost:7420/issues/KE-7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you'd rather not type curl there is a small bash wrapper called &lt;code&gt;kb&lt;/code&gt;, so the same things become &lt;code&gt;kb claim claude&lt;/code&gt; or &lt;code&gt;kb mv KE-7 review&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To tell an agent about the board, right-click the API line in the sidebar and pick "Copy agent instructions". That gives you a short text block to paste into &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Columns can have rules
&lt;/h2&gt;

&lt;p&gt;This is the feature I use most. A column can say who gets the cards that land in it, and it can carry instructions for the agent. My Review column, for example, assigns cards to me. You can also do it the other way around: you write your decision in a comment, drop the card into a column that belongs to the agent, and the column's instructions tell it what to do next.&lt;/p&gt;

&lt;p&gt;Every card keeps a log of who moved it or changed it, me or the agent. When the agent touches a card, it glows on the board for a moment. I added that as a gimmick and it turned out to be useful, because I notice progress without switching windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The human side
&lt;/h2&gt;

&lt;p&gt;I wanted adding a card to cost almost nothing. Press &lt;code&gt;N&lt;/code&gt;, type something like &lt;code&gt;Fix flaky test #ci @agent !high&lt;/code&gt; and press Enter. The label, the assignee and the priority are read from the title, and the input stays open for the next card.&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%2F5eods2ifzu67xfhgmdjx.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%2F5eods2ifzu67xfhgmdjx.png" alt="A card opened in the detail panel" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the window is narrow, the board turns into a stacked list, so it fits in a strip beside the editor. It only redraws when something changes, so it uses almost no CPU while it sits there.&lt;/p&gt;

&lt;p&gt;The whole board is one readable JSON file in a &lt;code&gt;KanbanEasy&lt;/code&gt; folder in your home directory. There are no accounts and nothing is sent anywhere. The app keeps a backup per weekday, and if you edit the file by hand it reloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is an open local port a problem?
&lt;/h2&gt;

&lt;p&gt;I asked myself the same thing. The server listens on localhost only. It also refuses any request that carries browser headers like &lt;code&gt;Origin&lt;/code&gt;, or a &lt;code&gt;Host&lt;/code&gt; that isn't local, so a website you have open can't reach it. Other programs running under your user can. That is on purpose, because that's how the agent gets in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it's built with
&lt;/h2&gt;

&lt;p&gt;It's written in Lua on &lt;a href="https://love2d.org" rel="noopener noreferrer"&gt;LÖVE&lt;/a&gt;, which is really a game framework. That sounds like an odd choice for a kanban board, but it starts instantly, and I genuinely think it is just an underrated piece of technology.&lt;/p&gt;

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

&lt;p&gt;Builds for Windows, macOS and Linux are on the &lt;a href="https://github.com/Siekwie/KanbanEasy/releases/latest" rel="noopener noreferrer"&gt;releases page&lt;/a&gt;. The macOS build isn't signed, so you have to right-click and choose Open the first time.&lt;/p&gt;

&lt;p&gt;It's still young and I'm sure there are rough edges. If you run agents on your own projects, I'd like to know what you would want from a board like this, and whether the API makes sense to you.&lt;/p&gt;

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