Feature-rich interactive CLI task manager with AI integration, calendar sync, and keyword automation
Project description
jot - AI-Powered CLI Project Management
A feature-rich, keyboard-driven task manager with AI integration, calendar sync, and intelligent automation for developers who live in the terminal.
Features
- Quick-add by default: Just start typing, press Enter to save
- Dual-mode interface: Quick-add mode ↔ Command mode (ESC to switch)
- Cross-project task routing:
jott myproject "task"from anywhere - Keyword automation: Tasks starting with
bullet:,gcal:,ai:,analyze:trigger actions - AI integration: Claude Code integration for task analysis (Shift+9) and execution (Shift+0)
- Google Calendar sync: Bidirectional sync (export tasks, import events)
- Text-to-speech: Read all tasks aloud with Shift+2
- Fuzzy search: Filter tasks quickly with
/ - Multi-select mode: Bulk operations with Shift+V
- Category system: Up to 12 categories per project
- Task metadata: Priority, status, day-of-week assignment, notes
- Backup system: Organized monthly backups
Installation
From PyPI (Recommended)
# Basic installation
pip install jott-cli
# With text-to-speech support
pip install jott-cli[tts]
# Verify installation
jott --version
From Source
git clone https://github.com/son1112/jot.git
cd jot
pip install -e .
Quick Start
# Launch jot in current directory
jott
# Add a task from command line
jott "Update documentation"
# Quick-add to specific project
jott myproject "Fix authentication bug"
Usage
Quick-Add Mode (Default)
Just type and press Enter:
> Update README documentation
✓ Added: Update README documentation
Keyboard Shortcuts
Task Management:
Shift+N- Edit task notesShift+D- Delete current taskShift+A- Toggle archived tasksShift+F- Toggle inline notes display
Scheduling:
Shift+W- Assign day of weekShift+P- Set priorityShift+X- Set status
AI Integration:
Shift+9- Analyze task with Claude Code (plan mode)Shift+0- Execute analysis planShift+J- Mark as agent task
Integrations:
Shift+2- Read tasks aloud (TTS)Shift+3- Re-authenticate Google CalendarShift+G- Export to Google CalendarShift+I- Import from Google CalendarShift+B- Start priority timer (12-minute focus session)
Navigation:
↑/↓orCtrl+N/P- Navigate tasksShift+↑/↓- Reorder tasks/- Fuzzy search modeShift+V- Multi-select modeESC- Switch to command mode
Keyword Automation
Tasks starting with keywords trigger automatic actions:
bullet: Deep work session→ Starts bullet timergcal: Team standup→ Exports to Google Calendarai: Refactor authentication→ Marks for AI assistanceanalyze: Complex feature→ Triggers Claude Code analysis
Categories
Organize tasks with categories (up to 12 per project):
# Switch to category
Shift+C
# Create category-specific tasks
jott --category=bugs "Fix login redirect"
Cross-Project Routing
Register projects for quick access:
# Auto-discover projects in ~/projects/
Shift+R
# Route task to different project
jott myproject "task text"
Configuration
Task Storage
- Local:
.jot.json(current directory) - Categories:
.jot-categories/{category}.json - Global categories:
~/.jot-categories/ - ID manager:
.jot.ids.json
Google Calendar Setup
- Enable Google Calendar API
- Download credentials
- Save as
~/.jot/gcal-accounts/default/credentials.json - Use
Shift+Gto export tasks
Re-authentication:
- Press
Shift+3to force re-authentication (if token expires or switching accounts) - Or manually:
rm ~/.jot/gcal-accounts/default/token.json
Text-to-Speech Configuration
Edit .jot.config.json:
{
"tts": {
"enabled": true,
"rate": 150,
"volume": 0.9,
"voice": null
}
}
Claude Code Integration
MCP Server
Jot includes an MCP (Model Context Protocol) server for Claude Code integration:
{
"mcpServers": {
"jot": {
"command": "python",
"args": ["/path/to/jot/mcp_server.py"],
"env": {
"JOT_PROJECT_DIR": "/your/workspace"
}
}
}
}
Slash Commands
Available slash commands for Claude Code:
/jot- Show current tasks/jot-add- Add task to current project/jot-done- Mark task as done/jot-current- Set/show current task/jot-to- Add task to specific project
Development
Running Tests
# Run all tests
make test
# Run with coverage
pytest test_jot.py --cov=jot --cov-report=term-missing
# Run linting
make lint
Test Coverage
- 108 tests (all passing)
- 15.83% coverage
- Zero linting errors
Security
Jot has undergone comprehensive security hardening:
- ✅ Command injection vulnerability fixed (EDITOR handling)
- ✅ Path traversal validation (category/project names)
- ✅ OAuth token permissions (0o600)
- ✅ Keyword length validation (DoS prevention)
- ✅ AppleScript quote escaping (notification system)
See SECURITY.md for full details.
Contributing
Contributions welcome! See CONTRIBUTING.md.
Development Setup
git clone https://github.com/son1112/jot.git
cd jot
pip install -e ".[dev]"
make format # Format code
make lint # Check linting
make test # Run tests
License
MIT License - see LICENSE
Links
- GitHub: https://github.com/son1112/jot
- PyPI: https://pypi.org/project/jott-cli/
- Issues: https://github.com/son1112/jot/issues
- Changelog: https://github.com/son1112/jot/blob/main/CHANGELOG.md
Author
Scott Anderson (sonander@gmail.com)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jott_cli-0.2.2.tar.gz.
File metadata
- Download URL: jott_cli-0.2.2.tar.gz
- Upload date:
- Size: 72.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b54e0d92e2704c0d9448e2fda4984b6fa1b21d02e33dda5d45c119f688e530e
|
|
| MD5 |
dd53f3486e6f4af77d14c6e1430c98aa
|
|
| BLAKE2b-256 |
b520067dba4049bab8f5515a9375fea39b0f0f84108d48a253d628ec264315db
|
File details
Details for the file jott_cli-0.2.2-py3-none-any.whl.
File metadata
- Download URL: jott_cli-0.2.2-py3-none-any.whl
- Upload date:
- Size: 70.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc645aacd4f77f2931730a66120cf3b825280d9d41223303dc5cd62bbb18afa3
|
|
| MD5 |
182afe9be5e27d9e75a6fe3cbf751afb
|
|
| BLAKE2b-256 |
91a6646c65b99b3d95e1082406ee944a94ccfbb366a89f114d4b9bd17aec7e9a
|