A personal task management system with a beautiful terminal UI, SQLite storage, and background task execution via pluggable AI agents (Claude Code or OpenAI Codex CLI).
The main view showing tasks organized across Backlog, In Progress, Blocked, and Done columns
Viewing a task with Claude's output and shell access in split panes
Live execution log showing task progress, worktree creation, and Claude's actions
Creating a new task with project selection, type, scheduling, and attachments
- Kanban Board - Visual task management with 4 columns (Backlog, In Progress, Blocked, Done)
- Git Worktrees - Each task runs in an isolated worktree, no conflicts between parallel tasks
- Pluggable Executors - Choose between Claude Code or OpenAI Codex CLI per task
- Ghost Text Autocomplete - LLM-powered suggestions for task titles and descriptions as you type
- VS Code-style Fuzzy Search - Quick task navigation with smart matching (e.g., "dsno" matches "diseno website")
- Markdown Rendering - Task descriptions render with proper formatting in the detail view
- Project Memories - Persistent context that carries across tasks
- Real-time Updates - Watch tasks execute live
- Auto-cleanup - Automatic cleanup of Claude processes and config entries for completed tasks
- SSH Access - Connect from anywhere via
ssh -p 2222 server
- Go 1.24.4+ - Required to build the project
If you use mise for dependency management, simply run:
mise installThis will install the correct Go version automatically.
Install Go 1.24.4 or later from go.dev/dl.
git clone https://github.com/bborn/workflow
cd workflow
make build# Launch the TUI (auto-starts background daemon)
./bin/task -l# Start the SSH server + executor
./bin/taskd -addr :2222
# Connect from anywhere
ssh -p 2222 your-server./bin/task daemon # Start daemon manually
./bin/task daemon stop # Stop the daemon
./bin/task daemon status # Check daemon status./bin/task purge-claude-config # Remove stale ~/.claude.json entries
./bin/task purge-claude-config --dry-run # Preview what would be removed
./bin/task claudes cleanup # Kill orphaned Claude processesAuto-cleanup: The daemon automatically cleans up Claude processes for tasks that have been done for more than 30 minutes, preventing memory bloat from orphaned processes.
| Key | Action |
|---|---|
←/→ or h/l |
Navigate columns |
↑/↓ or j/k |
Navigate tasks |
Enter |
View task details |
n |
Create new task |
x |
Execute (queue) task |
r |
Retry task with feedback |
c |
Close task |
a |
Archive task |
d |
Delete task |
o |
Open task's working directory |
p |
Command palette (fuzzy search) |
/ |
Filter tasks |
m |
Project memories |
s |
Settings |
? |
Toggle help |
q |
Quit |
| Key | Action |
|---|---|
e |
Edit task |
x |
Execute task |
r |
Retry with feedback |
R |
Resume executor session |
S |
Change task status |
! |
Toggle dangerous/safe mode |
\ |
Toggle shell pane visibility |
Shift+↑/↓ |
Switch between panes |
Alt+Shift+↑/↓ |
Jump to prev/next task (stays in executor pane) |
c |
Close task |
a |
Archive task |
d |
Delete task |
Esc |
Back to kanban |
| Key | Action |
|---|---|
Tab |
Accept ghost text suggestion |
Escape |
Dismiss suggestion |
Ctrl+Space |
Manually trigger suggestion |
backlog → queued → processing → done
↘ blocked (needs input)
| Status | Description |
|---|---|
backlog |
Created but not started |
queued |
Waiting to be processed |
processing |
Currently being executed |
blocked |
Needs input/clarification |
done |
Completed |
Task You supports multiple AI executors for processing tasks. You can choose the executor when creating or editing a task.
| Executor | CLI | Description |
|---|---|---|
| Claude (default) | claude |
Claude Code - Anthropic's coding agent with session resumption |
| Codex | codex |
OpenAI Codex CLI - OpenAI's coding assistant |
Both executors run in tmux windows with the same worktree isolation and environment variables. The main differences:
- Claude Code supports session resumption - when you retry a task, Claude continues with full conversation history
- Codex starts fresh on each execution but receives the full prompt with any feedback
At least one executor CLI must be installed for tasks to run:
# Claude Code (recommended)
# See https://claude.ai/claude-code for installation
# OpenAI Codex CLI
npm install -g @openai/codexManage settings with task settings:
task settings # View all settings
task settings set <key> <value> # Set a value| Setting | Description |
|---|---|
anthropic_api_key |
API key for ghost text autocomplete (optional, uses API credits) |
autocomplete_enabled |
Enable/disable autocomplete (true/false) |
LLM-powered suggestions appear as you type task titles and descriptions, similar to GitHub Copilot:
- Title suggestions - Autocomplete as you type the task title
- Body suggestions - Auto-suggest a description when you tab from the title to an empty body field
- Cursor-aware - Ghost text renders at cursor position for natural editing
- Smart caching - Recent completions are cached for instant responses
Setup:
task settings set anthropic_api_key sk-ant-your-key-hereControls:
Tab- Accept suggestionEscape- Dismiss suggestionCtrl+Space- Manually trigger suggestion
Get an API key at console.anthropic.com. This is optional and uses your API credits.
| Variable | Description | Default |
|---|---|---|
WORKTREE_DB_PATH |
SQLite database path | ~/.local/share/task/tasks.db |
ANTHROPIC_API_KEY |
Fallback for autocomplete if not set in settings | - |
You can configure per-project settings by creating a .taskyou.yml file in your project root:
worktree:
init_script: bin/worktree-setupSupported filenames (in order of precedence):
.taskyou.yml.taskyou.yamltaskyou.ymltaskyou.yaml
Configuration options:
| Field | Description | Example |
|---|---|---|
worktree.init_script |
Path to script that runs after worktree creation (relative or absolute) | bin/worktree-setup |
Configure projects in Settings (s):
- Name - Project identifier (e.g.,
myproject) - Path - Local filesystem path to git repo
- Aliases - Short names for quick reference
- Instructions - Project-specific AI instructions
Tasks run in isolated git worktrees at ~/.local/share/task/worktrees/{project}/task-{id}. This allows multiple tasks to run in parallel without conflicts. Press o to open a task's worktree.
You can configure a script to run automatically after each worktree is created. This is useful for:
- Installing dependencies
- Setting up databases
- Copying configuration files
- Running migrations
Two ways to configure:
- Conventional location - Create an executable script at
bin/worktree-setup:
#!/bin/bash
# Example: bin/worktree-setup
bundle install
cp config/database.yml.example config/database.yml- Custom location - Specify in
.taskyou.yml:
worktree:
init_script: scripts/my-setup.shThe script runs in the worktree directory and has access to all worktree environment variables (WORKTREE_TASK_ID, WORKTREE_PORT, WORKTREE_PATH).
Each task provides environment variables that applications can use to run in isolation:
| Variable | Description | Example |
|---|---|---|
WORKTREE_TASK_ID |
Unique task identifier | 207 |
WORKTREE_PORT |
Unique port (3100-4099) | 3100 |
WORKTREE_PATH |
Path to the worktree | /path/to/project/.task-worktrees/207-my-task |
These variables allow multiple tasks to run simultaneously without conflicts on ports or databases.
Configure your Rails app to use worktree variables for complete isolation:
config/puma.rb:
port ENV.fetch("WORKTREE_PORT", 3000)config/database.yml:
development:
database: myapp_dev<%= ENV['WORKTREE_TASK_ID'] ? "_task#{ENV['WORKTREE_TASK_ID']}" : "" %>Procfile.dev:
web: bin/rails server -p ${WORKTREE_PORT:-3000}
bin/worktree-setup:
#!/bin/bash
set -e
# Install dependencies
bundle install
# Create isolated database for this task
bin/rails db:create db:migrateNow the AI executor (Claude or Codex) can:
- Run your app with
bin/dev - Access it at
http://localhost:$WORKTREE_PORT - Work on multiple tasks in parallel without database or port conflicts
package.json:
{
"scripts": {
"dev": "next dev -p ${WORKTREE_PORT:-3000}"
}
}bin/worktree-setup:
#!/bin/bash
npm install
cp .env.example .env.localProject memories provide persistent context for the AI. Press m to manage.
Categories:
pattern- Code patterns and conventionscontext- Project-specific contextdecision- Architectural decisionsgotcha- Known pitfalls and workarounds
make build # Build binaries
make test # Run tests
make install # Install to ~/go/bin- Bubble Tea - TUI framework
- Lip Gloss - Terminal styling
- Wish - SSH server
- SQLite - Local database