TAM - Tasks Manager CLI Tool
A lightweight terminal-based project and task manager.
for the task-tracker challenge from roadmap.sh.
Features
- 📁 Project Management: Add, edit, and delete projects
- ✅ Task Management: Add, edit, delete tasks and update their status (start, complete)
- 🖥 Dual Mode Support:
- CLI Mode: Manage with command-line arguments
- Interactive Mode: Use keyboard-driven terminal UI
- 🎨 Theme Support: Switch between light and dark themes in interactive mode
Installation
Shell
|
Powershell
Homebrew
Npm
Crates.io
To install tam via crates.io:
GitHub
To install tam from the GitHub releases
Usage
Command mode
)
Interactive mode
Agent integration
tam can be driven by AI agents through a stable machine contract (schema tam.agent/v1): JSON output on stdout, structured errors on stderr, explicit project/agent context, atomic task claims and idempotent creation.
JSON CLI
# machine-readable output (global flags may appear before or after the subcommand)
Commands: status, project list/current/add, task add/list/show/update/claim/heartbeat/release/done/next/events/del. Every success prints one JSON envelope:
Failures are printed to stderr with {ok:false,"error":{"code","message","details"}}. Exit codes: 0 success, 1 validation/context/internal, 2 CLI usage, 3 not found, 4 conflict (lease/version). Context resolution: --project > TAM_PROJECT > config current_project; --agent > TAM_AGENT.
Multiple projects
If more than one project exists, do not assume current_project is yours — it is one global config shared by every process. Project-scoped commands (task list/add, status, task next, and their MCP equivalents) need a resolvable project; by-id commands (task show/update/claim/done/...) use the global task id unless you pass a project.
# one agent per project: process-scoped, no global mutation
TAM_PROJECT=tam
# one agent across projects: pass --project on every project-scoped call,
# and on by-id calls too so cross-project ids become not_found (exit 3)
# discover projects
For MCP, pass "project":"<name>" in every tools/call, or launch the server with "env":{"TAM_PROJECT":"<name>"} for a single-project agent. tam project use is a human convenience; concurrent agents should not rely on it. Without any project context, project-scoped commands fail with missing_project (exit 1). Full rules: docs/agent-protocol.md §4.3.
Claim semantics: task claim is atomic and sets in-progress plus a lease (--lease, default 900s); concurrent claims yield one success and one conflict. task heartbeat renews (holder only), task release returns the task to todo, task done clears the lease. task add --idempotency-key KEY makes retries return the same task (deduplicated:true). All writes append to the task_events audit log.
MCP server
tam mcp runs a stdio MCP server (JSON-RPC 2.0, newline delimited) with 12 tools (tam_status, tam_project_list, tam_task_list/get/create/update/claim/heartbeat/release/complete/next/events):
The server speaks protocol version 2024-11-05, keeps stdout free of human output/logs, and reports tool failures via result.isError=true. See docs/agent-protocol.md for the full contract and skills/tam-agent/SKILL.md for an agent-oriented playbook.
Give this guide to an agent
The single-file brief for an LLM is llms.txt. It is self-contained: project-context rules (including multiple projects), JSON envelope/exit codes, task view, lease/claim loop, all commands, idempotency, MCP setup, and pitfalls. Point the agent at it before it runs tam commands.
Four practical ways to deliver it:
-
MCP (preferred for tool use). Configure the server; the agent gets the tools directly, while
llms.txtsupplies the usage rules:Single-project agents can add
"env":{"TAM_PROJECT":"tam"}; multi-project agents should pass"project"per tool call. -
Attach or paste the file into the agent's context.
If the client supports file references, use
@llms.txt. For project-scoped coding agents, add one line to the project instructions (CLAUDE.md,AGENTS.md, or equivalent):Before using tam, read llms.txt in this repository. -
Install the packaged skill. Existing skill installers expose
skills/tam-agent/SKILL.md: -
Fetch it by URL (e.g. for a remote agent or a gist/context loader):
https://raw.githubusercontent.com/wst7/tam/main/llms.txt
llms.txt is maintained alongside docs/agent-protocol.md; if the contract changes, update both. The JSON/MCP interfaces are the actual contract; the brief only explains how to use them.
DSH plugin
This repository ships dsh-plugin/, an installable DeepSeek Harness bundle (@wst7/dsh-tam) that exposes 14 native model-facing tools — tam_status, tam_project_list/add, tam_task_list/show/create/update/claim/heartbeat/release/complete/next/events/delete. It wraps the JSON CLI, so the model gets canonical task data without shelling out or parsing tables.
Install for users:
# pin a version
# restart DeepSeek Harness; the tools appear in the next session
Or install a GitHub release tarball, or the local checkout:
# or, from this repo:
&&
tam CLI: the plugin declares an optional @wst7/tam npm dependency, so once tam
1.0.14+ is published, dsh plugin add @wst7/dsh-tam also installs the CLI (cargo-dist's
launcher downloads the platform binary on first use). If the optional dependency is
skipped (offline/mirror lag), install tam separately or point config.command at it.
Smoke-test it:
Override the binary/project/agent in the profile's cordis.patch.yml if needed:
- id: tam-tools
name: "@wst7/dsh-tam"
config:
command: "/absolute/path/to/tam"
project: "tam" # optional default project
agent: "dsh" # optional default agent identity
The panel is available from the left sidebar bottom (任务 entry): it lists projects
and tasks, and lets you create/edit/delete tasks (title, description, status, priority,
tags) manually. It uses the same database and lease rules as the tools.

Multi-project rule still applies: pass project on every project-scoped tool call. Tool reference and development tests: dsh-plugin/README.md. Maintainer release steps (npm / tarball / CI / versioning): dsh-plugin/PUBLISHING.md.
Database migration
The agent features are additive: on the first run of an old database it is backed up to tam.db3.bak.v1, new task columns, task_events and indexes are added, and PRAGMA user_version becomes 2. Existing rows are never rewritten (defaults: priority=3, revision=1, no lease). Schema v2 allows an idempotency key to be reused after the previous task was soft-deleted.
AI Assistant Skill
A usage skill is bundled in this repository to help AI assistants (Claude Code, Codex, OpenCode, Cursor, etc.) provide accurate tam command guidance.
Install via npx skills (Recommended)
# Install from GitHub
What's Included
The tam-usage skill covers:
- Installation methods (Shell, PowerShell, Homebrew, npm, cargo)
- Complete CLI command reference with aliases
- Project / Task management workflow
- Data model and soft-delete conventions
- Common pitfalls (e.g., forgetting
tam project use) - Troubleshooting tips
Once installed, your assistant will automatically load this skill when you ask questions about managing projects or tasks with tam.
Contributing
Contributions are welcome! Please submit an issue or pull request on the GitHub repository.
License
tam is licensed under the MIT License.