journalot

June 22, 2026 · View on GitHub

License: MIT Bash Version GitHub stars

journalot demo

Minimal journaling CLI for developers. Just type journal in your terminal and start writing.

Website: journalot.dev

Why journalot?

Every journaling app has the same problem: friction. Open app → wait for sync → click new entry → choose template...

journalot eliminates all of that:

  • You're already in terminal → just type journal
  • Opens in your preferred editor → no learning curve
  • Auto-commits to git → no manual syncing
  • Just markdown files → complete ownership

The best productivity tool is the one you actually use.

Installation

brew tap jtaylortech/journalot
brew install journalot

Manual

git clone git@github.com:jtaylortech/journalot.git
cd journalot
sudo ./install.sh

Optional: Install fzf for interactive fuzzy-search in --list.

Usage

# — Everyday —
journal                              # Open today's journal
journal "Had a breakthrough today"   # Quick capture (no editor)
journal --yesterday                  # Open yesterday's entry
journal --last                       # Open most recent entry
journal --date "last friday"         # Natural language dates ("3 days ago", "last monday")

# — Browse & Search —
journal --list                       # List entries (fzf interactive if installed)
journal --list --oldest-first        # Oldest first
journal --calendar                   # Monthly calendar with entry indicators
journal --calendar 2026-01           # Specific month
journal --search "confidence"        # Full-text search with context and highlighting
journal --week                       # Open all entries from this week
journal --tag work                   # Filter entries by #tag
journal --random                     # Show a random past entry

# — Stats & History —
journal --stats                      # Statistics + current/longest streak
journal --diff 2025-01-15            # Git history for an entry
journal --prompt                     # Today's writing prompt

# — Export & Backup —
journal --export html                # Export to HTML
journal --export pdf                 # Export to PDF (requires pandoc)
journal --backup                     # Create timestamped backup
journal --restore                    # Restore from backup (interactive)
journal --archive 2024               # Archive all 2024 entries

Multiple Journals

journal --switch work                # Switch to (or create) 'work' journal
journal --switch kids --shared       # Switch to 'kids' and mark as shared
journal --switch default             # Return to default journal
journal --list-journals              # List all journals
journal --new-journal work           # Explicitly create a named journal

Each journal lives at ~/journalot/journals/NAME/ with its own entries/ and git repo. Your default journal at ~/journalot/ is unchanged. Disable with MULTI_JOURNAL=false.

Shared Journals

For two people writing to the same journal, synced via a private git repo:

# Person 1
journal --switch kids --shared
cd ~/journalot/journals/kids
git remote add origin git@github.com:you/kids-journal-private.git
git push -u origin main

# Person 2
mkdir -p ~/journalot/journals
git clone git@github.com:you/kids-journal-private.git ~/journalot/journals/kids
journal --switch kids --shared

Shared journals auto-pull on open, warn before conflicts, auto-commit and push on save, and include a conflict resolution helper if push fails.

Git Sync (Private Journal)

cd ~/journalot
git init
git remote add origin git@github.com:<your-username>/my-private-journal.git
git push -u origin main

SSH setup guide

Configuration

~/.config/journalot/config:

AUTOSYNC=true          # Skip commit/push prompts
DISABLE_PROMPTS=true   # Disable daily writing prompts
GIT_BRANCH=master      # Custom git branch (default: main)
MULTI_JOURNAL=false    # Disable multi-journal support
# JOURNAL_DIR="$HOME/my-journal"  # Custom journal directory

Custom entry template: ~/journalot/template.md (supports {{date}}, {{day_of_week}}, {{week_number}}, {{time}} placeholders)

Custom prompts: ~/journalot/prompts.md (one per line) or day-specific files like ~/journalot/prompts-monday.md


Support journalot

💖 Sponsor on GitHub | Learn more

Current Sponsors

Thank you to all sponsors! Your support makes journalot possible.


License

MIT — see LICENSE