Skip to main content

⌨️ 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.

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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

Supported by

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