Installs to %USERPROFILE%\AppData\Local\Programs\kairo\kairo.exe and adds the install directory to your user PATH.
Any other OS
go install github.com/programmersd21/kairo/cmd/kairo@latest
OR download a prebuilt binary from the Releases page.
Updates
kairo update
Downloads the latest GitHub Release for your OS/arch, verifies it against checksums.txt, and safely replaces the installed binary.
On Windows, Kairo will automatically close to apply the update; simply re-run kairo once the terminal returns.
Startup Notifications:
Kairo automatically checks for updates on startup. If a newer version is available, a notification will appear in the footer (e.g., Update: v1.2.2 β v1.2.3) directing you to run the update command.
π€ Automation & CLI API
Kairo provides a stable CLI API for external automation. Every operation available in the TUI can be performed via the api subcommand.
Usage
# List tasks with a specific tag
kairo api list --tag work
# Create a new task
kairo api create --title "Finish report" --priority 1
# Update a task
kairo api update --id <task-id> --status done
# Delete all tasks (soft-delete)
kairo api delete all
# Advanced JSON interface
kairo api --json '{"action": "create", "payload": {"title": "API Task", "tags": ["bot"]}}'
# AI Configuration
kairo api configure-ai set "YOUR_GEMINI_API_KEY"
kairo api configure-ai reset
# Set TUI Theme
kairo api set_theme --theme catppuccin
# Plugin Management (list, get, write, delete)
kairo api plugin_list
kairo api plugin_get --name auto-cleanup.lua
kairo api plugin_delete --name sample.lua
Other CLI Commands
# Check installed version
kairo version
# Update to the latest version
kairo update
# Export tasks
kairo export --format csv --out tasks.csv
kairo export --format txt --out tasks.txt
kairo export --format markdown --out tasks.md
# Import tasks
kairo import --format json --in tasks.json
# Shell completion (bash, zsh, fish, powershell)
# Automatic install:
kairo completion zsh install
# Manual install (add to your shell profile):
# source <(kairo completion zsh)
kairo completion zsh
# Get help for any command
kairo help
kairo help api
kairo help export
# Sync with Git (if configured)
kairo sync
# Start MCP Server (stdio)
kairo mcp
π Plugins (Lua)
Extend Kairo with custom logic, event hooks, commands, and views using Lua.
Plugin Structure
-- plugins/my-plugin.lua
local plugin = {
id = "my-plugin",
name = "My Plugin",
description = "Reacts to tasks",
version = "1.0.0",
}
-- Hook into events
kairo.on("task_create", function(event)
kairo.notify("New task: " .. event.task.title)
end)
-- Register custom commands
plugin.commands = {
{ id = "hello", title = "Say Hello", run = function() kairo.notify("Hello!") end }
}
-- Register custom themes
plugin.themes = {
{
name = "midnight_neon",
is_light = false,
bg = "#000000",
fg = "#ffffff",
muted = "#444444",
border = "#222222",
accent = "#00ff00",
good = "#00ff00",
warn = "#ffff00",
bad = "#ff0000",
overlay = "#111111",
}
}
return plugin
Supported Events
task_create
task_update
task_delete
app_start
app_stop
Lua API Reference
Method
Description
kairo.create_task(table)
Create a new task
kairo.update_task(id, table)
Update an existing task
kairo.delete_task(id)
Delete a task
kairo.list_tasks(filter)
List tasks with optional filter
kairo.on(event, function)
Register an event listener
kairo.notify(msg, is_error)
Send a notification to the UI
π¨ Design System
Kairo features a minimalist design system optimized for clarity and focus.
Design Philosophy
Breathable Layout β Reduced padding and thin borders for a clean, modern look
Seamless Backdrop β Custom rendering engine ensures the theme background covers the entire terminal window
Instant Feedback β Smooth strikethrough animations when completing tasks
Keyboard-First β All interactions optimized for speed
High Compatibility β Uses standard Unicode symbols for consistent rendering across all terminals
β¨οΈ Keyboard Navigation
Essential Commands
Shortcut
Action
ctrl+p
π Open Command Palette
z
β‘ Strike (toggle completion with animation)
tab / shift+tab
β / β Switch views
n
β Create new task
e
βοΈ Edit selected task
enter
ποΈ View task details
d
ποΈ Delete task
t
π¨ Cycle themes
ctrl+s
βοΈ Open Settings Menu
i
π’ Open GitHub issues
c
π Show changelog
?
β Show help menu
q
β Quit
AI Assistant Shortcuts
Shortcut
Action
ctrl+a
π€ Toggle AI Assistant Panel
ctrl+l
π§Ή Clear AI Chat History
enter
β΅ Submit Prompt
esc
β Close AI Panel
Plugin Menu Shortcuts
Shortcut
Action
enter
ποΈ View plugin details
u
ποΈ Uninstall plugin
o
π Open plugins folder
r
π Reload plugins
p / esc
β Close menu
View Shortcuts
Shortcut
View
1 - 9
Switch Views β Instant access to all tabs (Inbox, Today, Plugins, etc.)
f
Tag Filter β Quickly jump to Tag View and filter by one or multiple tags (e.g., work dev kairo)
tab / shift+tab
Cycle Views β Move through all available tabs
Pro Tips
Press f to open the tag filter input modal for direct tag entry
Type tag name and press enter to apply filter, or esc to cancel
Type #tag in the command palette to jump to a specific tag
Type pri:0 to filter tasks by priority level
Use ctrl+s to save while editing
Press esc to cancel and return to the list
β¨οΈ Vim Mode
For users who live in the terminal, Kairo offers a built-in Vim Mode for seamless navigation without leaving the home row.
Enabling Vim Mode
You can toggle Vim Mode in two ways:
Settings Menu: Press ctrl+s and toggle "Vim Mode" to true.
Configuration File: Set vim_mode = true in your config.toml.
Vim Shortcuts
When enabled, the following classic Vim keys are activated for list navigation:
j: Move selection down
k: Move selection up
G: Jump to the bottom of the list
gg: Jump to the top of the list
Note: Standard arrow keys, pgup/pgdown, and home/end remain functional regardless of this setting.
Kairo is built on the belief that task management should be fast, simple, and under your control. We prioritize:
β Your Privacy β Data stays on your machine
β Your Freedom β Open source, MIT licensed
β Your Time β Lightning-fast interactions
β Your Experience β Premium, thoughtful design
Every feature is carefully considered to maintain focus and avoid complexity creep.