Jotit - simple note taking
A command-line tool to quickly take notes, then use AI for search, and summaries.
Overview
One of the problems with taking notes is always having to think about the file you're creating, where you're going to put it, what to name it, folder structures, etc. All these things get in the way of taking quick notes.
So I thought can AI help eliminate this friction?
Goals
- Quick Note Capture: Add notes instantly from the command line
- Semantic Search: Find notes using natural language, not just keywords
- AI Summarization: Get intelligent summaries of your notes over time
- Background Processing: Embeddings and AI features used when needed
- SQLite-based: Reliable local storage with vector search capabilities
Installation
Not on Pypi yet, so: python -m pip install git+https://github.com/mkaz/jotit
- Requires Python 3.10 or higher
Install for Development
git clone https://github.com/mkaz/jotit.git cd jotit uv pip install .
Usage
Set up your API key (optional)
For AI-powered search and summaries, set your Anthropic API key:
export ANTHROPIC_API_KEY="your-api-key-here"
Add notes
# Simple note jotit "Had a great idea about improving user onboarding" # With a tag jotit "Met with the design team about the new homepage" --tag "meeting" # From stdin git log --since 2025-10-31 | jotit
List notes
# List notes by recency jotit list # List notes from a specific date jotit list --date 2024-01-15 jotit list --after 2024-01-01 jotit list --before 2024-12-31 # List notes by tag jotit list --tag "work" # Show all available tags jotit tags
Search your notes
Requires AI API key set.
# Semantic search - finds related concepts even if exact words don't match jotit search "design discussions" # Semantic search scoped to a tag jotit search "roadmap updates" --tag "product"
Summarize Notes
Requires AI API key set.
# Get a summary of recent notes (defaults to last 5 days) jotit summary jotit summary [week|month] jotit summary --days 30 # Last 30 days jotit summary --after 2024-01-01 # Since specific date jotit summary --before 2024-02-01 # Up to but not including Feb 1
Background Processes
To enable fast note creation, the embeddings are moved to background jobs which can be called manually using worker or will be called when a task requires it, such as search or summary.
jotit worker # Process all pending jobs jotit worker --batch-size 10 # Limit number of jobs processed
Note Management
jotit edit 123 # Edit note 123 jotit delete 456 # Delete note 456 jotit import /path/to/notes/ # Bulk import notes from directory
Database Management
# Show database statistics
jotit statsConfiguration
Jotit can be configured via environment variables or a TOML configuration file located at ~/.config/jotit/jotit.toml. See jotit-sample.toml for a complete example with all available options.
Environment Variables
ANTHROPIC_API_KEY- Required for AI-powered summariesJOTIT_DB- Database file location (default:./jotit.db)
Configuration File
Create ~/.config/jotit/jotit.toml to customize default behavior:
[database] # Default database path - uses ~/.config/jotit/jotit.db if not overridden by JOTIT_DB env var path = "~/.config/jotit/jotit.db" [ai] # Default AI model for summarization and question answering model = "claude-sonnet-4-5-20250929" [embedding] # Embedding model for semantic search model = "all-MiniLM-L6-v2" [search] # Default similarity threshold for search results (0.0-1.0) # Higher values return only more relevant results, lower values are more inclusive # Set to 0.0 to disable threshold filtering threshold = 0.40 # Enable hybrid search by default # Hybrid search boosts results that contain exact keyword matches from your query # This improves precision when searching for specific terms or phrases hybrid = true
Development
Setup Development Environment
git clone https://github.com/mkaz/jotit.git cd jotit # Create virtual environment python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install in development mode just install-dev
Development Commands
Jotit uses just for task automation:
just install # Install package just install-dev # Install in editable mode for development just test # Run test suite just lint # Check code with ruff linter just lint-fix # Auto-fix linting issues just format # Format code with ruff just type-check # Run type checking with mypy just check # Run all quality checks just clean # Remove build artifacts
Running Tests
# Run all tests just test # Run specific test file pytest tests/test_db.py # Run with coverage pytest --cov=jotit --cov-report=html
License
MIT License - see LICENSE file for details.
Author
Created by Marcus Kazmierczak
Jotit - jot it down, find it later