Skip to content
← All apps

An app by Flavio

Things CLI

Create, read and update Things 3 projects and tasks from your terminal or coding agent. A macOS command-line tool with full MIT source.

Buy Things CLI · $20

One-time purchase. Tax included. Full source code.

macOS · Things 3 · Node.js 20+

Things CLI is a small command-line tool for Things 3 on macOS.

I use Things to keep track of projects and tasks. But most of my work starts in a terminal or in a conversation with a coding agent, and moving a plan from there into Things meant copying every task by hand.

Now I can do it with one command.

Buy Things CLI and get the source

Things CLI costs $20 including tax, paid once. The purchase includes the full source code under the MIT license, with setup instructions so you can run and customize your own copy.

After buying, connect your GitHub account in Polar and accept the invitation to the private Things CLI repository. Download the source from its Releases page, or clone the repository after authenticating with the GitHub account you connected. Future source updates are available from the same private repository.

This purchase supplies the software source. You provide the runtime, accounts and infrastructure described below.

Install it

After downloading and unzipping the source, open Terminal in its folder and link the command:

npm link

It requires macOS, Things 3, and Node.js 20 or newer. The project has no dependencies.

Add tasks and projects

You can add a task with a date, deadline, tags, notes, and a checklist:

things add "Call the accountant" \
  --when tomorrow \
  --deadline 2026-09-12 \
  --tags work,money

You can also create a project:

things project "Launch newsletter redesign" \
  --area "flaviocopes.com" \
  --notes "Ship by October"

These commands go through the official Things URL scheme, so they are fast and need no auth token.

Import a complete project from Markdown

This is the feature I wanted most.

You can describe a project with normal Markdown:

# Launch newsletter redesign

Keep the project context here.

## Website
- Update the home page
  Add the new screenshots.
- Test the signup form

## Email
- Write the launch email
- Schedule the broadcast

Then import the file:

things import newsletter-project.md

Things creates the project with its headings, tasks, and notes in one go.

A coding agent can turn our conversation into a Markdown plan, import it, then read the project back to check the result.

Read Things from the terminal

Things CLI can show today’s tasks, projects, areas, and search results:

things list
things projects
things search "newsletter"
things show "Launch newsletter redesign"

Add --json when a script or coding agent needs structured data:

things list today --json
things show "Launch newsletter redesign" --json

Reading goes through JavaScript for Automation, Apple’s JavaScript interface for Apple events. That’s how the CLI gets structured data out of Things.

The same mechanism lets it update notes and complete tasks:

things note "Launch newsletter redesign" \
  --append "Design approved"

things done "Update the home page" \
  --in "Launch newsletter redesign"

Built for coding agents

The repository includes an Agent Skill that explains the safe workflow to a coding agent.

With that installed, I can ask an agent:

Turn this conversation into a Things project. Keep the background in the project notes. Group the work under headings, then verify the imported project.

Or:

Show my tasks for today and help me choose three. Do not change anything.

The agent reads with --json, imports projects from Markdown, and passes long notes through files or standard input.

I left out deletion on purpose. The CLI can create, read, update, and complete items, but it cannot trash them. If I want to delete something, I do that inside the Things app.

The source is yours to customize under the MIT license.

Things CLI screenshot at full size