| name | things-mac |
| description | Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags. |
| 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)"}]}} |
| category | productivity |
| maturity | stable |
| tags | ["things3","tasks","todos","macos","url-scheme"] |
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.app for gateway runs).
- Optional: set
THINGSDB (or pass --db) to point at your ThingsData-* folder.
- Optional: set
THINGS_AUTH_TOKEN to avoid passing --auth-token for update ops.
Read-only (DB)
things inbox --limit 50
things today
things upcoming
things 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 line
Notes line 1
Notes line 2
EOF
Examples: modify a todo (needs auth token)
- First: get the ID (UUID column):
things search "milk" --limit 5
- Auth: set
THINGS_AUTH_TOKEN or 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-cli right now (no “delete/move-to-trash” write command; things trash is read-only listing).
- Options: use Things UI to delete/trash, or mark as
--completed / --canceled via things update.
Notes
- macOS-only.
--dry-run prints the URL and does not open Things.