Skip to main content

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

Needs Python 3.12 or newer. booksmart is a command-line tool, so install it into its own environment rather than into a project's:

$ uv tool install booksmart
$ pipx install booksmart

Either puts a booksmart command on your PATH. Plain pip install booksmart also works if you would rather have it in the current environment. booksmart-core comes along as a dependency in every case.

Quickstart

ingest calls an LLM and an embedding provider, so it needs credentials — an Anthropic key (LLM) and an OpenAI key (embeddings) by default. Set them once; they persist in ~/.booksmart/config.toml:

$ booksmart config set anthropic_api_key   # hidden prompt, or pipe the key in
$ booksmart config set openai_api_key
$ 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"

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, config set/get/unset/list.

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, -11).

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

Any setting — provider, model, API keys, locations — can be persisted with booksmart config set <field> [value] (omit the value to enter it via hidden prompt or piped stdin, keeping keys out of shell history). Values live in ~/.booksmart/config.toml, created 0600 and safe to hand-edit.

Each setting resolves through one chain, highest first:

  1. BOOKSMART_* environment variables (e.g. BOOKSMART_LLM_PROVIDER) — explicit targeting for scripts and one-offs.
  2. config.toml — what config set writes.
  3. The vendors' conventional variables (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY) — API keys only, so an already-exported key just works.
  4. Defaults (SQLite, storage/ and embedded Qdrant under ~/.booksmart).

booksmart config list shows every field's effective value and which layer it came from. Set BOOKSMART_QDRANT_URL (or config set qdrant_url ...) to use a Qdrant server instead of the embedded on-disk store; BOOKSMART_HOME moves the whole installation.

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

booksmart-0.3.0.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

booksmart-0.3.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file booksmart-0.3.0.tar.gz.

File metadata

  • Download URL: booksmart-0.3.0.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for booksmart-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bcb6522b119cac135ab70448a4b76ce922ab3806f88d206a063a30b055d2bd5c
MD5 9838c14190012c4f8eff96498159b53f
BLAKE2b-256 ee9cca42ff0eb3e229daeecbbca197b6d4abeb1941d83619cdf3c43678e3cbda

See more details on using hashes here.

Provenance

The following attestation bundles were made for booksmart-0.3.0.tar.gz:

Publisher: publish.yml on dworznik/booksmart

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file booksmart-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: booksmart-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for booksmart-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abb66dcef15ba827f8071b1380ede96a704579f9fac55de354548a8ce9d390d1
MD5 3f8c52fa72f897d609e5e0ab85123d9b
BLAKE2b-256 736302b4a4f6cd4e5af49887666d1b540a2bace7e5902f9a199a17a2764b2f3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for booksmart-0.3.0-py3-none-any.whl:

Publisher: publish.yml on dworznik/booksmart

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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