InScien
A local app on top of your Zotero library that does four things:
- Extracts the references from your papers and gets their citation counts
- Maps the citation connections
- Narrates papers with a player that follows along in the PDF, using local offline TTS
- Searches the papers and answers questions with quotes from them (optional)
Requirements
- Python 3.12 or newer
- Zotero desktop with a local data directory (for read-only Zotero access)
- For Ask: a local Ollama
Install and run
uvx inscien
or
pip install inscien
inscien
This starts the app on a loopback port and opens it in the browser. Zotero is found automatically. If it is not found, set its data directory on the Settings page.
Search and Ask come with the search extra:
uvx --from "inscien[search]" inscien
or
pip install "inscien[search]"
How to
- In the sidebar, open a Zotero collection.
- Build a paper to add its references to the map. A build reads the reference list from the PDF and resolves it against OpenAlex, Crossref and Semantic Scholar.
- Narrate a paper to make its audiobook. The first narration downloads the voice weights (about 340 MB) once.
- Index the papers for search with Update index in the search settings, or
inscien index. The first index downloads the search models once. - Search from the search bar. Ask and the LLM rerank appear while Ollama is running.
One job runs at a time. The job pane shows its steps and progress and can cancel it.
CLI
inscien build <paper.pdf> # add a paper to the library
inscien narrate <paper.pdf> # make a narration
inscien index # build or update the search index
inscien voices # list the voices
inscien sample am_echo af_heart # one paragraph in those voices, to choose by ear
inscien --help
inscien narrate takes --voice (comma-separated for several tracks), --speed and
--device cuda.
Storage
Everything InScien writes is under one directory, INSCIEN_HOME:
| OS | Default |
|---|---|
| Linux | ~/.local/share/inscien |
| macOS | ~/Library/Application Support/inscien |
| Windows | %LOCALAPPDATA%\inscien |
library/ built papers (paper.json, extract.json)
bundles/ finished narrations, and where each listen stopped
narrate/ narration queue and per-paper work files
import/ PDFs staged for a build
data/ settings, the Zotero snapshot, the current job
weights/ the voice weights
search/ the search index and its models
To move or back up your data, move or copy that directory.
Configuration
All optional, as environment variables.
| Variable | Effect |
|---|---|
INSCIEN_HOME |
where data goes |
ZOTERO_DATA_DIR |
the Zotero data directory, when it is not detected |
INSCIEN_CONTACT_EMAIL |
sent to OpenAlex and Crossref for their faster polite pool |
S2_API_KEY |
a Semantic Scholar API key, for higher rate limits |
INSCIEN_TTS_DEVICE |
cuda to narrate on an NVIDIA GPU (see below) |
INSCIEN_SEARCH_DEVICE |
cuda to index and rerank on an NVIDIA GPU (see below) |
INSCIEN_LLM_MODEL |
the Ollama model for Ask and the rerank (qwen2.5:7b-instruct) |
INSCIEN_LLM_URL |
where Ollama answers (http://127.0.0.1:11434) |
INSCIEN_HIDDEN_COLLECTIONS |
top-level Zotero collections to leave out, comma-separated |
INSCIEN_READONLY |
1 refuses every change except listening progress |
Narration and search run on the CPU by default, narration at a few times realtime. To use an NVIDIA GPU:
- Replace
onnxruntimewithonnxruntime-gpuin the same environment. - Set
INSCIEN_TTS_DEVICE=cudafor narration andINSCIEN_SEARCH_DEVICE=cudafor search.
Development
Needs uv, and Node only to build the UI.
make setup # .venv with the package editable, and the frontend deps
make backend # API on :8000 with reload
make frontend # UI dev server on :3000
make test
make wheel # build the UI into the package, then the wheel
License
See LICENSE.
Metadata
Release files for inscien 0.6.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 | Provenance | Actions |
|---|---|---|---|---|
| inscien-0.6.0.tar.gz | 3.0 MB | Without provenance | Details for inscien-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| inscien-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for inscien-0.6.0-py3-none-any.whl |
Total release size: 4.5 MB
Release files / inscien-0.6.0.tar.gz
| Download URL | inscien-0.6.0.tar.gz |
|---|---|
| Size | 3.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07b06487f6a278aa76ec3c01cc395099161a79f3c171f5265a42c55343c3cfce
|
|
BLAKE2b-256 checksum How to use checksums |
ce1bb4acc412d149941bc853c15fc073e3fa673561c8868bc03fe95f98a2222f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / inscien-0.6.0-py3-none-any.whl
| Download URL | inscien-0.6.0-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6afbf852f9de8e2f08a1fb2e6990affda5c9989de3bb885c66a7ee3a179ce827
|
|
BLAKE2b-256 checksum How to use checksums |
f39002ce8014c010300e860c53bd4402a503722e08a360713fd4294eeeabbf55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for inscien 0.6.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.