Quick links



Latest stable release is 1.7.1. It was released 2020-04-05.

Memo is a note-taking and to-do software written in C. Memo runs on command line.


With Memo, it's possible to concentrate on the tasks in your to-do list instead of spending time managing those tasks. After a while taking notes and keeping a to-do list is part of your daily life instead of some nasty thing you must remember to do.

Memo is open source software under the GPL licence and is maintained by Niko Rosvall.

Memo runs on GNU/Linux, FreeBSD and other POSIX compatible operating systems. Memo also works on Cygwin and WSL. I've also heard that Memo runs on the Sailfish operating system.


Debian and Ubuntu have Memo in their repositories. To install type: sudo apt install memo

Source code is available on Github. If you want you can download the latest stable version.

If you find Memo useful, consider making a donation to support the development.

Building a binary is easy. Memo uses standard Makefile.If you have GCC (or some other modern C compiler) installed along with GNU Make you can simply type make in the folder where Memo source code is. This will create a binary called memo. To run it, type ./memo. To install it for system wide use type make install. This will copy the binary to /usr/local/bin/.

Memo compiles at least with GCC, clang and pcc compilers. Probably also any other C99 compatible C-compiler.

Building a native Windows binary is possible, but you will need MinGW installed and configured (you will need gcc and make installed), then, because Memo uses POSIX regular expressions, you will need pcre library too.


Send me an email or use Github issues.

Tips for using Memo


Often writing notes down is not enough, you will also need to remember to read them later on. Memo itself doesn't contain reminder functionality, because it can be accomplished in an easy manner using a script executed by cron.

Following example script can be used together with cron. For instance, you could make cron to execute the script once a day.


      today=`date +%Y-%m-%d`

      if [ -f $filename ]; then
      while read -r line
      date=`echo "$line" | cut -f3`
      if [ "$today" == "$date" ]; then
      echo "$line" | cut -f4 | mutt -s "Reminder from Memo"

      done < "$filename"

The script assumes that you have Mutt email client configured and working. The script parses ~/.memo file and sends content of notes to the specified email address if the date of the note matches current date.

Taking notes using email

It's possible to use Memo with Procmail to automatically create notes by email subject. See how.

Integration with Conky

Integrate Memo with Conky by adding following lines to your .conkyrc file:

      ${color grey}Notes: 
      ${color lightgrey}${exec memo -l10 | cut -f4}

Of course you may tweak those lines to get Memo fit better with your own Conky setup.

Tagging notes

Memo implements tagging in very general way. Tags can simply be a part of the content. See explaining Memo file format.

Multiple profiles

Since version 1.1 Memo supports setting path of the memo file using an environment variable MEMO_PATH.

Setting an environment variable allows Memo to have multiple profiles. For example in your $HOME/.bashrc:

      function memo_work()
      export MEMO_PATH="$HOME/memo_work"
      /usr/local/bin/memo "$@"

You could have memo_work, memo_home etc functions to have different notes for different situations. I heard this tip from Mikael Berthe. Thanks Mikael!

Copyright © Niko Rosvall 2014-2023