Skip to main content

shellwrapped

Spotify Wrapped for your terminal.
Your shell history's year in review: top commands, git habits, typos, 2am sessions, and your terminal personality. Plus a card to share.

PyPI CI Python MIT

uvx shellwrapped        # or: pipx run shellwrapped

shellwrapped playing an animated year in review in the terminal

When it's done, you get a card like this saved next to you:

shellwrapped share card: The Night Shell

Demo and card generated from a synthetic year of history.

What it finds

  • Your top commands, counted properly through pipes, &&, sudo, env and VAR=value prefixes
  • Your git habits: how many git status it takes you to feel safe
  • Your most-repeated command: a strong hint it deserves an alias
  • Your typos: gti, sl, claer, pyhton, cd.., and friends
  • When you work: your rush hour, your longest session, your busiest day, how much happens after 10pm
  • Habits: sudo !!, rm -rf, git push --force, cd immediately followed by ls
  • Your terminal personality: The Night Shell, The Git Whisperer, The Container Captain, The Pythonista, The Speed Typist, ...

Works with zsh, bash, fish and PowerShell on macOS, Linux and Windows. It finds your history files automatically, including zsh's extended format with multi-line commands.

Private by design

  • Everything runs locally. No network requests.
  • The share card shows only counts and program names (git, docker), never full commands, paths or arguments.
  • Anything token-shaped is masked before a command is shown in your terminal.

Options

shellwrapped --all-time            # your whole history instead of this year
shellwrapped --year 2025
shellwrapped --no-anim             # skip the animation, just the summary
shellwrapped --file ~/.zsh_history --shell zsh
shellwrapped --card wrapped.png    # where to save the card (or --no-card)

Year-by-year stats need timestamps in your history. zsh's EXTENDED_HISTORY and fish record them automatically. In bash, add export HISTTIMEFORMAT='%F %T ' to your .bashrc. Without timestamps, shellwrapped covers everything your history remembers.

License

MIT. Bundles the Inter typeface under the SIL Open Font License.

Metadata

Release files for shellwrapped 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shellwrapped 0.1.0
File Size Uploaded Provenance Actions
shellwrapped-0.1.0.tar.gz 738.1 kB With provenance Details for shellwrapped-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for shellwrapped 0.1.0
File Interpreter ABI Platform Actions
shellwrapped-0.1.0-py3-none-any.whl Python 3 none any Details for shellwrapped-0.1.0-py3-none-any.whl

Total release size: 1.5 MB

Release files / shellwrapped-0.1.0.tar.gz

Download URL shellwrapped-0.1.0.tar.gz
Size 738.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4dc0675d7bef9e3c8957aa4581162e6d4c2a1f2b9e48dd1b5067ad83b721bd11
BLAKE2b-256 checksum
How to use checksums
29a41321f08ef9b08f692f0e7735db1e76ac5c6a5bc63fe3053d386fd43477fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / shellwrapped-0.1.0-py3-none-any.whl

Download URL shellwrapped-0.1.0-py3-none-any.whl
Size 740.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e3c7f00a7e84adc48062332d1f37269355964db49ba49754c03400cd9955459
BLAKE2b-256 checksum
How to use checksums
0ac8a776cec445cf8a79f606e63ee9377a5fb63e85011c272dfec43072232e40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for shellwrapped 0.1.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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for shellwrapped-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page