ππ» Kairo is a lightning-fast, keyboard-first task management application
built for developers and power users.
It combines the simplicity of a command-line tool
with the sophistication of a modern, premium design system.
π― Instant Responsiveness β Sub-millisecond task searching and navigation
π¨ Premium UI Design β Modern color palette with accessibility at its core
β¨οΈ Keyboard-First β Complete control without ever touching a mouse
π₯οΈ Seamless Rendering β Pixel-perfect background fills the entire viewport, no terminal bleed-through
π Offline-First β Your data lives locally in SQLite, always under your control
π Git-Backed Sync β Optional distributed sync leveraging Git's architecture
π§© Extensible β Unified Lua plugin system and CLI automation API
π± Responsive Layout β Gracefully adapts to any terminal size
π€ Automation-Friendly β Headless API for external scripts and CI/CD
Built with Bubble Tea (TUI framework), Lip Gloss (terminal styling), and SQLite (local storage).
| Feature | Description |
|---|---|
| Task Service | Single source of truth for TUI, Lua, and CLI automation |
| Lua Plugins | Native first-class scripting with event hooks (GopherLua) |
| Automation API | Stable CLI interface for external control and JSON integration |
| Event Hooks | React to task creation, updates, and app lifecycle events |
| Smart Filtering | Multiple views: Inbox, Today, Upcoming, Completed, by Tag, by Priority |
| Fuzzy Search | Lightning-fast command palette with ranked results |
| Strike Animation | Visual feedback when completing tasks with 'z' |
| Offline Storage | SQLite with WAL for reliability and concurrent access |
| Git Sync | Optional repository-backed sync with per-task JSON files |
| Import/Export | JSON and Markdown support for data portability |
curl -fsSL https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.sh | bashInstalls to $HOME/.local/bin/kairo (fallback: /usr/local/bin/kairo) and attempts to persist the PATH update in your shell profile when needed.
iwr -useb https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.ps1 | iexInstalls to %USERPROFILE%\\AppData\\Local\\Programs\\kairo\\kairo.exe and adds the install directory to your user PATH.
kairo updateDownloads the latest GitHub Release for your OS/arch, verifies it against checksums.txt, and safely replaces the installed binary.
On Windows, the update is applied after kairo update exits; run kairo again once it completes.
Kairo provides a stable CLI API for external automation. Every operation available in the TUI can be performed via the api subcommand.
# 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
# Advanced JSON interface
kairo api --json '{"action": "create", "payload": {"title": "API Task", "tags": ["bot"]}}'# Check installed version
kairo version
# Update to the latest version
kairo update
# Export tasks
kairo export --format json --out tasks.json
kairo export --format markdown --out tasks.md
# Import tasks
kairo import --format json --in tasks.json
# Sync with Git (if configured)
kairo syncExtend Kairo with custom logic, event hooks, commands, and views using Lua.
-- 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 }
}
return plugintask_createtask_updatetask_deleteapp_startapp_stop
| 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 |
Kairo features a minimalist design system optimized for clarity and focus.
- 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
| 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 |
? |
β Show help menu |
q |
β Quit |
| Shortcut | Action |
|---|---|
enter |
ποΈ View plugin details |
u |
ποΈ Uninstall plugin |
o |
π Open plugins folder |
r |
π Reload plugins |
p / esc |
β Close menu |
| 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 name |
tab / shift+tab |
Cycle Views β Move through all available tabs |
- Press
fto open the tag filter input modal for direct tag entry - Type tag name and press
enterto apply filter, orescto cancel - Type
#tagin the command palette to jump to a specific tag - Type
pri:0to filter tasks by priority level - Use
ctrl+sto save while editing - Press
escto cancel and return to the list
| OS | Path |
|---|---|
| Windows | %APPDATA%\kairo\config.toml |
| macOS | ~/Library/Application Support/kairo/config.toml |
| Linux | ~/.config/kairo/config.toml |
cp configs/kairo.example.toml ~/.config/kairo/config.tomlThen edit to customize:
- Theme selection β Choose from 12 built-in themes:
- Dark: Catppuccin (Default), Midnight, Aurora, Cyberpunk, Dracula, Nord
- Light: Vanilla, Solarized, Rose, Matcha, Cloud, Sepia
- Keybindings β Rebind any keyboard shortcut
- View ordering β Customize your task view tabs
- Sync settings β Configure Git repository sync
Enable optional distributed sync by setting sync.repo_path in your config.
Kairo uses a unique no-backend approach:
- Each task is stored as an individual JSON file
- Changes are committed locally with automatic messages
- Perform sync manually or on-demand
- Git's branching and merging handle conflicts transparently
# Manual sync
kairo syncKairo is built with a modular architecture designed for performance, extensibility, and data sovereignty.
| Component | Role |
|---|---|
| Task Service | Single source of truth for TUI, Lua, and CLI automation |
| UI Layer (Bubble Tea) | Elm-inspired TUI framework with state-machine pattern for mode management |
| Storage (SQLite) | Pure Go database with WAL for reliability and concurrent access |
| Sync Engine (Git) | Distributed "no-backend" sync with per-task JSON files |
| Search (Fuzzy Index) | In-memory ranked matching with sub-millisecond results |
| Plugins (Gopher-Lua) | Lightweight Lua VM for user extensions |
User Input/API/Lua β Task Service β Hooks System
β
Immediate DB Persistence β Optional Git Sync
β
UI Re-render β Instant User Feedback
kairo/
βββ CHANGELOG.md
βββ cmd
β βββ kairo
β βββ main.go
βββ CODE_OF_CONDUCT.md
βββ configs
β βββ kairo.example.toml
βββ CONTRIBUTING.md
βββ go.mod
βββ go.sum
βββ internal
β βββ api
β β βββ api.go
β βββ app
β β βββ model.go
β β βββ msg.go
β βββ buildinfo
β β βββ buildinfo.go
β βββ config
β β βββ config.go
β β βββ config_test.go
β βββ core
β β βββ codec
β β β βββ json.go
β β β βββ markdown.go
β β βββ core_test.go
β β βββ ids.go
β β βββ nlp
β β β βββ deadline.go
β β βββ task.go
β β βββ view.go
β βββ hooks
β β βββ hooks.go
β βββ lua
β β βββ engine.go
β βββ plugins
β β βββ host.go
β βββ search
β β βββ fuzzy.go
β β βββ fuzzy_test.go
β β βββ index.go
β βββ service
β β βββ service.go
β βββ storage
β β βββ migrations.go
β β βββ repo.go
β β βββ repo_test.go
β βββ sync
β β βββ engine.go
β βββ ui
β β βββ detail
β β β βββ model.go
β β βββ editor
β β β βββ model.go
β β βββ help
β β β βββ model.go
β β βββ keymap
β β β βββ keymap.go
β β β βββ keymap_test.go
β β β βββ normalize.go
β β β βββ normalize_test.go
β β βββ palette
β β β βββ model.go
β β βββ plugin_menu
β β β βββ model.go
β β βββ render
β β β βββ render.go
β β βββ styles
β β β βββ styles.go
β β βββ tasklist
β β β βββ model.go
β β βββ theme
β β β βββ theme.go
β β βββ theme_menu
β β βββ model.go
β βββ updater
β β βββ checksums.go
β β βββ download.go
β β βββ extract.go
β β βββ github.go
β β βββ updater.go
β β βββ windows_helper.go
β βββ util
β βββ paths.go
β βββ util_test.go
βββ LICENSE
βββ Makefile
βββ plugins
β βββ auto-cleanup.lua
β βββ auto-tagger.lua
β βββ sample.lua
β βββ task-logger.lua
βββ README.md
βββ screenshots
β βββ thumbnail.png
βββ scripts
β βββ install.ps1
β βββ install.sh
βββ SECURITY.md
βββ VERSION.txt
We welcome contributions! Please see CONTRIBUTING.md for guidelines and CODE_OF_CONDUCT.md for our code of conduct.
- β¨ New themes and design improvements
- π Bug fixes and performance enhancements
- π Documentation and tutorials
- π§© Plugins and extensions
- π Translations and localization
- @Tornado300 β Contributed significantly by reporting issues that led to multiple critical bug fixes.
Kairo is released under the MIT License.
- Multi-workspace support with encryption at rest
- Incremental DB-to-UI streaming for large datasets
- Conflict-free sync via append-only event log
- Sandboxed Plugin SDK
- Smart suggestions and spaced repetition
- Enhanced mobile/SSH terminal support
- Community plugin marketplace
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.
- π Report bugs on GitHub Issues
- π¬ Discuss ideas on GitHub Discussions
- β Show your support with a star!
Made with β€οΈ for focused execution. Start organizing your time today.