HyperList is a free, open-source, cross-platform program for managing hierarchical to-do lists. I use it both for keeping track of what I need to do in my job, and for my personal projects. HyperList is inspired by Treeline, but is designed to be used entirely with keyboard input and to handle only basic lists (Treeline is a much more generic application, but many actions require the use of the mouse).
With HyperList, you manage a collection of named to-do lists. Possible list topics might include projects to work on, people you need to write to, birthdays you should remember, productive things to do instead of playing computer games, etc. Each list is structured as a tree (see screenshot); that is, each task can have several sub-tasks underneath it. Tasks can be checked off, crossed out, or marked as high priority. Each task can also have a date associated with it.
When running HyperList, you can view detailed help documentation and a list of all possible commands by typing Control+H. To get some idea of what HyperList is capable of, look at the command list. Some features include: