things-mac
steipete/clawdis
Read and write Things 3 todos, projects, and tags from the command line on macOS.
What is things-mac?
A CLI for the Things 3 task manager that lets you query your inbox, today list, projects, areas, and tags, plus add and update todos programmatically. Use this when you need to automate task creation or inspection without opening the Things app.
- List inbox, today, upcoming, projects, areas, and tags from your Things database
- Search todos by query with optional limits
- Add todos with titles, notes, due dates, projects, headings, tags, and checklists
- Update existing todos: change title, notes, list, tags, or mark complete/canceled
- Preview changes with --dry-run before executing
- Read from stdin for multi-line todo input
How to install things-mac
npx skills add https://github.com/steipete/clawdis --skill things-mac- macOS (darwin) only
- Go installed (for installation via `go install`)
- Full Disk Access granted to Terminal or calling app to read Things database
- Optional: THINGS_AUTH_TOKEN environment variable for write operations
How to use things-mac
- 1.Install via: GOBIN=/opt/homebrew/bin go install github.com/ossianhempel/things3-cli/cmd/things@latest
- 2.Grant Full Disk Access to Terminal or your calling application
- 3.Set THINGS_AUTH_TOKEN environment variable if you plan to update todos
- 4.Run read commands: things inbox, things today, things search "query"
- 5.For writes, use things add or things update with appropriate flags; use --dry-run first to preview
Use cases
- Automatically create todos from external systems or scripts
- Bulk-add related tasks to a project with consistent metadata
- Search and inspect your Things database programmatically
- Update todo status or metadata via API without opening the app
- Generate task reports by querying projects, areas, or tags
- macOS users automating task workflows
- Developers integrating Things 3 with other tools
- Power users building custom task creation scripts
- Teams syncing external data into Things
things-mac FAQ
No, delete is not supported. Use the Things UI to delete/trash, or mark todos as --completed or --canceled via things update.
Only for write operations (add/update). Set THINGS_AUTH_TOKEN environment variable or pass --auth-token flag each time.
Yes, use --checklist-item flag multiple times: things add "Title" --checklist-item "Item 1" --checklist-item "Item 2"
Grant Full Disk Access to the calling app (Terminal for manual runs, OpenClaw.app for gateway runs) in System Preferences > Security & Privacy.
Yes, use --list for project/area and --heading for a heading within that project.
Full instructions (SKILL.md)
Source of truth, from steipete/clawdis.
name: things-mac description: "Add, update, list, search, or inspect Things 3 todos, inbox, today, projects, areas, and tags on macOS." homepage: https://github.com/ossianhempel/things3-cli metadata: { "openclaw": { "emoji": "✅", "os": ["darwin"], "requires": { "bins": ["things"] }, "install": [ { "id": "go", "kind": "go", "module": "github.com/ossianhempel/things3-cli/cmd/things@latest", "bins": ["things"], "label": "Install things3-cli (go)", }, ], }, }
Things 3 CLI
Use things to read your local Things database (inbox/today/search/projects/areas/tags) and to add/update todos via the Things URL scheme.
Setup
- Install (recommended, Apple Silicon):
GOBIN=/opt/homebrew/bin go install github.com/ossianhempel/things3-cli/cmd/things@latest - If DB reads fail: grant Full Disk Access to the calling app (Terminal for manual runs;
OpenClaw.appfor gateway runs). - Optional: set
THINGSDB(or pass--db) to point at yourThingsData-*folder. - Optional: set
THINGS_AUTH_TOKENto avoid passing--auth-tokenfor update ops.
Read-only (DB)
things inbox --limit 50things todaythings upcomingthings search "query"things projects/things areas/things tags
Write (URL scheme)
- Prefer safe preview:
things --dry-run add "Title" - Add:
things add "Title" --notes "..." --when today --deadline 2026-01-02 - Bring Things to front:
things --foreground add "Title"
Examples: add a todo
- Basic:
things add "Buy milk" - With notes:
things add "Buy milk" --notes "2% + bananas" - Into a project/area:
things add "Book flights" --list "Travel" - Into a project heading:
things add "Pack charger" --list "Travel" --heading "Before" - With tags:
things add "Call dentist" --tags "health,phone" - Checklist:
things add "Trip prep" --checklist-item "Passport" --checklist-item "Tickets" - From STDIN (multi-line => title + notes):
cat <<'EOF' | things add -Title lineNotes line 1Notes line 2EOF
Examples: modify a todo (needs auth token)
- First: get the ID (UUID column):
things search "milk" --limit 5 - Auth: set
THINGS_AUTH_TOKENor pass--auth-token <TOKEN> - Title:
things update --id <UUID> --auth-token <TOKEN> "New title" - Notes replace:
things update --id <UUID> --auth-token <TOKEN> --notes "New notes" - Notes append/prepend:
things update --id <UUID> --auth-token <TOKEN> --append-notes "..."/--prepend-notes "..." - Move lists:
things update --id <UUID> --auth-token <TOKEN> --list "Travel" --heading "Before" - Tags replace/add:
things update --id <UUID> --auth-token <TOKEN> --tags "a,b"/things update --id <UUID> --auth-token <TOKEN> --add-tags "a,b" - Complete/cancel (soft-delete-ish):
things update --id <UUID> --auth-token <TOKEN> --completed/--canceled - Safe preview:
things --dry-run update --id <UUID> --auth-token <TOKEN> --completed
Delete a todo?
- Not supported by
things3-cliright now (no "delete/move-to-trash" write command;things trashis read-only listing). - Options: use Things UI to delete/trash, or mark as
--completed/--canceledviathings update.
Notes
- macOS-only.
--dry-runprints the URL and does not open Things.
Related skills
More from steipete/clawdis and the wider catalog.

tmux
Control tmux sessions and panes to interact with running CLIs: list, capture output, send keys, and monitor prompts.

trello
Manage Trello boards, lists, and cards via REST API.

video-frames
Extract frames or short clips from videos using ffmpeg.

voice-call
Start and manage voice calls via Twilio, Telnyx, Plivo, or mock provider.

wacli
Send WhatsApp messages to third parties and search chat history via CLI, separate from active conversations.

weather
Current weather and forecasts for any location via web_fetch or curl fallback.