DevTodo the Second
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



DevTodo2 is a command-line task management utility. Tasks are hierarchically organised, have priorities, and track creation and completion time.

Task lists are stored in the current directory as the file .todo2.

For much more complete information please refer to the man page (todo2(1)).


DevTodo2 is written in Go. To install, you will need Go 1 or a release candidate.

Once you have Go installed and your GOPATH set, do the following:

$ go get
$ git clone git://
$ cd devtodo2
$ make
$ [sudo] make install

This will install to /usr/local by default, but that can be overridden by passing prefix=<dir> to make. The installation directories can be further customized by setting bindir=<dir>, mandir=<dir> and man1dir=<dir> which default to $(prefix)/bin, $(prefix)/share/man and $(mandir)/man1, respectively.

NOTE: You can also install with:

$ go get

But the binary will be named devtodo2 and the man page will not be installed.


If you want to uninstall, do the following:

$ cd devtodo2
$ [sudo] make uninstall


Task Command
Add a new task todo2 -a Shopping list
Add a new sub-task below task 1 todo2 -ag 1 Buy soap
Add a new sub-task below subtask 1.1 todo2 -ag 1.1 Go to store
Remove a sub-task below subtask 1 todo2 --remove 1.1
List outstanding tasks todo2
List all tasks todo2 -A


Yes, this is version 2. Version 1 was written in C++ in 2004, and has been due for a rewrite for a very long time.

Differences between version 1 and 2

New features:

  • Task lists are now stored as JSON.
  • Everything is a lot faster.
  • Much less code.

Not currently supported:

  • Readline-based editing of task text and priority.
  • Filters. Completed tasks are hidden by default, but may be displayed with -A.
  • Linked files.
  • ~/.todorc configuration file.
  • Colour customisation.
  • Custom task formatting.

How do I import my version 1 task lists?

DevTodo2 will load your old .todo files automatically. If you modify the task list with DevTodo2 it will transparently migrate the file to .todo2 in the new format.

You can specify the version 1 filename to load with --legacy-file=<filename>, and the version 2 filename with --file=<filename>.