Booksmart CLI — a local, single-user front end over booksmart-core (embedded storage, no server).
Project description
booksmart
The Booksmart CLI — turn books into queryable knowledge, locally.
A single-user front end over
booksmart-core:
register PDFs/EPUBs, ingest them through the parsing → structure → profile →
extraction → summaries → embeddings pipeline, and browse the results. Everything
runs against an auto-migrated SQLite file and embedded Qdrant under
~/.booksmart/ — no Docker, no Postgres, no server.
Install
Not published to PyPI yet — install from the repo, which is private, so this
needs an SSH key with access to it. uv clones the repo, resolves
booksmart-core from the same checkout, and puts a booksmart command on your
PATH:
$ uv tool install "git+ssh://git@github.com/dworznik/booksmart.git#subdirectory=packages/cli"
Over HTTPS instead, with gh auth login (or a repo-scoped token) supplying git
credentials:
$ uv tool install "git+https://github.com/dworznik/booksmart.git#subdirectory=packages/cli"
Re-run with --force to pick up new commits. Once the first cli-v* tag ships,
this becomes uv tool install booksmart, which pulls booksmart-core down as a
dependency.
Quickstart
$ booksmart add ./clean-code.pdf --title "Clean Code" --author "Robert C. Martin"
$ booksmart ingest <book-id>
$ booksmart structure <book-id>
$ booksmart knowledge list <book-id>
$ booksmart search all "how do deep modules reduce complexity"
ingest calls an LLM and an embedding provider, so it needs credentials —
ANTHROPIC_API_KEY and OPENAI_API_KEY by default. To drive the whole pipeline
with no keys, no network and no cost, select the deterministic fake providers:
$ BOOKSMART_LLM_PROVIDER=fake BOOKSMART_EMBEDDING_PROVIDER=fake booksmart ingest <book-id>
Commands
add, ingest, books list/show/update, runs list/show, structure,
profile, knowledge list/show, search.
Search
booksmart search <book-id|all> "<query>" ranks the chapters, sections and
knowledge objects most similar to a natural-language query, over the embeddings
an ingest produced. Restrict it with --type (repeatable: chapter, section,
knowledge_object), cap it with --limit, and drop weak hits with
--score-threshold (a cosine similarity, -1–1).
The query is embedded with the model the vector collection is locked to; if that is not the currently configured embedding model, search refuses rather than return plausible, silently wrong rankings (ADR 0001).
Configuration
Providers and locations come from BOOKSMART_* environment variables (e.g.
BOOKSMART_LLM_PROVIDER, BOOKSMART_HOME). Set BOOKSMART_QDRANT_URL to use a
Qdrant server instead of the embedded on-disk store.
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
Built Distribution
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 booksmart-0.1.0.tar.gz.
File metadata
- Download URL: booksmart-0.1.0.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a82434cd387cde635f6a9f2a56227a57929966a73cdc2f11ff80bb0bc67231a6
|
|
| MD5 |
a3fed4edbbe0a0cc61003152fa1975cb
|
|
| BLAKE2b-256 |
19d4e63b4af6ec56b2444152f7804f122f12472fe60264a8019cab53cadc5b36
|
Provenance
The following attestation bundles were made for booksmart-0.1.0.tar.gz:
Publisher:
publish.yml on dworznik/booksmart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
booksmart-0.1.0.tar.gz -
Subject digest:
a82434cd387cde635f6a9f2a56227a57929966a73cdc2f11ff80bb0bc67231a6 - Sigstore transparency entry: 2130102716
- Sigstore integration time:
-
Permalink:
dworznik/booksmart@8a0f8562330fd31577f0c7230e944343414e755e -
Branch / Tag:
refs/tags/cli-v0.1.0 - Owner: https://github.com/dworznik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8a0f8562330fd31577f0c7230e944343414e755e -
Trigger Event:
push
-
Statement type:
File details
Details for the file booksmart-0.1.0-py3-none-any.whl.
File metadata
- Download URL: booksmart-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4c928cc550c1684526014da83edb4efbac299db01930269a98ab87aeed4da59
|
|
| MD5 |
f5fee23198acb676784db160c9547aaf
|
|
| BLAKE2b-256 |
10955f11ac427ee6d905446e5e322410df38826a1b050bc857a0ae4e022092ed
|
Provenance
The following attestation bundles were made for booksmart-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on dworznik/booksmart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
booksmart-0.1.0-py3-none-any.whl -
Subject digest:
e4c928cc550c1684526014da83edb4efbac299db01930269a98ab87aeed4da59 - Sigstore transparency entry: 2130102792
- Sigstore integration time:
-
Permalink:
dworznik/booksmart@8a0f8562330fd31577f0c7230e944343414e755e -
Branch / Tag:
refs/tags/cli-v0.1.0 - Owner: https://github.com/dworznik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8a0f8562330fd31577f0c7230e944343414e755e -
Trigger Event:
push
-
Statement type: