Gnosis (γνῶσις), pronounced “noh-sis”, meaning knowledge in Greek, is a Spaced Repetition System (SRS) for note taking and self testing.

gnosis is still in active development, if you encounter any bugs feel free to send me an email



Gnosis is a spaced repetition note taking and self testing system, where notes are taken in a Question/Answer/Explanation format & reviewed in spaced intervals.

Gnosis can help you better understand and retain the material by encouraging active engagement. It also provides a clear structure for your notes & review sessions.


Adding a cloze note

gnosis add cloze note pdf-tools & gnosis

MCQ note type review

gnosis mcq note type

Cloze note type review

fill-in-the-blank sentences gnosis cloze note type

Gnosis post review

gnosis post review Screenshot after a wrong answer is given, which is highlighted in red & magenta (purple-like) for the correct one. An explanation is displayed & the date for the next review formatted in YYYY/mm/dd.

Gnosis dashboard

gnosis dashboard

Gnosis edit buffer

gnosis edit buffer Gnosis notes are edited using emacs lisp :)


Gnosis is available via MELPA

Example using use-package

(use-package gnosis
    :ensure t
    :init (define-prefix-command 'my/gnosis-map)
    (setf gnosis-vc-auto-push t)
    :bind (("C-c g" . my/gnosis-map)
  	       :map my/gnosis-map
	       ("r" . 'gnosis-review)
	       ("a" . 'gnosis-add-note)
	       ("C-d" . 'gnosis-dashboard)
	       ("d" . 'gnosis-add-deck)))

Note types

Gnosis includes the following note types:

  • MCQ: Multiple Choice Questions
  • Cloze: fill-in-the-blank sentences
  • Basic: Question-Answer-Explanation
  • Double: Creates 2 basic notes, second one is generated with the question & answer switched
  • y-or-n: Question with y/n answer (yes or no)

Editing notes

Currently there are 2 ways for editing notes:

  • You can edit a note after review by pressing e
  • Open gnosis-dashboard with M-x gnosis-dashboard, find the note you want to edit and press e

Sync between devices

Gnosis uses git to maintain data integrity and can be used facilitate synchronization of it’s database across devices.

You can set a git remote manually:

cd ~/.emacs.d/gnosis # default location for gnosis
git init # After completing your first review session, a git repo should have been initialized automatically.
git remote add origin <remote_url>
git push --set-upstream origin master

You can interactively use gnosis-vc-push & gnosis-vc-pull. As the name suggests, they rely on vc to work properly.

Depending on your setup, vc might require an external package for the ssh passphrase dialog, such as x11-ssh-askpass.

To automatically push changes after a review session, add this to your configuration:

(setf gnosis-vc-auto-push t)
(gnosis-vc-pull) ;; Run vc-pull for gnosis on startup