eden
eden is a command line tool for creating and manipulating daily log notes. It started life as a series of different bash script that did various tasks, but have been brought together as one tool.
Enjoy using this awesome tool!
Functionality
Adding an entry to the journal
A journal is a database, or registry, of entries. An entry is like a line in a daily journal, that is date/time-stamped to the moment of creation. In its most basic form, an entry is just a line of text. Associated with the timestamp, that in itself could be considered useful. You can record what you are doing at any time of the day (when you are in the terminal, anyway), and then output a list of each entry for a particular day. That is the basic functionality we are going to go for first. Things like tags and stuff come later.
To add a new entry to the journal:
eden add "ENTRY"
The program will confirm that the entry was saved and that's it.
Deleting entries
Delete a single journal entry by ID:
eden delete ID
Delete an entire journal and all its entries:
eden journal delete NAME
Use --confirm to skip the confirmation prompt, or --dry-run to see what would be deleted without making changes.
Exporting and importing journals
Export a journal to a compressed archive (.tgz):
eden journal export NAME
Options:
-o, --output PATH: Specify output file path (default: NAME-YYYY-MM-DD.tgz)
-e, --encrypt: Encrypt the archive with GPG (will prompt for passphrase)
-p, --passphrase PASS: Provide passphrase for encryption
Encrypting individual entries
Use --encrypt when adding or editing entries to store them encrypted with GPG symmetric encryption:
eden add "ENTRY" --encrypt
You will be prompted for a passphrase when encrypting and decrypting entries. For legacy entries encrypted with a GPG key, leave the passphrase blank when prompted to use your keyring.
--keep-db: Keep journal in database after export (default: removes it)
--dry-run: Show export plan without executing
Import a journal from an archive:
eden journal import ARCHIVE
Options:
-j, --journal NAME: Specify journal name to create (default: from archive)
-p, --passphrase PASS: Provide passphrase for decryption (if encrypted)
--dry-run: Show import plan without executing
Archives are stored as tar.gz files containing one markdown file per day. Encrypted archives use GPG symmetric encryption. When importing a journal with a name that already exists, a unique name will be generated by appending -N (e.g., journal-1, journal-2).
Exporting entries by journal, search query, or date range
Export all entries from a specific journal:
eden export --journal NAME
Export entries matching a search query:
eden export "SEARCH_QUERY"
Options:
-f, --format FORMAT: Export format (markdown or text, default: markdown)
-o, --output PATH: Output file path (writes to stdout if not specified)
-j, --journal NAME: Filter by journal name (exports all entries if no query or date range specified)
Date range exports
Export all entries within a date range (entries are grouped by date in the output):
eden export --start START_DATE --end END_DATE
Date formats supported:
- Specific day:
eden export --start 2025-12-10 --end 2025-12-12
- Full month:
eden export --start 2025-12 --end 2025-12
- Full year:
eden export --start 2025 --end 2025
You can combine date range with a search query to filter entries:
eden export "meeting notes" --start 2025-12 --end 2025-12 --journal work
Options for date range exports:
-s, --start DATE: Start date (YYYY, YYYY-MM, or YYYY-MM-DD)
-e, --end DATE: End date (YYYY, YYYY-MM, or YYYY-MM-DD)
Examples:
# Export all entries from a specific journal
eden export --journal tech-tips --output tech-tips.md
# Export all entries for December 2025 to a file
eden export --start 2025-12 --end 2025-12 --output december-2025.md
# Export all entries for 2025
eden export --start 2025 --end 2025 --output 2025-journal.md
# Export entries matching "meeting" in December 2025
eden export meeting --start 2025-12 --end 2025-12
# Export entries from a specific journal for a date range
eden export --start 2025-12-01 --end 2025-12-31 --journal work
Exporting search results directly
Export search results to markdown or text format without using the export command:
eden search "QUERY" --export
Options:
-e, --export: Export to stdout in markdown format
-o, --output PATH: Export to file (automatically enables export mode)
--export-format FORMAT: Export format (markdown or text, default: markdown)
Examples:
# Export search results to stdout
eden search "meeting" --export
# Export search results to a file
eden search "project" --output notes.md
# Export in text format
eden search "standup" --export --export-format text
# Combine with date filters
eden search "standup" --since 2025-12 --until 2025-12 --output december-standups.md
Exporting entries by tag
Export all entries with a specific tag:
eden tag show TAG --export
Examples:
# Export all entries tagged "work" to stdout
eden tag show work --export
# Export to file in text format
eden tag show important --output important.txt --export-format text