Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

Powerful TUI for todo.txt.



otodo is written in PHP (yes, in PHP!). So you need PHP interpreter. I'm using PHP 7.2, but it should work on 7.0+. mbstring is the only required dependency.

apt install php-mbstring

It should work on almost any Unix-like system, tested on Ubuntu.


There isn't any releases, I consider master branch at Github as stable.

Just make a copy of repository:

git clone


Just type


It uses default config file placed in same directory as otodo. If you want another config file just put filename as argument.


Whole configuration is in config.ini, there isn't any GUI for editing it. Just open your favorite editor.


Project is divided into few parts:

  • Config: class for configuration loading
  • Exception: all exception classes
  • Gui: TUI implementation
  • ReadLine: own Readline-like implemenation
  • Recurrent: class for recurrent tasks parsing and handling
  • Todo: class for parsing and generating one todo.txt line
  • Todos: class for parsing and generating whole todo.txt file
  • TodoEx: extended Todo class with due date and recurrent support
  • TodosEx: extended Todos class using TodoEx
  • tests: PHPUnit test

All pull requests are welcome.


Why is it written in PHP?

Because I speak PHP and it doesn't matter.

Is it possible to translate it to my language?

Not now but patches for localization are welcome.

Can I change todo.txt file when otodo is running?

Yes, otodo detect changes on filesystem and it's usable on multiple computers synced with Dropbox, etc. Just tune gui.reload_timeout option for pooling timer.

You can’t perform that action at this time.