kairo

module
v0.0.0-...-2cf6353 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2026 License: MIT

README ΒΆ

πŸ“ Kairo

🌿 Minimal, powerful task management for the modern terminal.

Demo

Release CI Go Report Card

βŒ› Time, executed well.


✨ A Premium Terminal Task Manager Designed for Focused Execution

πŸƒπŸ» 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.

🎯 BubbleTea Motion System β€” Liquid glass interactions with elastic physics
🎨 Premium UI Design β€” Modern Bento-style layout with soft, rounded aesthetics
⌨️ 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
🌊 Boba Liquid Feel β€” UI elements behave with soft inertia and fluid clustering

Built with Bubble Tea (TUI framework), Lip Gloss (terminal styling), and SQLite (local storage).


✨ Core Features

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
Cinematic Animations Smooth vertical shutter, cascading row reveals, and glitch/vaporize deletions
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

🀩 Star History

Star History Chart

πŸ“¦ Installation

macOS (Homebrew)
brew tap programmersd21/kairo https://github.com/programmersd21/kairo
brew install --cask programmersd21/kairo/kairo
Linux / macOS (curl)
curl -fsSL https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.sh | bash

Installs to $HOME/.local/bin/kairo (fallback: /usr/local/bin/kairo) and attempts to persist the PATH update in your shell profile when needed.

Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/programmersd21/kairo/main/scripts/install.ps1 | iex

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.1 β†’ v1.2.2) 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"]}}'
Other CLI Commands
# 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

# 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

πŸ”Œ 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 }
}

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
i πŸ“’ Open GitHub issues
c πŸ“ Show changelog
? ❓ Show help menu
q ❌ Quit
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

βš™οΈ Configuration

Config Location
OS Path
Windows %APPDATA%\kairo\config.toml
macOS ~/Library/Application Support/kairo/config.toml
Linux ~/.config/kairo/config.toml
Quick Setup
cp configs/kairo.example.toml ~/.config/kairo/config.toml

Then edit to customize:

  • Theme selection β€” Choose from 32 built-in themes:
    • Premium Dark: catppuccin (Default), midnight, aurora, cyberpunk, dracula, nord, obsidian_bloom, neon_reef, carbon_sunset, vanta_aurora, plasma_grape, midnight_jade, synthwave_minimal, graphite_matcha
    • Premium Light: vanilla, solarized, rose, matcha, cloud, sepia, cloud_dancer, sakura_sand, olive_mist, terracotta_air, vanilla_sky, peach_fuzz_neo, coastal_drift, matcha_latte
    • Hybrid/Specialized: digital_lavender, neo_mint_system, sunset_gradient_pro, forest_sanctuary
  • Keybindings β€” Rebind any keyboard shortcut
  • View ordering β€” Customize your task view tabs
  • Sync settings β€” Configure Git repository sync

πŸ”„ Git 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 sync

πŸ“… Natural Language Deadlines

Kairo's smart parser understands natural language, making it effortless to set deadlines without worrying about specific date formats.

When creating or editing a task, you can input deadlines like:

  • Relative days: today, tomorrow, day after tomorrow
  • Specific days: monday, next friday, this sunday
  • Time-based: in 2 hours, at 5pm, tomorrow at 10am
  • Dates: august 24, 24th of april

Powered by the when library, Kairo ensures your deadlines are always parsed intuitively.


πŸ— Architecture

Kairo is built with a modular architecture designed for performance, extensibility, and data sovereignty.

Core Components
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
Data Flow
User Input/API/Lua β†’ Task Service β†’ Hooks System
    ↓
Immediate DB Persistence β†’ Optional Git Sync
    ↓
UI Re-render β†’ Instant User Feedback

🌴 Project Structure

kairo/
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
β”‚   β”‚   β”œβ”€β”€ bug_report.md
β”‚   β”‚   └── feature_request.md
β”‚   β”œβ”€β”€ workflows/
β”‚   β”‚   β”œβ”€β”€ ci.yml
β”‚   β”‚   └── release.yml
β”‚   └── PULL_REQUEST_TEMPLATE.md
β”œβ”€β”€ cmd/
β”‚   └── kairo/
β”‚       └── main.go
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   └── api.go
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ model.go
β”‚   β”‚   └── msg.go
β”‚   β”œβ”€β”€ buildinfo/
β”‚   β”‚   └── buildinfo.go
β”‚   β”œβ”€β”€ completion/
β”‚   β”‚   └── completion.go
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ config.go
β”‚   β”‚   └── config_test.go
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ codec/
β”‚   β”‚   β”‚   β”œβ”€β”€ json.go
β”‚   β”‚   β”‚   └── markdown.go
β”‚   β”‚   β”œβ”€β”€ nlp/
β”‚   β”‚   β”‚   └── deadline.go
β”‚   β”‚   β”œβ”€β”€ core_test.go
β”‚   β”‚   β”œβ”€β”€ ids.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/
β”‚   β”‚   β”‚   β”œβ”€β”€ easing.go
β”‚   β”‚   β”‚   └── 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
β”œβ”€β”€ plugins/
β”‚   β”œβ”€β”€ auto-cleanup.lua
β”‚   β”œβ”€β”€ auto-tagger.lua
β”‚   β”œβ”€β”€ sample.lua
β”‚   └── task-logger.lua
β”œβ”€β”€ screenshots/
β”‚   └── demo.gif
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ install.ps1
β”‚   └── install.sh
β”œβ”€β”€ local/
β”‚   └── demo_preset.json
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .goreleaser.yaml
β”œβ”€β”€ CHANGELOG.md
β”œβ”€β”€ go.mod
β”œβ”€β”€ go.sum
β”œβ”€β”€ LICENSE
β”œβ”€β”€ Makefile
β”œβ”€β”€ README.md
└── VERSION.txt

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines and CODE_OF_CONDUCT.md for our code of conduct.

Areas for Contribution
  • ✨ New themes and design improvements
  • πŸ› Bug fixes and performance enhancements
  • πŸ“š Documentation and tutorials
  • 🧩 Plugins and extensions
  • 🌍 Translations and localization

πŸ’™ Community Legend(s)

  • @Tornado300 β€” Contributed significantly by reporting issues that led to multiple critical bug fixes.

πŸ“œ License

Kairo is released under the MIT License.


πŸ—Ί Roadmap

  • 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

πŸ’‘ Philosophy

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.


πŸ“ž Support


Made with ❀️ for focused execution. Start organizing your time today.

Directories ΒΆ

Path Synopsis
cmd
kairo command
internal
api
Package api provides the CLI/HTTP API interface for external automation This is how external systems interact with Kairo
Package api provides the CLI/HTTP API interface for external automation This is how external systems interact with Kairo
app
hooks
Package hooks provides the event system for Kairo - allowing plugins to react to app events
Package hooks provides the event system for Kairo - allowing plugins to react to app events
lua
Package lua provides Lua bindings for the kairo service layer This is the primary extensibility interface for plugins
Package lua provides Lua bindings for the kairo service layer This is the primary extensibility interface for plugins
service
Package service provides the unified task service layer - the single source of truth for all task operations (TUI, Lua, CLI, Automation).
Package service provides the unified task service layer - the single source of truth for all task operations (TUI, Lua, CLI, Automation).
ui/render
Package render provides terminal rendering utilities that guarantee background color consistency across the entire viewport.
Package render provides terminal rendering utilities that guarantee background color consistency across the entire viewport.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL