FreeToDoList
New · freetodolist CLI

Your todos.
In your terminal.

A small, fast, scriptable command-line client for FreeTodoList. Pipe your tasks through Unix tools, automate them in cron jobs and CI, and let AI agents like Claude Code add tasks while you work.

~/work — freetodolist
$ freetodolist login
Opening browser to log in…
Logged in as you@work.com
$ freetodolist overdue
3 overdue items
DUE DAYS LIST BODY
2026-05-02 7 Side proj Ship the auth fix
2026-05-04 5 Home Schedule dentist
2026-05-06 3 Work Reply to design review
$ freetodolist items create <list-uid> --body="Buy oat milk"
Created item 9f4c… 

Why a CLI?

Web UIs are great for browsing. But your todos live next to your code, your calendar, your email, your shell history. The terminal is where the rest of your tools already are.

Faster than a click

Add an item in 200 milliseconds without leaving the terminal. No tab switch, no page load, no mouse.

Pipes & jq

--json on every command. Pipe to grep, jq, awk, fzf — your existing toolbelt just works.

Cron, CI, scripts

Daily morning brief from cron. Auto-create a "Ship release" task from a GitHub Action. Bash glue you can write in five minutes.

Agent-native

AI agents already speak shell. Hand them freetodolist and they can manage your list as another tool.

The killer combo

AI agents already live in your shell.

Tools like Claude Code, Cursor, Aider, and Codex CLI are running in the same terminal as you. When you give them freetodolist, your todo list becomes a tool they can use — same as git or curl.

No MCP server to install. No plugin to configure. No glue code. Just a binary on $PATH and an OAuth login.

Prefer a deeper integration? FreeTodoList also speaks MCP natively for Claude Desktop, claude.ai, and ChatGPT Connectors.

claude code — your repo
you ›
add a task in my "Side projects" list to refactor the auth flow, due Friday
claude ›
I'll find the list and add it.
$ freetodolist lists list --json | jq '.lists[] | select(.name=="Side projects") | .uid'
"a3f1d2..."
$ freetodolist items create a3f1d2... \
    --body="Refactor auth flow" --due=2026-05-15T17:00:00Z
Created item 9f4c2e…
Done — added to Side projects, due Fri May 15.

Download

Single static binary — no runtime, no dependencies. Pick your platform.

All releases, checksums, and source builds: github.com/seanbehan/freetodolist-cli/releases. Prefer to build from source? git clone github.com/seanbehan/freetodolist-cli && cd freetodolist-cli && go build.

  1. 1

    Install

    $ tar -xzf freetodolist-*.tar.gz
    $ sudo mv freetodolist-*/freetodolist /usr/local/bin/
    # macOS only — lift Gatekeeper's quarantine
    $ sudo xattr -d com.apple.quarantine /usr/local/bin/freetodolist

    The xattr step is needed once on macOS because the binary isn't yet code-signed — without it, Gatekeeper blocks unsigned executables downloaded via the browser. Windows: unzip and put freetodolist.exe on your PATH.

  2. 2

    Log in

    $ freetodolist login
    Opening browser…
    Logged in as you@…
  3. 3

    Use it

    $ freetodolist lists list
    $ freetodolist overdue
    $ freetodolist items create <uid> --body="…"

Token resolution: --token flag > FREETODOLIST_TOKEN env > saved credentials at ~/.config/freetodolist/credentials.json.

Drop-in agent skill

Teach your AI agent the CLI in one file.

We publish a SKILL.md at a discoverable URL, indexed in our agent-skills catalog. Drop it into Claude Code's project skills directory, paste it into a system prompt, or let an agent fetch it on demand — your model now knows how to drive freetodolist idiomatically.

SKILL.md
---
name: freetodolist-cli
description: Drive a FreeTodoList
account from the terminal — list/create/
update todos, manage tabs, browse over‐
due/due-soon items.
---
# FreeTodoList CLI
A small Go binary, `freetodolist`, that
talks to the FreeTodoList JSON API…

Recipes

A few examples of the kind of thing the CLI makes easy.

Morning brief in your shell prompt

Show the day's overdue tasks every time you open a new terminal.

Capture from anywhere

Wrap it in a one-letter alias for friction-free capture.

alias t='freetodolist items create $INBOX_LIST --body'
$ t "Pick up dry cleaning"

Fuzzy-find & complete

Pipe items through fzf, mark the picked one done.

freetodolist items list $LIST --json \
  | jq -r '.items[] | "\(.uid) \(.body)"' \
  | fzf | awk '{print $1}' \
  | xargs -I {} freetodolist items update {} --complete=true

From CI to your todos

File a "Investigate flaky test" task whenever a CI job fails.

"CI failed on $GITHUB_SHA"

Auth in one paragraph

freetodolist login walks you through the same OAuth 2.1 + PKCE flow our MCP integration uses: it spawns a loopback server, opens your browser, and exchanges the resulting code for a Bearer token saved at ~/.config/freetodolist/credentials.json (mode 0600). The token also works as your API Bearer — the same one documented in the API reference. You can revoke it any time from your Profile page after logging in.

Want even tighter AI integration? Try the MCP server.

Home New List Templates Login