Personal library manager for PDFs using GitHub Release assets
Project description
shelfctl
Personal library manager for PDFs and books using GitHub Release assets as storage.
Install
pip install shelfctl
This installs the shelfctl binary for your platform. No Python runtime is needed at execution time.
Usage
# Launch interactive TUI
shelfctl
# Add a book to a shelf
shelfctl shelve ~/book.pdf --shelf programming
# Browse your library
shelfctl browse
# Generate HTML index
shelfctl index
# Check your setup
shelfctl doctor
# Search across shelves
shelfctl search "neural networks"
What is shelfctl?
shelfctl organizes documents (PDFs, EPUBs) into topic-based "shelves" backed by GitHub repositories:
- Metadata lives in version-controlled
catalog.ymlfiles - Files are stored as GitHub Release assets (free, unlimited storage for public repos)
- Downloads are on-demand per file (no need to clone entire repos)
Other Installation Methods
| Method | Command |
|---|---|
| Homebrew | brew install blackwell-systems/tap/shelfctl |
| Scoop (Windows) | scoop install shelfctl |
| winget (Windows) | winget install BlackwellSystems.shelfctl |
| Go install | go install github.com/blackwell-systems/shelfctl/cmd/shelfctl@latest |
| Install script | curl -fsSL https://raw.githubusercontent.com/blackwell-systems/shelfctl/main/install.sh | sh |
| APT/RPM | Download .deb or .rpm from Releases |
Supported Platforms
| Platform | Architecture |
|---|---|
| macOS | arm64 (Apple Silicon), x86_64 (Intel) |
| Linux | arm64, x86_64 |
| Windows | arm64, x86_64 |
Links
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shelfctl-0.4.12-py3-none-win_arm64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-win_arm64.whl
- Upload date:
- Size: 4.7 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f0e1b79176d3ad68c8ed735717e06de97132a52ec82be6bb101a14f27711679
|
|
| MD5 |
406271b0ea29919a300a47291b4b1bf1
|
|
| BLAKE2b-256 |
37614e5a61fc34b88b6e774a37f6c9a498d7699c9594bad4c61f29b00a41de78
|
File details
Details for the file shelfctl-0.4.12-py3-none-win_amd64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-win_amd64.whl
- Upload date:
- Size: 5.2 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b3fbd5af35a20abd6b6d1f9fafedb0445c2cf6deacdb215274762abfabd072b
|
|
| MD5 |
d242fe288196ebf17142da17e304da06
|
|
| BLAKE2b-256 |
a069d0da63e797af1befb5c863456db804c1e8cc70555b5d6323c50583516bb0
|
File details
Details for the file shelfctl-0.4.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e37e2bb30d76ffe5ea11a0344f538e491130c4d5b6c659fdbab5cd0d3db4bc79
|
|
| MD5 |
a0262f9f00174d6fd7ccbdce09fe88a0
|
|
| BLAKE2b-256 |
8094c5d3779e5eae8b255fbe6c6ab3449a805d1ba397d6dca0823d9289158dd6
|
File details
Details for the file shelfctl-0.4.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.6 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8971414e3cb77674e46efc75f037d145d0a7956b26b4ca6feab44a67e9adebf6
|
|
| MD5 |
492b9b5abb71f9f4a2a4717e05925828
|
|
| BLAKE2b-256 |
de6c49864951199bf99b4d034f618bc31351214c78bfc0c4c165692c59cac747
|
File details
Details for the file shelfctl-0.4.12-py3-none-macosx_11_0_x86_64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-macosx_11_0_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e530a52b483ad80559dc3778afbb205d026f85072026ab4d0112b5521beeed13
|
|
| MD5 |
646742b481038ef4063ad07aa742f1c9
|
|
| BLAKE2b-256 |
4fa1e8a150c796874af44c51fe78394e8ba904a7211a3d68abbb0931f0e18c9b
|
File details
Details for the file shelfctl-0.4.12-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: shelfctl-0.4.12-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.8 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1eed57a6b9442cf62edefc63670c15700bb7be1d5dfb4f4352a5c436b0e22701
|
|
| MD5 |
5a87a6ccb127f76942aaacb6289a0aa0
|
|
| BLAKE2b-256 |
84bd3ba91e82ad68e480060da469e60405452cce2f980a268fdcf2779ceddeb9
|