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.
Metadata
Release files for selfspy 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| selfspy-1.0.0.tar.gz | 229.3 kB | Without provenance | Details for selfspy-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| selfspy-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for selfspy-1.0.0-py3-none-any.whl |
Total release size: 278.9 kB
Release files / selfspy-1.0.0.tar.gz
| Download URL | selfspy-1.0.0.tar.gz |
|---|---|
| Size | 229.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fb7c457e4feb4203960c63376f1b54a3affaa274586602f35d2fdf7bc3a9b55e
|
|
BLAKE2b-256 checksum How to use checksums |
72b0c5c3ecad12f369cb2ab8df1d71b4a645788ace6dbfff6aad6aa1c5eda42e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / selfspy-1.0.0-py3-none-any.whl
| Download URL | selfspy-1.0.0-py3-none-any.whl |
|---|---|
| Size | 49.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a18bb8e5654f50414f7810457e2339214ad102e4226f51bc6bbdad811ddb1a33
|
|
BLAKE2b-256 checksum How to use checksums |
8f57a80d748a54ab0d6ca1f5426e074347de806393f4ef4e2f5dfd7c0db5b6b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for selfspy 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.