CLI for Productive.io time tracking with calendar sync, team hours review, and local LLM support
Project description
๐ฆ TimeLlama
CLI for Productive.io time tracking with calendar sync, team hours review, and local LLM support.
TimeLlama helps you manage time tracking in Productive.ioโsync calendar events to time entries, review team hours for invoicing, and get AI-powered work summaries. Uses a local LLM (Ollama) so all your data stays on your machine.
Features
- Calendar Sync: Automatically create/update Productive time entries from your calendar
- Team Hours Review: Check employee hours for billing periods with AI-generated summaries
- Invoice Approval: Interactive workflow to review and approve team hours
- Interactive Chat: REPL mode for managing time entries with LLM suggestions
- Cron-Ready: One-shot sync command for automation
- Local LLM: Uses Ollama for formattingโall data stays on your machine
Installation
Prerequisites
-
Ollama (for LLM features):
# macOS brew install ollama # Start Ollama server ollama serve # Pull the model ollama pull llama3.2:3b
-
Productive.io API access with your API token
-
Calendar ICS file (exported from Google Calendar, Outlook, etc.)
Install TimeLlama
# Via pipx (recommended - isolated environment)
pipx install timellama
# Or via pip
pip install timellama
# Or install from source
git clone https://github.com/achrabaszcz/timellama.git
cd timellama
pip install -e .
Configuration
Create a .env file or set environment variables:
# Required: Productive.io API credentials
PRODUCTIVE_API_TOKEN=your_api_token
PRODUCTIVE_ORG_ID=your_org_id
PRODUCTIVE_USER_ID=your_user_id
# Optional: Calendar ICS URL (for calendar sync)
ICS_CALENDAR_URL=https://outlook.office365.com/owa/calendar/.../calendar.ics
# Optional: Billing period cutoff day (default: 10)
PRODUCTIVE_BILLING_CUTOFF_DAY=10
# Optional: Ollama settings
OLLAMA_MODEL=llama3.2:3b
OLLAMA_HOST=http://localhost:11434
Getting Your Productive Credentials
- API Token: Go to Productive โ Settings โ API tokens
- Organization ID: Found in your Productive URL:
app.productive.io/org-ID/... - User ID: Use the Productive API or check your profile settings
Setting Up Your Calendar
TimeLlama fetches calendar data from an ICS URL. Most calendar providers offer a shareable ICS link:
Outlook/Office 365:
- Go to Outlook Calendar โ Settings โ Shared calendars
- Publish your calendar and copy the ICS link
- Set
ICS_CALENDAR_URLto the link
Google Calendar:
- Go to Google Calendar โ Settings โ Settings for my calendars
- Select your calendar โ Integrate calendar
- Copy the "Secret address in iCal format"
- Set
ICS_CALENDAR_URLto the link
Usage
Check Configuration
timellama doctor
Show Today's Status
timellama status
Sync Calendar to Productive
# Sync today's calendar events
timellama sync
# Dry run - see what would happen
timellama sync --dry-run
# Include LLM suggestions for additional items
timellama sync --suggestions
Interactive Chat Mode
timellama chat
Commands in chat mode:
sync- Sync calendar to Productiveshow- Show current statusadd <item>- Add item to today's loghelp- Show helpquit- Exit
Add Item to Today's Log
timellama add Code review for PR 123
timellama add Debugging authentication issue
Employee Hours
# Get employee hours for billing period
timellama hours "John Doe"
# Current calendar month
timellama hours "John" --period current
# Previous month
timellama hours "Jane" --period previous
# Custom date range
timellama hours "John" --after 2026-01-01 --before 2026-01-31
# With AI summary
timellama hours "John" --summary
Interactive Approval Workflow
timellama approve
Cron Setup
For automated daily sync:
# Edit crontab
crontab -e
# Add line (sync at 6 PM every weekday)
0 18 * * 1-5 /path/to/timellama sync >> /var/log/timellama.log 2>&1
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ timellama CLI โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Commands: โ
โ - timellama chat (interactive mode) โ
โ - timellama sync (automated sync for cron) โ
โ - timellama status (show today's log) โ
โ - timellama hours <name> (employee work summary) โ
โ - timellama approve (review team hours) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Ollama โ โ ics-calendarโ โ productive- โ
โ (local) โ โ MCP โ โ time MCP โ
โ llama3.2:3b โ โ (bundled) โ โ (bundled) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
Bundled MCP Servers: The productive-time-mcp and ics-calendar-mcp servers are installed as dependencies. TimeLlama spawns them automaticallyโno separate setup needed.
Privacy
- All data stays local
- Ollama runs on localhost:11434
- MCP servers run locally (stdio)
- Only Productive API calls go external (required for time tracking)
- No calendar data sent to cloud LLMs
Development
# Clone repo
git clone https://github.com/achrabaszcz/timellama.git
cd timellama
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check src/
License
MIT
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
File details
Details for the file timellama-0.2.4.tar.gz.
File metadata
- Download URL: timellama-0.2.4.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac160fb2b87e3d644e4f9fa27e18cb5cacf13e20596e2c3b542d74691066522
|
|
| MD5 |
e46642c00315b78e21c8fc9f1bfa8a9c
|
|
| BLAKE2b-256 |
0a5721a3375bee5d67e8756acc33901987ccaca710019648caa4c25dabce1381
|