explaingit

jrnl-org/jrnl

7,233PythonAudience · writerComplexity · 1/5LicenseSetup · easy

TLDR

A command-line journaling tool that saves dated entries as plain text files, with built-in search, optional AES encryption, and natural-language date input like "yesterday" or "last monday".

Mindmap

mindmap
  root((jrnl))
    What it does
      CLI journaling tool
      Plain text storage
      Timestamped entries
    Features
      AES encryption
      Tag-based search
      Natural-language dates
      Editor integration
    Use Cases
      Daily journaling
      Private notes
      Searchable diary
    Platforms
      Mac via Homebrew
      Linux
      Windows
    Setup
      pip or Homebrew
      GPL-3.0 license
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Keep a daily journal from the terminal without opening a browser or app, with entries saved as searchable plain text.

USE CASE 2

Write private encrypted journal entries that require a password to open.

USE CASE 3

Search through months of past entries by date range, tag, or keyword from the command line.

Tech stack

PythonAES encryption

Getting it running

Difficulty · easy Time to first run · 5min
Use and modify freely, but any distributed versions must also be open-sourced under GPL-3.0.

In plain English

jrnl is a command-line journaling tool that stores your entries as plain text files. Instead of opening an app or a website, you type your entry directly in the terminal and it is saved with a timestamp automatically. You can write an entry in one line, or launch your preferred text editor for longer entries. Natural-language timestamps like "yesterday:" or "last monday:" are recognized, so you do not have to remember exact date formats. Journal files are stored in a format any text editor can open, which means your notes are not locked inside a proprietary database. For entries that need to stay private, jrnl supports optional encryption using AES, a widely trusted encryption standard. Encrypted journals require a password to open. Searching through past entries is built in. You can filter by date range, by tags (words starting with @ or # depending on your configuration), or search for specific text. This makes it practical for finding something you wrote months ago without scrolling through files manually. The tool is available on Mac via Homebrew, on Linux, and on Windows. It is written in Python and can also be installed via pip. The project is actively maintained and has a full documentation site at jrnl.sh. It is GPL-3.0 licensed.

Copy-paste prompts

Prompt 1
How do I create a new encrypted journal with jrnl and set a password to protect it?
Prompt 2
Show me how to search jrnl for all entries from last month that contain a specific tag.
Prompt 3
How do I configure jrnl to open my preferred text editor for writing longer journal entries?
Prompt 4
Write me a shell alias that lets me quickly add a timestamped thought to my jrnl journal from anywhere in the terminal.
Open on GitHub → Explain another repo

← jrnl-org on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.