Local Activity Tracking β Smart Productivity Reports
Oculus is a privacy-first, open-source productivity system that tracks your browsing activity locally, stores it in Google Sheets, and sends you a personalized daily email report with AI-generated insights and analysis.
All data stays under your control:
- Activity tracking runs locally on your machine
- Automation runs on your machine via n8n
- Reports are generated inside your Google account
No external dashboards. No data selling. No cloud surveillance.
- Developers who want personal productivity insights
- Privacy-conscious users
- People who prefer email over dashboards
- Anyone already using ActivityWatch
- Tracks browsing activity locally using ActivityWatch
- Automates hourly data collection using n8n
- Stores activity logs in Google Sheets
- Generates personalized reports using Google Apps Script + Gemini AI
- Includes three analysis perspectives:
- π Executive Assistant: Concise data-driven summary with time allocation
- π Funny Friend: Witty, sarcastic observations about your browsing habits
- π― Productivity Coach: "Deep Work" vs "Distraction" analysis + actionable tips
- Read the Setup Guide for complete step-by-step instructions
- Install ActivityWatch, n8n, and configure Google Apps Script
- Set up your Gemini API key
- Create a daily trigger at your preferred time
- Start tracking β your first report arrives tomorrow!
Estimated setup time: 30-45 minutes
- ActivityWatch β Free, open-source activity tracker
- n8n β Free, self-hosted automation platform
- Google Account β For Sheets and Apps Script
- Gemini API Key β Free tier available at ai.google.dev
- Local machine running 24/7 (optional) β For continuous tracking
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your Local Machine β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ActivityWatch (Port 5600) β
β ββ Tracks all browser activity β
β β
β n8n (Port 5678) β
β ββ Hourly automation workflow β
β ββ Fetches activity data β
β ββ Sends to Google Sheets β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β (Hourly via n8n (customizable))
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your Google Account β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Google Sheet β
β ββ Stores all activity logs β
β β
β Google Apps Script (Daily @11:55 PM (customizable))β
β ββ Reads today's data from Sheet β
β ββ Calls Gemini API for analysis β
β ββ Sends personalized email report β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
oculus/
βββ n8n/
β βββ activitywatch_collector.json # n8n workflow for data collection
β
βββ apps-script/
β βββ daily_report.gs # Google Apps Script for email reports
β
βββ screenshots/
β βββ email_report.png # Sample email output
β βββ sheet_data.png # Google Sheet with activity logs
β βββ n8n_workflow.png # n8n automation setup
β
βββ SETUP.md # Complete setup guide (step-by-step)
βββ README.md # This file
βββ .gitignore # Prevents accidental secret commits
| Feature | Details |
|---|---|
| Multi-persona Analysis | Executive, Coach, and Friend perspectives on your productivity |
| Real-time Tracking | Continuous monitoring via ActivityWatch, hourly sync via n8n |
| Email Reports | Daily summaries with insights and recommendations |
| Time Tracking | Detailed breakdown by site and duration |
| Pattern Detection | Identifies deep work vs distraction patterns |
| No Server Costs | Everything runs locally or on free Google services |
| Customizable | Modify prompts, email templates, and triggers to suit your workflow |
Fault-tolerant design:
- Laptop off β no data collected (expected)
- Laptop on β collection resumes automatically
- No duplicate or corrupted reports
- Skip days with no activity without errors
- If the AI service is temporarily unavailable, Oculus automatically retries and gracefully falls back without interrupting report delivery.
β
All tracking is local β Activity data never leaves your machine until you authorize it
β
No third-party analytics β No Google Analytics, Mixpanel, or similar
β
Private Google Sheet β Only visible to you
β
Secure API key storage β Gemini API key stored in Apps Script Properties (encrypted)
β
No credentials in repository β API keys never committed to git
β
Open source β Full transparency, auditable code
You own 100% of your data.
Screenshots are anonymized and represent a real run of the system.
Personalized AI-generated productivity report delivered to your inbox.
Hourly activity logs collected locally and stored securely in your sheet.
Local automation that collects ActivityWatch data every hour.
| Issue | Solution |
|---|---|
| No data in Google Sheet | Verify ActivityWatch is running, n8n workflow is active |
| Email not received | Check Apps Script execution logs, verify Gmail permissions |
| "API key not set" error | Run setGeminiApiKey() in Apps Script editor |
| n8n workflow fails | Check ActivityWatch bucket name, timezone settings |
| Emoji rendering issues in email | Minor visual glitch, doesn't affect functionality |
See SETUP.md for detailed troubleshooting.
- Modify analysis prompts in
daily_report.gs(line ~65) - Change email format by editing the HTML template (line ~140)
- Adjust trigger time in Apps Script Triggers menu
- Filter specific sites by editing the n8n workflow
- Change email recipient in the
GmailApp.sendEmail()call
MIT License β Free to use, modify, and share.
- ActivityWatch β Open-source activity tracking
- n8n β Open-source workflow automation
- Google Apps Script β Cloud automation
- Google Sheets β Data storage
- Gemini API β AI-powered analysis
- QuickChart β Chart generation
- Run n8n 24/7 for continuous tracking (use auto-startup scripts)
- Review your reports to identify productivity patterns
- Adjust your daily workflow based on coaching tips
- Keep your Gemini API key secure β treat it like a password
- Regularly clean up old data in Google Sheets (optional)
Found a bug? Have an improvement idea?
- Fork the repository
- Create a feature branch
- Submit a pull request
All contributions welcome! Check CONTRIBUTION.md for detailed instructions.
Questions? Check SETUP.md for detailed instructions and troubleshooting.
Ready to start? Head to SETUP.md now!


