Tasc is a modern, snappy, and powerful CLI task manager built for the terminal. It combines the speed of the command line with the interactivity of a Text User Interface (TUI), all backed by a robust SQLite database.
- Fast & Efficient: Instant startup and operations using SQLite.
- Fuzzy Search: Powerful FTS5-based fuzzy search to find tasks instantly.
- Interactive TUI: A beautiful, keyboard-driven UI powered by Bubble Tea for managing tasks.
- Dependency Management: Create and visualize task dependencies (graphs).
- AI Integration: Built-in integration with Google Gemini for natural language queries and advice.
- Bundled Agent Skill: Ships with a reusable
SKILL.mdbundle for Codex-style agent clients. - Smart Scheduling: Track Due Dates and Estimates.
- Priority System: Dynamic priority scoring to highlight what matters most.
- Time Tracking: Built-in timer to track how long tasks take.
- Calendar View: Visualize your schedule in the terminal.
brew install aescoubas/tasc/tascDownload the latest .deb or .rpm release from the Releases Page.
Debian/Ubuntu:
sudo dpkg -i tasc_*.debFedora/RHEL:
sudo rpm -i tasc_*.rpmYou can also install Tasc quickly using the provided install script:
git clone https://github.com/aescoubas/tasc.git
cd tasc
./install.shPrerequisites: Go 1.24 or higher.
Important: Tasc requires the SQLite fts5 extension. You must include the -tags fts5 flag when building.
git clone https://github.com/aescoubas/tasc.git
cd tasc
go build -tags fts5 -o tascMove the binary to your path:
sudo mv tasc /usr/local/bin/Install the bundled Codex skill:
tasc skill installThe flake keeps the primary package focused on the tasc CLI. The React dashboard remains a separate development build.
# Enter a shell with Go, Node.js, SQLite, GoReleaser, and Nix formatting tools
nix develop
# Build the main CLI package
nix build
# Run tasc directly from the flake
nix run -- --help
# Run the flake checks (CLI build/tests and web build)
nix flake checkIf you want to build the standalone web dashboard bundle as well:
nix build .#web-
Add a task:
tasc add "Finish the report" tasc add "Buy milk" --due "tomorrow" tasc add "Ship release" --depends-on 12,14 tasc add "Prepare changelog" --blocks 42
-
Log a completed task:
tasc log "Fixed that bug" tasc log "Meeting with team" --project "Work"
-
List tasks:
tasc list tasc list --sort due # Sort by due date tasc list --sort age # Sort by task age tasc list --sort duration # Sort by time spent tasc list --sort score -d # Sort by priority score descending
-
Mark as done:
tasc done <task_id>
-
Edit a task:
tasc edit <task_id> # Opens task in your default $EDITOR tasc modify <task_id> "New description" --due "next friday" tasc modify <task_id> --depends-on 12 --blocks 42,43
-
Delete a task:
tasc delete <task_id>
-
Undo last action:
tasc undo tasc undo --yes
-
Renumber tasks: Renumber open task IDs from
0while preserving current order. Done/deleted tasks are moved to negative IDs so they are clearly distinct:tasc renumber tasc renumber --yes
-
Interactive UI: Launch the full TUI:
tasc ui
-
Search: Fuzzy search your tasks:
tasc search "milk" -
Inspect Task: View detailed information about a task:
tasc show <task_id>
-
Dependencies: Link tasks together:
tasc dep <blocker_id> <blocked_id> tasc add "Write tests" --depends-on 3 tasc modify 8 --blocks 9,10
View dependency graph:
tasc graph
-
AI Assistant: Ask Gemini for help with your tasks:
tasc ask "How should I prioritize my day?" -
AI Integration (MCP): Run an MCP server to let AI agents (like Gemini) manage your tasks:
tasc mcp
Configuration: To use with Gemini CLI, add this to your config:
mcpServers: tasc: command: "tasc" args: ["mcp"]
-
Bundled Agent Skill: Tasc ships with a bundled
tasc-task-managerskill for clients that support theSKILL.mdagent-skills format. The source bundle lives inskills/tasc-task-manager/and is embedded into thetascbinary so you can install it after any normaltascinstall. Install it into the default Codex location (~/.agents/skills):tasc skill install --client codex
Install it into the default Claude Code location (
~/.claude/skills):tasc skill install --client claude
Install it into the default Gemini CLI location (
~/.gemini/skills) when you want a Gemini-specific copy:tasc skill install --client gemini
If you already installed the Codex/shared copy into
~/.agents/skills, Gemini CLI can discover that shared skill and you should avoid installing a duplicate Gemini-specific copy. Install it into another compatible skills directory manually:tasc skill install --dest /path/to/skills
The bundled skill assumes the client is configured to launch the Tasc MCP server with:
codex mcp add tasc -- /usr/local/bin/tasc mcp claude mcp add -s user tasc -- /usr/local/bin/tasc mcp gemini mcp add -s user tasc /usr/local/bin/tasc mcp
-
Calendar: View upcoming tasks on a calendar:
tasc calendar
-
Time Tracking: Track time spent on tasks:
tasc start <task_id> # Start the timer for a task tasc stop # Stop the currently active timer
-
Statistics: View task counts by status:
tasc stats
-
Task Refinement: Mark vague tasks that need more clarity:
tasc vague <task_id>
-
Project Management: Manage project metadata (descriptions, goals):
tasc project list tasc project add "Work" --desc "Professional tasks" tasc project show "Work"
-
Data Management: Import from TaskWarrior:
task export | tasc import-tw
Backup and Restore your database:
tasc backup > tasc_backup.json tasc restore < tasc_backup.json
Seed with dummy data (for testing):
tasc seed
Tasc comes with a modern React-based web dashboard for visual planning.
-
Start the API Server:
tasc serve
-
Start the Web UI:
cd web npm install npm run devOpen
http://localhost:5173to view your Kanban board and task lists.
Tasc can run in a distributed mode where a central server manages the database, and clients connect to it remotely.
1. Start the Server:
You can use the provided start script to build and launch the server:
./start-server.shOr manually:
tasc serve --port 80812. Configure the Client:
Set the TASC_REMOTE environment variable to point to your server:
export TASC_REMOTE=http://localhost:8081Now, all tasc commands (add, list, done, etc.) will operate on the remote server instead of the local database.
You can also specify the remote URL per command using the --remote flag:
tasc list --remote http://localhost:8081Contributions are welcome!
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0).
- Commercial Use: You may use this software in commercial applications (including proprietary ones).
- Modifications: If you modify the source code of this project, you must make those modifications available under the MPL-2.0 license.
See the LICENSE file for details.