Modern Python activity monitoring inspired by the original Selfspy, with real-time TUI, session tracking, and productivity insights
Project description
Selfspy
A comprehensive activity monitoring and analytics tool with real-time TUI, session tracking, and productivity insights. Built with modern Python for macOS and Linux.
Features
- Real-time TUI Dashboard - Beautiful terminal UI with sparklines, metrics, and live updates
- Session Tracking - Track activity across multiple sessions with start/end times
- Idle Detection - Distinguish between active work and idle time (3-minute threshold)
- Historical Comparison - Compare today's activity vs yesterday with visual indicators
- Focus Time Tracking - See actual time spent in each application
- Privacy-First - Optional encryption, local storage, configurable exclusions
- Rich Visualizations - Enhanced statistics with charts, graphs, and insights
- macOS Native - Full window tracking with PyObjC integration
- Linux Support - Cross-platform with fallback tracking
Quick Start
Installation
# From PyPI (when published)
pip install selfspy
# On macOS (recommended for full features)
pip install selfspy[macos]
# With pipx (isolated environment)
pipx install selfspy[macos]
# With uv (fastest)
uv tool install selfspy --with selfspy[macos]
Usage
# Start monitoring with live TUI
selfspy start
# View enhanced statistics
selfstats summary --days 7
# View visualizations
selfviz enhanced
# Check terminal activity
selfterminal stats
See INSTALL.md for detailed installation instructions.
Documentation
Comprehensive documentation is available in the docs/ directory:
- Installation Guide - Setup and dependencies
- Usage Guide - Commands and workflows
- Configuration - Settings and customization
- Architecture - System design and internals
- Troubleshooting - Common issues and solutions
Requirements
- Python 3.10+
- macOS 10.12+ (for full features)
- Accessibility permissions (macOS)
For detailed installation instructions, see the Installation Guide.
Credits
This project is inspired by and based on the original Selfspy by Bjarte Johansen and David Fendrich. The original Selfspy pioneered the concept of comprehensive activity monitoring with privacy-first local storage and encryption.
This modern Python implementation builds upon that foundation with:
- Modern async/await patterns with SQLAlchemy 2.0
- Real-time TUI dashboard with Rich
- Session tracking and historical analytics
- Enhanced security and stability
- macOS native integration with PyObjC
- Comprehensive testing and documentation
We're grateful to the original authors for creating such an innovative tool and releasing it as open source.
License
GPL-3.0-or-later
This project maintains compatibility with the original Selfspy's GPL-3.0 license.
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 selfspy-1.0.0.tar.gz.
File metadata
- Download URL: selfspy-1.0.0.tar.gz
- Upload date:
- Size: 229.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb7c457e4feb4203960c63376f1b54a3affaa274586602f35d2fdf7bc3a9b55e
|
|
| MD5 |
5860eb1accf1395a0f3d22efb862d10a
|
|
| BLAKE2b-256 |
72b0c5c3ecad12f369cb2ab8df1d71b4a645788ace6dbfff6aad6aa1c5eda42e
|
File details
Details for the file selfspy-1.0.0-py3-none-any.whl.
File metadata
- Download URL: selfspy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 49.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a18bb8e5654f50414f7810457e2339214ad102e4226f51bc6bbdad811ddb1a33
|
|
| MD5 |
77c0d3d0b1df1a4bd54b7b3fdd45d1ae
|
|
| BLAKE2b-256 |
8f57a80d748a54ab0d6ca1f5426e074347de806393f4ef4e2f5dfd7c0db5b6b3
|