GRIMWATCH
Your markdown movie archive, with a brain.
A terminal CLI for the films you mean to watch and the ones you'll never forget. Grimwatch keeps your list in plain markdown — no database, no account, no cloud. AI handles classification and recommendations. You handle the watching.
Install
pip install grimwatch
Requires Python 3.10+. Works on Windows, macOS, Linux.
Quickstart
grimwatch # open the interactive archive
grimwatch setup # connect your list file + Groq key
grimwatch add "Stalker (1979)" # add a single film
grimwatch add my-list.txt # batch import from a text file
grimwatch suggest --mood "bleak" # AI recommendation from your backlog
grimwatch tonight # one pick, right now
Commands
| Key | Command | What it does |
|---|---|---|
| 1 | add |
Add a film or batch-import from a .txt/.md file |
| 2 | import |
Import a raw list — no genres or years needed |
| 3 | watch |
Mark a film watched (or unwatched with --undo) |
| 4 | suggest |
AI picks from your unwatched list |
| 5 | tonight |
One pick for tonight, right now |
| 6 | random |
Completely random unwatched film |
| 7 | search |
Search by title, keyword, or year |
| 8 | list |
Browse your list genre by genre |
| 9 | stats |
Progress, decade heatmap, blind spots |
| 10 | classify |
Classify a separate import/list file |
| 11 | merge |
Merge a second list into yours |
| 12 | dedup |
Remove duplicates |
| 13 | setup |
Change list path or Groq key |
| 14 | about |
Who made this and why |
| 15 | export |
Export a Markdown backup; restore it with import |
| 16 | info |
Show metadata and your notes for a film |
Screenshots
Adding a film — AI classifies it instantly
AI suggestions by mood
Film info with metadata
About
How the list works
Grimwatch reads and writes a plain markdown file. Example format:
## Horror
- [ ] Suspiria (1977)
- [x] The Wicker Man (1973)
## Crime
- [ ] Memories of Murder (2003)
Your list file, your format. Grimwatch stays out of the way.
AI features
AI is powered by Groq (free tier available).
- Classification — adds genres and years when you import a raw list
- suggest — picks from your backlog based on mood or recent watches
- tonight — one confident pick, no arguments needed
AI is optional. Every non-AI command works without a Groq key.
Configuration
Config is stored at ~/.grimwatch/config.json. Run grimwatch setup to change anything.
Environment variable override: GRIMWATCH_CONFIG_DIR
Contributing
Issues and PRs welcome — see CONTRIBUTING.md.
License
MIT — see LICENSE.
Built by Nirmal.
Metadata
Release files for grimwatch 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 | |
|---|---|---|---|
| grimwatch-1.0.0.tar.gz | 86.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grimwatch-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 166.5 kB
Release files / grimwatch-1.0.0.tar.gz
| Download URL | grimwatch-1.0.0.tar.gz |
|---|---|
| Size | 86.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
648d71a0102d657002bd70325ca9775fb1502b5afbaf3b5ad69b96f22beb5981
|
|
BLAKE2b-256 checksum How to use checksums |
184d545898d35ed636fccbd8946092581d22d3e91e36cbb3d55c2c06c3ae8c6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / grimwatch-1.0.0-py3-none-any.whl
| Download URL | grimwatch-1.0.0-py3-none-any.whl |
|---|---|
| Size | 79.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79051bf350fa4827b202346dfac5e972478f07e958edf6c9eae95bd777e82870
|
|
BLAKE2b-256 checksum How to use checksums |
b8245ec50e5e3d48514b55f5a899471a5f84640484bf334833fba7763e066fd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|