A fast, elegant terminal-based kanban task management application built with Go, providing efficient task management without leaving your command line.
Built with Bubble Tea.
- Project management with custom names and descriptions
- Three-column kanban board (Not Started, In Progress, Done)
- Task prioritization with Low/Medium/High levels
- Real-time task search and filtering
- Clean terminal UI with keyboard navigation
- Multiplatform support (Linux, macOS, Windows)
- Flexible configuration via file, environment variables, or flags
- Go 1.25.5 or higher
- C compiler (GCC/Clang on Unix, MinGW/TDM-GCC on Windows)
git clone https://github.com/mattlake/kahn
cd kahn
go install .Download pre-compiled binaries from the Releases page for your platform.
| Key(s) | Action |
|---|---|
h / l |
Navigate between kanban columns |
j / k |
Navigate tasks within a column |
space |
Move selected task to next status |
backspace |
Move selected task to previous status |
| Key(s) | Action |
|---|---|
n |
Create new task |
e |
Edit selected task |
d |
Delete selected task |
/ |
Search/filter tasks by name |
| Key(s) | Action |
|---|---|
/ |
Activate search mode |
type |
Filter tasks in real-time (case-insensitive) |
backspace |
Remove character from search |
esc |
Clear search and exit search mode |
Search Features:
- Real-time filtering as you type
- Case-insensitive substring matching
- Shows match count
- Search persists when creating/editing/deleting tasks
- Clears automatically when switching projects
| Key(s) | Action |
|---|---|
p |
Switch between projects |
p → n |
Create new project |
p → d |
Delete current project |
q- Quit applicationesc- Cancel dialogs/forms
Default Database Path:
- Windows:
%USERPROFILE%\.kahn\kahn.db - Linux/macOS/WSL2:
~/.kahn/kahn.db
You can customize the database location as shown below:
Linux/macOS/WSL2 (~/.kahn/config.toml):
[database]
# Home directory location
path = "~/.kahn/kahn.db"
# Custom absolute path
path = "/home/yourname/tasks/my-kahn.db"
# Using shell expansion
path = "~/Dropbox/tasks/kahn.db"
# System-wide shared database
path = "/opt/kahn/shared.db"Windows (%USERPROFILE%\.kahn\config.toml):
[database]
# Default Windows path (auto-expanded)
path = "~/.kahn/kahn.db"
# Custom path with forward slashes
path = "C:/Users/YourName/Documents/Tasks/kahn.db"
# Different drive
path = "D:/Work/Project Management/kahn.db"Search order: ./config.toml → ~/.kahn/config.toml → /etc/kahn/config.toml
- Command-line flags (highest priority)
- Environment variables (
KAHN_prefix) - Config files
- Default values (lowest priority)
You can use environment variables with the KAHN_ prefix:
export KAHN_DATABASE_PATH="/custom/path/kahn.db"
export KAHN_DATABASE_BUSY_TIMEOUT="3000"We welcome contributions! Please follow these guidelines:
- Fork the repository and create a feature branch
- Add tests for new functionality
- Ensure all tests pass with
go test ./... - Format code with
go fmt ./... - Submit a pull request with a clear description
- Follow the existing code style and patterns
- Write comprehensive tests for new features
- Use table-driven tests for multiple scenarios
- Document public APIs and complex logic
Database Permission Errors
# Ensure the ~/.kahn directory exists and has proper permissions
mkdir -p ~/.kahn
chmod 755 ~/.kahn- Open an issue on GitHub
- Check existing issues for solutions
This project is licensed under the MIT License.
This license permits:
- ✅ Free commercial use and modification
- ✅ Distribution and private use
- ✅ Sublicensing and patent rights
- ✅ No liability warranty
The only requirement is including the original copyright notice in redistributions.
See the LICENSE file for full details.
