todo.freedom - free as in freedom todo model

What’s the problem with current Todo.

Yet another TODO software or service?

Why am I looking at age old matured solution.

OpenClaw made me rethink how I interact with my data.

For those unfamiliar (don’t tell me?) — Openclaw is a local agent. You run it on your machine. It can take actions on your behalf. Read files, write files, call APIs, automate workflows. The promise of agentic AI, but running locally, under your control.

Once you start thinking in agents, you start noticing all the places your data is trapped.

My todos are one of them.

Now you are left to deal with integration fatigue, look for APIs, generate tokens, make sure you do not get throttled.


The Problem With Every TODO App

There are many ways to handle a todo list. Reminders, Notes, OneNote, Google Tasks, Gmail, Todoist, and many many more.

Handling todos is one of those universal problems. We’ve been solving it forever. And we have all sorts of solutions.

The simplest? A text file. List down your tasks. Done.

But in the modern world, we need our todos at the flick of a finger — irrespective of platform. Phone, laptop, tablet. This is what apps like Reminders, Todoist solve. Sync everywhere.

So what’s the problem?

The problem is the lock-in.

Your todos live inside their database. Or in their cloud. You interact with them through their UI. Their app. Their API. Their subscription.

Want to access your todos from a Telegram bot? Build an integration.

Want an agent to check your tasks? Hope there’s an API.

Want to switch apps? Export, pray the format transfers, re-import, lose metadata.

Your data. Their jail.


What Agents Made Me Realize

With local agents like OpenClaw — and the agentic future that’s coming — I want to interact with my todos as a basic action.

A primitive.

Not through a special UI. Not through a proprietary API. Just… files.

Let me interact via a text file I can open in any editor.

Let me interact via agents — through Telegram, WhatsApp, CLI, whatever I’m using.

Let the file live in my cloud storage — Google Drive, iCloud, Dropbox. Setup local sync and use what works for you.

I own the data. I control the format. The agents just read and write text.

No dependency on anything.


The Existing Plain-Text Formats

This isn’t a new idea. I explored what’s already out there:

Fantastic concept. Plain text. Human readable. Version controllable. Sync via any file service.

I tried todo.txt for a few days. Then slowly hit the fatigue.

The problem? Those systems have a very rigid structure. They provide flexibility of metadata — priorities, projects, contexts, due dates — all in a specific syntax with specific rules.

But 90% of my tasks don’t need much metadata.

I’d find myself fighting the format instead of just writing down what I need to do.


What I Actually Need

I sat with this for a while.

  • What metadata do I consistently maintain over years? Not what sounds useful.
  • What actually survives?

Required

  1. State — done or not done
  2. Priority — something eye-catching so urgent things stand out

Optional

  1. Date — human-interpretable, however I want to read it
  2. Context — what is this actually about
  3. Tags — optionally, if I want to filter later

That’s it.

That’s the metadata that survives. Everything else decays.

You start with elaborate systems — projects, contexts, energy levels, time estimates.

Within weeks, you stop maintaining them.

The cruft falls away.

So why build systems for the cruft?


The Requirements

So here’s what I want:

Human editable — I can open the file in Notepad, vim, Apple Notes, whatever. Read it. Edit it. No special tooling required.

Agent parseable — A bot can read the file, understand the structure, add tasks, mark things complete. Simple enough that an LLM can handle it without elaborate parsing logic.

Platform agnostic — The file lives wherever I want. iCloud, Google Drive, Dropbox, a git repo. Any sync mechanism works.

No lock-in — No proprietary format. No API. Just a text file with a simple convention.

Minimal structure — Only the metadata humans actually maintain. State, priority, date, description, optional tags. Nothing more.


Here’s the rewrite:


todo.freedom format

All we need is this: Write a todo item.

Everything else is optional.

  • Date
  • Tag for search
  • More context
  • Priority

That’s it.

My requirements:

  1. TODOs available everywhere. No API access. No logins. No single-sign-ons.
  2. Edit my todo.txt in plain text — on mobile, on desktop, anywhere.
  3. My agent should understand it without special parsing logic.
  4. No tooling restrictions. No Todoist. No app lock-in.

Here’s the thing about mobile. When humans type on a phone, friction kills you. Switching keyboard layouts. Tapping through menus. Hitting the (i) icon to add metadata. Every extra tap is a reason to not capture the thought.

Simple. Low friction. Fewer keys to mark. Fewer taps to add metadata.

That needs a thoughtful structure.

After some brainstorming, this is what I settled on:

? 2024-02-15 Call the accountant about Q4 taxes #finance
! 2024-02-10 Submit expense report
x Buy groceries

That’s it. Just text.

Want to mark state? Add ? for open, x for done.

? 2024-02-15 Call the accountant about Q4 taxes #finance
x 2024-02-10 Submit expense report
? Buy groceries

Want priority? Add ! — more exclamation marks, higher urgency.

Want tags use #. Or you the same # to define a section if you prefer

? 2024-02-15 Call the accountant about Q4 taxes #finance
Send the 1099, property tax document
Bank statements

Investments document

x 2024-02-10 Submit expense report
For the cupertino travel

? Buy groceries
Milk
Eggs
Bread

! Pay rent 02/01/2026

Date is optional. Tags are optional. Context is whatever you write.

You can read it. You can edit it in any text editor. An agent can parse it in seconds.

The file syncs via whatever cloud storage you already use. iCloud, Google Drive, Dropbox — doesn’t matter. No new account. No new subscription. No new app to learn.

Your data stays yours.


Tightened the flow, added progressive examples showing the format building up, and kept your voice. Want me to add a summary table of the syntax or leave it minimal?


Why This Matters

This isn’t really about todos. It’s about a principle.

The agentic future means our tools need to be composable. Your calendar, your notes, your todos, your files — agents will interact with all of them. If your data is locked behind proprietary APIs and formats, you’re dependent on those companies to build integrations.

Plain text is the universal interface. Every agent can read it. Every editor can open it. Every sync service can move it.

It’s not fancy. It’s not feature-rich. It’s resilient.

When the tool you use today shuts down — and it will, eventually — your text files will still be there. Readable. Usable. Yours.

todo.freedom Specification

Goal: Any human/machine can read,write,update,delete in most simplest form and understand TODOs without API or special tools

File type: .txt

Encoding: UTF-8

One file contains tasks and project headers.

Open, Close task

? - open
! - priority
x - done

Additional metadata symbol

# - tag or section

Task States (column 0 only)

Each task must begin with exactly one of:

  • ? Open task
  • ! Priority task
  • x Completed task

Rules:

  • Prefix must be at column 0.
  • Prefix must be followed by a single space.
  • Only these prefixes create a new task.
  • Everything until the next project header or task prefix belongs to the current task (context).

Example:

? Review contract 2026-03-01
! File annual report 2026-04-15
x Renew domain 2025-02-16

Multiline Context (Optional)

  • No indentation required.
  • Context may contain any text.
  • Context ends when a new project header (# ) or task prefix (? , ! , x ) appears at column 0.

If a context line must begin with # , ? , ! , or x , prefix it with <space>

Example:

? Write email to school
 #About the test Wiley submmited
 xmas is coming
 !Also email his teacher

Date (Optional)

Each task may contain zero or one date: MM/DD/YYYY (US) or YYYY-MM-DD (ISO)

Rules:

  • Date represents the primary time anchor for the task.
  • Interpretation depends on state:
    • Open + future date → upcoming
    • Open + past date → overdue
    • Completed + date → completion date
  • Always use ISO format for correct lexical sorting.
  • Recommended placement: end of the first line.

Example:

? File taxes 2026-04-15
x Renew domain 02/01/2026

Tags (Optional)

Tags are tokens in the form: #tag

Rules:

  • Tags may appear anywhere inside a task block.
  • Tags must not start at column 0.
  • Tags contain no spaces.

Example:

? File taxes #finance #annual 2026-04-15

Project Sections (optional)

A project section is defined by: # Project Name

Rules:

  • Must start at column 0.
  • Must be followed by a single space.
  • All tasks below belong to that project until the next # header.
  • Flat structure only (no nesting).

Example:

# Summer Trip 2026

? pack clothes
! book flights
? book hotels 

# 2026 Plan
? Finish todo.freedom
? open source todo.freedom

Structural Constraints

  • Only these column-0 prefixes are meaningful:
    • #
    • ?
    • !
    • x
  • Everything else is context.
  • No indentation required.
  • No nested hierarchy.
  • One project level only.

CLI Filtering Examples

  • Open tasks: grep '^[?!] ' todo.txt
  • Priority tasks: grep '^! ' todo.txt
  • Completed tasks: grep '^x ' archive-2026.txt
  • By project: awk '/^# Legal/{flag=1;next}/^# /{flag=0}flag' todo.txt
  • By tag: grep '#finance' todo.txt
Full spec example
# TODO

? Review contract 2026-03-01
! File annual report 2026-04-15
x Renew domain 2025-02-16


? File taxes #finance #annual 2026-04-15
x Renew domain 02/01/2026

? This todo has context starting with reserved prefix. This is offset with <space>
 #About the test Wiley submmited
 xmas is coming
 !Also email his teacher


# Summer Trip 2026

? pack clothes
! book flights
? book hotels 

# 2026 Plan
? Finish todo.freedom
? open source todo.freedom