<?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: Soumalya Das</title>
    <description>The latest articles on DEV Community by Soumalya Das (@programmersd21).</description>
    <link>https://dev.to/programmersd21</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3903363%2F217e60f7-fca5-4eca-b74e-5180d68f26b3.png</url>
      <title>DEV Community: Soumalya Das</title>
      <link>https://dev.to/programmersd21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/programmersd21"/>
    <language>en</language>
    <item>
      <title>Kairo: A Local-First Terminal Task Manager with Lua Plugins, Git Sync, and an MCP Server</title>
      <dc:creator>Soumalya Das</dc:creator>
      <pubDate>Wed, 29 Apr 2026 02:08:10 +0000</pubDate>
      <link>https://dev.to/programmersd21/kairo-a-local-first-terminal-task-manager-with-lua-plugins-git-sync-and-an-mcp-server-36h0</link>
      <guid>https://dev.to/programmersd21/kairo-a-local-first-terminal-task-manager-with-lua-plugins-git-sync-and-an-mcp-server-36h0</guid>
      <description>&lt;h1&gt;
  
  
  Most CLI Task Managers Fail in the Same Two Ways. Kairo Tries a Third Path.
&lt;/h1&gt;

&lt;p&gt;You know that feeling when your task manager gets in the way of your actual work?&lt;/p&gt;

&lt;p&gt;You're deep in the terminal. Everything is keyboard-driven, fast, focused. Then you need to jot down a task — and suddenly you're reaching for the mouse, switching to a browser tab, logging into yet another cloud service that owns your data and charges you monthly for the privilege.&lt;/p&gt;

&lt;p&gt;Kairo was built because of that feeling.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Kairo?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kairo is a terminal-native task manager for developers&lt;/strong&gt; — built around a simple premise: your tasks should live where your brain already does.&lt;/p&gt;

&lt;p&gt;No browser tabs. No subscriptions. No mouse. Just a fast, beautiful TUI that lives in your terminal and stores everything locally in SQLite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;programmersd21/kairo/kairo
kairo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press &lt;code&gt;n&lt;/code&gt; to create your first task. That's the entire onboarding.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Every Other Option
&lt;/h2&gt;

&lt;p&gt;Every developer eventually runs into the same three-way trap:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The problem&lt;/th&gt;
&lt;th&gt;Why it hurts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GUI apps (Notion, Linear, Todoist)&lt;/td&gt;
&lt;td&gt;Pull you out of your flow to manage a task &lt;em&gt;about&lt;/em&gt; your flow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud tools&lt;/td&gt;
&lt;td&gt;Your data lives on someone else's server, behind an account, behind a paywall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plain-text tools (&lt;code&gt;todo.txt&lt;/code&gt;, Taskwarrior)&lt;/td&gt;
&lt;td&gt;Powerful but spartan — no structure, no search, no visual feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Kairo sits in none of those buckets. It's the tool you'd build for yourself if you had the time.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Actually Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fast — genuinely fast
&lt;/h3&gt;

&lt;p&gt;Sub-millisecond fuzzy search. Full Vim keybindings (&lt;code&gt;j/k/gg/G&lt;/code&gt;). Natural language deadlines — type &lt;code&gt;tomorrow 10am&lt;/code&gt; or &lt;code&gt;next friday&lt;/code&gt; and it just works. You never have to leave the keyboard, and you never wait for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your data is yours
&lt;/h3&gt;

&lt;p&gt;Everything lives in a local SQLite database with WAL mode. Fully offline by default. If you want sync, it's Git-backed — no backend, no account, no lock-in. Export to JSON, CSV, Markdown, or plain text whenever you want.&lt;/p&gt;

&lt;h3&gt;
  
  
  It grows with you
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;Lua plugin system&lt;/strong&gt; lets you hook into task lifecycle events:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="n"&gt;kairo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"task_create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;kairo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"New task: "&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;strong&gt;headless CLI API&lt;/strong&gt; means you can automate anything from scripts and pipelines:&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;# Create a task from anywhere in your workflow&lt;/span&gt;
kairo api create &lt;span class="nt"&gt;--title&lt;/span&gt; &lt;span class="s2"&gt;"Finish report"&lt;/span&gt; &lt;span class="nt"&gt;--priority&lt;/span&gt; 1

&lt;span class="c"&gt;# Query and filter&lt;/span&gt;
kairo api list &lt;span class="nt"&gt;--tag&lt;/span&gt; work

&lt;span class="c"&gt;# Export everything&lt;/span&gt;
kairo &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt; markdown

&lt;span class="c"&gt;# Git sync — no backend required&lt;/span&gt;
kairo &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An &lt;strong&gt;MCP server&lt;/strong&gt; opens Kairo up to AI agents that can read and manage your tasks directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kairo mcp        &lt;span class="c"&gt;# stdio mode&lt;/span&gt;
kairo mcp 8080   &lt;span class="c"&gt;# SSE mode&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI — on your terms
&lt;/h3&gt;

&lt;p&gt;Optional Gemini integration (2.0 / 2.5 / 2.5 Flash). Toggle it with &lt;code&gt;ctrl+a&lt;/code&gt;. It never runs unless you invoke it. Your workflow, your call.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beautiful by default
&lt;/h3&gt;

&lt;p&gt;32 built-in themes. Live switching with &lt;code&gt;t&lt;/code&gt;. Bento-style layout with real-time Markdown preview. Cinematic animations for create, complete, and delete. It's a terminal app you'll actually enjoy looking at.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shortcuts That Matter
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;n&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;New task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;z&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;t&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switch theme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Filter by tag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ctrl+p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Command palette&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ctrl+a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI panel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Help&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How It's Built
&lt;/h2&gt;

&lt;p&gt;Kairo is written in &lt;strong&gt;Go&lt;/strong&gt;, built on a stack that prioritizes rendering performance and correctness:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your input (CLI / TUI / Lua / AI)
          ↓
  Task Service (single source of truth)
          ↓
  SQLite (WAL) + optional Git sync
          ↓
  Bubble Tea TUI (instant rendering)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bubble Tea&lt;/strong&gt; · &lt;strong&gt;Lip Gloss&lt;/strong&gt; · &lt;strong&gt;SQLite (WAL)&lt;/strong&gt; · &lt;strong&gt;GopherLua&lt;/strong&gt; · &lt;strong&gt;Gemini API&lt;/strong&gt; · &lt;strong&gt;Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go was chosen for the same reason you'd choose it for any CLI tool: fast startup, single static binary, no runtime dependency to manage.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;macOS (Homebrew)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;programmersd21/kairo/kairo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linux / macOS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows (PowerShell)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;iwr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-useb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Go&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/programmersd21/kairo/cmd/kairo@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Works best on Alacritty, Kitty, and WezTerm. Some terminals may have rendering quirks — see &lt;a href="https://github.com/programmersd21/kairo/issues/16" rel="noopener noreferrer"&gt;issue #16&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Everything Included, Nothing Gated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local-first SQLite storage&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full TUI with 32 themes&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard-only workflow + Vim bindings&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Natural language date parsing&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git sync (no backend)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lua plugin system&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLI automation API&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI assistant (optional, opt-in)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP server for AI agents&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free &amp;amp; open source (MIT)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No tiers. No "Pro" features. Everything ships in the binary.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Coming
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Encrypted multi-workspace support&lt;/li&gt;
&lt;li&gt;Event-sourced sync engine&lt;/li&gt;
&lt;li&gt;Sandboxed plugin environment&lt;/li&gt;
&lt;li&gt;Smart task suggestions&lt;/li&gt;
&lt;li&gt;Plugin marketplace&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;If something bugs you, fix it. PRs are welcome — especially for themes, plugins, performance, and docs.&lt;/p&gt;

&lt;p&gt;A special thank you to &lt;a href="https://github.com/Tornado300" rel="noopener noreferrer"&gt;@Tornado300&lt;/a&gt; for key contributions and bug fixes that made Kairo better for everyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Kairo isn't trying to replace your entire productivity stack. It's trying to be the one task manager that never makes you context-switch, never holds your data hostage, and never feels like it was designed for someone else.&lt;/p&gt;

&lt;p&gt;If that's what you've been missing, it's worth five minutes of your terminal.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/programmersd21/kairo" rel="noopener noreferrer"&gt;github.com/programmersd21/kairo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built for the terminal. Built for focus. Built for you.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>automation</category>
      <category>go</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
