lazytask 0.3.0

A task manager built for AI coding agents — plain markdown files, strict CLI, keyboard-driven TUI
Documentation

lazytask lt

AI-first task management. Human in command.

Built in Rust. Fast to run, easy to understand.

Built With Ratatui Rust License: MIT

Why lazytask? · How it works · Getting started · Commands · Configuration


Why lazytask?

AI coding agents are powerful, but they have blind spots. lazytask makes building easier for AI and for you.

🧩 Simple by design

Auto-memory, agent swarms, multi-tool orchestration: powerful for some, overkill for many. lazytask takes the opposite approach. Plain markdown files on disk. Readable by grep, diffable in git. No sync, no server, no database. AI as a 10x exoskeleton, not a swarm.

Sophisticated simplicity: if you can't do it on a whiteboard, you can't do it in lazytask.

🔁 Learnings are prompted, not lost

Most agents finish a task and move on. Nothing is retained. lazytask prompts reflection after every completion: what surprised, what broke, what to do differently. Learnings accumulate until you decide it's time to review them. No opaque auto-memory. You trigger the learning cycle, and your agent distills insights into concrete improvements to docs, workflows, or code.

🪤 Bugs don't slip through the cracks

Your agent spots a bug while working on something else. Without a place to put it, that bug vanishes. lazytask gives agents a create command, so side-findings become tracked tasks instead of forgotten context.

🎛️ AI-first, human in control

Agents get a strict CLI with JSON envelopes. You get a keyboard-driven TUI. Same storage, same rules. Stay on top of every task, or let the agent drive. Your call.

How it works

lazytask has two interfaces that share the same storage:

Human AI agent
Interface Keyboard-driven TUI Strict CLI with JSON envelopes
Launch lt lt list, lt create, ...
Workflow Navigate, create, move tasks Create, start, complete tasks, capture learnings

Tasks flow through directories. What you see in your file tree is the state:

.tasks/
├── todo/           # up to 20 tasks (configurable)
├── in-progress/    # up to 3 tasks (focus!) (configurable)
├── done/           # completed work
├── discard/        # intentionally excluded
└── LEARNINGS.md    # learnings captured after task completion

Each task is a single .md file. Moving a task from todo to in-progress is literally moving a file.

The feedback loop: agents do work → record learnings → you trigger review → agents distill insights → better code.

.tasks can be included in git, but we'd discourage it. lazytask tasks are meant to be post-its next to you on your desk.

lazytask TUI demo

Getting started

Install

Install instructions coming soon

Quick start

lt init    # creates .tasks/ layout + config file + agent guidance
lt init --upgrade  # refreshes generated config + agent guidance defaults
lt         # opens the TUI

lt init also appends usage instructions to your AGENTS.md (or CLAUDE.md), so your AI agent knows how to use lt immediately. Use lt init --upgrade after installing a new lazytask version to refresh generated defaults without overwriting .tasks/.

Commands

Human commands

Command Description
lt Open the TUI
lt init Initialize lazytask in your project
lt init --upgrade Refresh generated config and agent guidance defaults

AI commands

All AI commands return a consistent JSON envelope: {"ok": bool, "data": ...} or {"ok": false, "error": {...}}.

Command Description
lt list [--type task|bug] [--show-done] List tasks
lt get <query>... Get task details
lt create --title '...' --type task|bug --details '...' [--start] Create a task
lt start <query> Move task to in-progress
lt done <query> Complete task (returns reflection prompt)
lt discard <query> --discard-note '...' Discard a task
lt learn <query> --learning '...' Record a learning for a done task
lt learn --review Distill learnings into improvements

Configuration

lazytask.toml in your project root:

[limits]
todo = 20          # max tasks in todo
in_progress = 3    # max tasks in progress

[hints]
learn_threshold = 35

[retention]
done_discard_ttl_days = 3 # auto-delete done/discard tasks older than this many days

Acknowledgements

lazytask's TUI is built with ratatui, and its TUI UX draws heavy inspiration from lazygit.

License

MIT