✓ Verified 💻 Development ✓ Enhanced Data

Ttt

Manage TinyTalkingTodos lists and items via the ttt CLI.

Rating
4 (138 reviews)
Downloads
6,692 downloads
Version
1.0.0

Overview

Manage TinyTalkingTodos lists and items via the ttt CLI.

Complete Documentation

View Source →

TinyTalkingTodos CLI

Use ttt to manage todo lists and items from the command line. The CLI syncs with TinyTalkingTodos in real-time.

Installation

bash
npm install -g @ojschwa/ttt-cli

Or install locally for development:

bash
cd /path/to/talking-todo/ttt-cli
npm install
npm run build
npm link

Verify with ttt --help.

Authentication

Before using the CLI, the user must be authenticated:

bash
# Check auth status
ttt auth status

# Login via browser (opens OAuth flow)
ttt auth login

# Logout
ttt auth logout

# Export credentials as env vars (for scripts)
ttt auth export

List Management

List all lists

bash
ttt list ls

Output (compact, token-efficient):

text
Today [2/5]
Groceries [0/3]
Work Tasks [1/4]

For structured data:

bash
ttt list ls --json

Get list details

bash
ttt list get "Groceries"
# or by ID
ttt list get list-abc123

Create a new list

bash
ttt list create "Weekend Plans"
ttt list create "Shopping" --icon "🛒" --color "#FF6B6B"

Options:

  • --color - Background color
  • --icon - List icon
  • --type - List type

Update a list

bash
ttt list update "Groceries" --name "Shopping List"
ttt list update "Shopping List" --icon "🛒" --color "#00FF00"

Options:

  • --name - New list name
  • --color - Background color
  • --icon - List icon
  • --type - List type

Delete a list

bash
ttt list delete "Old List"
ttt list rm "Old List"  # alias

# Force delete even if list has todos
ttt list delete "Old List" --force

Todo Operations

List todos in a list

bash
ttt todo ls --list "Groceries"

Output (compact):

text
Groceries [1/4]
✓ Milk id:todo-abc123
○ Bread id:todo-def456
○ Eggs id:todo-ghi789
○ Butter id:todo-jkl012

For JSON output:

bash
ttt todo ls --list "Groceries" --json

Add a todo

Basic:

bash
ttt todo add "Buy avocados" --list "Groceries"

With options:

bash
ttt todo add "Doctor appointment" --list "Health" \
  --date 2026-02-15 \
  --time 14:30 \
  --notes "Bring insurance card"

ttt todo add "Try new pasta place" --list "Restaurants" \
  --url "https://example.com/restaurant" \
  --street-address "123 Main St" \
  --rating 4

ttt todo add "Tomatoes" --list "Groceries" \
  --amount 2.50 \
  --category "Produce" \
  --emoji "🍅"

All --list options:

OptionDescriptionExample
--notes Additional notes--notes "organic preferred"
--date Due date--date 2026-02-15
--time Due time--time 14:30
--url Associated URL--url "https://..."
--emoji Item emoji--emoji "🎉"
--email Associated email--email "contact@..."
--street-address Location--street-address "123 Main"
--number Numeric value--number 5
--amount Amount/price--amount 12.99
--rating <1-5>Star rating--rating 4
--type Item type--type A
--category Category--category "Urgent"

Mark a todo as done

bash
ttt todo done todo-abc123

The todo ID is shown in the compact output format after id:.

Mark a todo as not done

bash
ttt todo undone todo-abc123

Update a todo

bash
ttt todo update todo-abc123 --text "New text"
ttt todo update todo-abc123 --category "Urgent" --date 2026-02-15
ttt todo update todo-abc123 --done   # mark as done
ttt todo update todo-abc123 --not-done  # mark as not done

Options:

  • --text - New todo text
  • --notes, --date, --time, --url, --emoji, --email, --street-address
  • --number, --amount, --rating, --type, --category
  • --done / --not-done - Toggle completion status

Delete a todo

bash
ttt todo delete todo-abc123
# or use alias
ttt todo rm todo-abc123

Batch add todos

Add multiple todos at once using JSON:

bash
ttt todo batch-add --list "Groceries" --items '[
  {"text": "Milk"},
  {"text": "Eggs", "fields": {"category": "Dairy"}},
  {"text": "Bread", "fields": {"amount": 3.50}}
]'

Each item requires text and optionally fields with any todo field.

Batch update todos

Update multiple todos at once:

bash
ttt todo batch-update --items '[
  {"id": "todo-abc123", "fields": {"done": true}},
  {"id": "todo-def456", "fields": {"text": "Updated text", "category": "Urgent"}}
]'

Each item requires id and fields with the updates to apply.

Undo Operations

All mutating operations are recorded and can be undone:

bash
# Undo the last operation
ttt undo

# Undo the last 3 operations
ttt undo 3

# View undo history
ttt history
ttt history --limit 20
ttt history --json

Undo supports: todo add/delete/update, batch-add/update, mark done/undone, list create/update/delete.

Daemon (Performance)

The daemon keeps a persistent WebSocket connection for faster commands:

bash
# Start daemon (auto-starts on first command if not running)
ttt daemon start

# Check status
ttt daemon status

# Stop daemon
ttt daemon stop

The daemon auto-shuts down after 30 minutes of inactivity.

Best Practices

  • Use compact output (default) when displaying lists to users - it's token-efficient
  • Use --json when you need to parse data or extract specific fields
  • Reference lists by name for readability, or by ID for precision
  • Check auth status before operations if you're unsure of login state
  • Extract todo IDs from compact output (format: id:) for updates
  • Use batch operations when adding or updating multiple items - more efficient than individual calls
  • Use undo if you make a mistake - ttt undo reverts the last operation

Example Workflows

Add items to grocery list

bash
ttt todo add "Milk" --list "Groceries" --category "Dairy"
ttt todo add "Bread" --list "Groceries" --category "Bakery"
ttt todo add "Apples" --list "Groceries" --amount 3.50 --category "Produce"

Check and complete tasks

bash
# View todos
ttt todo ls --list "Today"

# Mark one done (using ID from output)
ttt todo done todo-xyz789

Create a new list with todos

bash
ttt list create "Weekend Trip" --icon "🏕️"
ttt todo add "Pack tent" --list "Weekend Trip"
ttt todo add "Check weather" --list "Weekend Trip" --url "https://weather.com"
ttt todo add "Gas up car" --list "Weekend Trip"

Batch add items efficiently

bash
ttt todo batch-add --list "Party Supplies" --items '[
  {"text": "Balloons", "fields": {"category": "Decorations"}},
  {"text": "Cake", "fields": {"category": "Food", "amount": 45.00}},
  {"text": "Plates", "fields": {"category": "Supplies", "number": 20}},
  {"text": "Candles", "fields": {"category": "Decorations"}}
]'

Mark multiple items done

bash
ttt todo batch-update --items '[
  {"id": "todo-abc", "fields": {"done": true}},
  {"id": "todo-def", "fields": {"done": true}},
  {"id": "todo-ghi", "fields": {"done": true}}
]'

Undo a mistake

bash
# Accidentally deleted something? Undo it
ttt undo

# Made several mistakes? Undo multiple
ttt undo 3

Installation

Terminal bash

openclaw install ttt
    
Copied!

💻Code Examples

npm link

npm-link.txt
Verify with `ttt --help`.

## Authentication

Before using the CLI, the user must be authenticated:

ttt auth export

ttt-auth-export.txt
## List Management

### List all lists

ttt list create "Shopping" --icon "🛒" --color "#FF6B6B"

ttt-list-create-shopping---icon----color-ff6b6b.txt
Options:
- `--color <hex>` - Background color
- `--icon <emoji>` - List icon
- `--type <type>` - List type

### Update a list

ttt list update "Shopping List" --icon "🛒" --color "#00FF00"

ttt-list-update-shopping-list---icon----color-00ff00.txt
Options:
- `--name <name>` - New list name
- `--color <hex>` - Background color
- `--icon <emoji>` - List icon
- `--type <type>` - List type

### Delete a list

ttt list delete "Old List" --force

ttt-list-delete-old-list---force.txt
## Todo Operations

### List todos in a list

ttt todo ls --list "Groceries" --json

ttt-todo-ls---list-groceries---json.txt
### Add a todo

Basic:

--emoji "🍅"

---emoji-.txt
All `--list` options:
| Option | Description | Example |
|--------|-------------|---------|
| `--notes <text>` | Additional notes | `--notes "organic preferred"` |
| `--date <YYYY-MM-DD>` | Due date | `--date 2026-02-15` |
| `--time <HH:MM>` | Due time | `--time 14:30` |
| `--url <url>` | Associated URL | `--url "https://..."` |
| `--emoji <emoji>` | Item emoji | `--emoji "🎉"` |
| `--email <email>` | Associated email | `--email "contact@..."` |
| `--street-address <addr>` | Location | `--street-address "123 Main"` |
| `--number <n>` | Numeric value | `--number 5` |
| `--amount <n>` | Amount/price | `--amount 12.99` |
| `--rating <1-5>` | Star rating | `--rating 4` |
| `--type <A-E>` | Item type | `--type A` |
| `--category <name>` | Category | `--category "Urgent"` |

### Mark a todo as done

ttt todo done todo-abc123

ttt-todo-done-todo-abc123.txt
The todo ID is shown in the compact output format after `id:`.

### Mark a todo as not done

ttt todo update todo-abc123 --not-done # mark as not done

ttt-todo-update-todo-abc123---not-done--mark-as-not-done.txt
Options:
- `--text <text>` - New todo text
- `--notes`, `--date`, `--time`, `--url`, `--emoji`, `--email`, `--street-address`
- `--number`, `--amount`, `--rating`, `--type`, `--category`
- `--done` / `--not-done` - Toggle completion status

### Delete a todo

ttt todo rm todo-abc123

ttt-todo-rm-todo-abc123.txt
### Batch add todos

Add multiple todos at once using JSON:

Tags

#productivity_and-tasks #cli

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author joshuacrowley
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install ttt