Skip to main content

Track your real coding effort — typing speed, AI usage, focus metrics, and developer personality.

Project description

⌨️ AI Typing Stats

Track your real coding effort.

A terminal-based developer productivity tool that tracks your typing behavior and tells you how much work you actually typed versus what came from AI or clipboard pastes.

Python License PyPI

✨ Features

  • Real-time Dashboard — Live WPM, self vs AI bars, focus score, and correction count
  • Paste Detection — Detects Cmd/Ctrl+V and rapid-input bursts as AI-assisted input
  • Developer Personality — Classifies you as Code Monk 🧘, AI Collaborator 🤝, or Prompt Engineer 🚀
  • Focus Score — Measures active typing time vs idle time
  • Fun Alerts — Real-time messages like "Speed Demon ⚡" and "Perfection mode ON ✨"
  • Session History — Tracks daily streaks, lifetime averages, and past sessions
  • Beautiful Terminal UI — Powered by Rich

🚀 Installation

pip install aitypingstats

macOS Note

On macOS, you need to grant Accessibility permissions to your terminal app for keyboard tracking:

System Settings → Privacy & Security → Accessibility → Enable your terminal app

📖 Usage

Start a tracking session

aitype start

Type anywhere while the tracker is running. Press Ctrl+C to stop and see your results.

View session history

aitype stats

Reset all data

aitype reset

About

aitype about

📊 What It Tracks

Metric Description
Self Typed % Characters you typed manually
AI/Pasted % Characters from paste or rapid input
WPM Words per minute
Corrections Backspace + Delete count
Focus Score Active typing time / total session time
Dev Type Code Monk, AI Collaborator, or Prompt Engineer
Streak Consecutive days with sessions

🧑‍💻 Developer Personality Types

Self Work % Type Emoji
≥ 80% Code Monk 🧘
50–79% AI Collaborator 🤝
< 50% Prompt Engineer 🚀

🏗️ Project Structure

aitypingstats/
├── pyproject.toml
├── requirements.txt
├── README.md
├── LICENSE
├── aitypingstats/
│   ├── __init__.py
│   ├── __main__.py
│   ├── cli.py         # Typer CLI commands
│   ├── tracker.py     # Keyboard tracking (pynput)
│   ├── analytics.py   # Stats & classification
│   ├── ui.py          # Rich dashboard & summary
│   └── storage.py     # JSON session storage
└── tests/
    ├── __init__.py
    └── test_analytics.py

🛠️ Development

git clone https://github.com/ritvikmudgal/aitypingstats.git
cd aitypingstats
python -m venv .venv
source .venv/bin/activate
pip install -e .
aitype start

📦 Publishing to PyPI

pip install build twine
python -m build
twine upload dist/*

📝 License

MIT — see LICENSE

👤 Author

Ritvik Mudgal


Built with ❤️ for developers who care about their craft.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aitypingstats-1.0.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aitypingstats-1.0.0-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file aitypingstats-1.0.0.tar.gz.

File metadata

  • Download URL: aitypingstats-1.0.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aitypingstats-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5c5111a97adb1b572199c7be7e8627bf759769480aee585879970a79a9407473
MD5 7ab8553938ae3c10f33866c68c7cdfb2
BLAKE2b-256 b74ed0129e4ae6abbe3b4ab718f159199bf903f8c3349e3f185e6d83dca52802

See more details on using hashes here.

Provenance

The following attestation bundles were made for aitypingstats-1.0.0.tar.gz:

Publisher: publish.yml on ritvikmudgal/aitypingstats

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aitypingstats-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: aitypingstats-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aitypingstats-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c31685848ec1189abd4dbebec7c6d239fa7eded6906f824fe5f3b182eabb0239
MD5 33820a7197cf6bdf3423163aa38d2c1f
BLAKE2b-256 971d3a1a8c5c4e7828a0b19aa5096f064ddeca68516de1348afd81b4a4cb4888

See more details on using hashes here.

Provenance

The following attestation bundles were made for aitypingstats-1.0.0-py3-none-any.whl:

Publisher: publish.yml on ritvikmudgal/aitypingstats

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page