8ca921715e757173243e8e74b19c97a40e6e4626
JRNL
A CLI tool for developers to automatically track work for daily standups using LLM-powered summaries.
Features
- Automatic Git Logging: Captures commits via global git hooks
- LLM-Powered Summarization: Compresses commit info into concise standup messages
- Multiple LLM Providers: Support for Anthropic Claude and Ollama
- Manual Logging: Add work items manually
- Daily Standup Generation: Generate formatted standup messages from your work logs
- Per-Repository Control: Opt-out specific repositories from tracking
Installation
./install.sh
This will:
- Create a Python virtual environment at
~/.jrnl/venv - Install dependencies
- Initialize the SQLite database
- Create default configuration
- Optionally install global git hooks
- Install the
jrnlCLI command to~/.local/bin
Configuration
After installation, configure your LLM provider:
# For Anthropic Claude
jrnl config set anthropic api_key YOUR_API_KEY
# Or for Ollama (local)
jrnl config set-provider ollama
Configuration file: ~/.jrnl/config.json
Usage
Manual Logging
jrnl new -m "Had meeting with customer about the service"
View Logs
# View recent logs
jrnl logs
# View logs from last N days
jrnl logs --days 3
Generate Daily Standup
# Generate standup from logs since last daily
jrnl daily
# Generate standup covering multiple days
jrnl daily --days 2
# Regenerate today's standup
jrnl daily --regenerate
# Delete a daily entry
jrnl daily --delete 2024-12-12
jrnl daily --delete today
jrnl daily --delete latest
Configuration Management
# Show current configuration
jrnl config
# Switch LLM provider
jrnl config set-provider ollama
# Set provider-specific settings
jrnl config set anthropic model claude-3-5-sonnet-20241022
jrnl config set anthropic max_tokens_daily 1000
Repository Exclusion
# Exclude current repository from tracking
jrnl config exclude-current
# Exclude specific repository
jrnl config exclude /path/to/repo
# Re-enable repository
jrnl config include /path/to/repo
How It Works
- Git Hooks: When you make a commit, the post-commit hook captures the commit message and diff
- LLM Compression: The commit info is processed through your chosen LLM to create a concise summary
- Database Storage: Logs are stored in SQLite at
~/.jrnl/jrnl.db - Daily Generation: When you run
jrnl daily, all logs since your last daily are sent to the LLM to generate a formatted standup message
Project Structure
~/.jrnl/ # Application directory
├── config.json # Configuration
├── jrnl.db # SQLite database
├── venv/ # Python virtual environment
└── logs/ # Application logs
Uninstallation
./uninstall.sh
Or from anywhere:
jrnl uninstall
Requirements
- Python 3.8+
- Git
- Anthropic API key (for Claude) or Ollama installation (for local models)
License
GPL 2.0
Development
The project follows a modular structure:
jrnl/commands/- CLI command implementationsjrnl/database/- Database layer with SQLitejrnl/llm_providers/- LLM provider abstractionsjrnl/git_integration/- Git hook and commit processingjrnl/utils/- Utility functions
To run from source:
python3 -m jrnl --help
Description
Languages
Python
87%
Shell
13%