Honest Scholar
Research you can defend.
Honest Scholar helps you keep research honest — especially now that AI is in the loop. You (not the AI) make and sign off every material decision, and you must be able to explain and defend the work; the tool keeps the accounts, advises, and probes. It supports honest, disclosable AI-assisted research — it does not certify that any work is honest.
This package is the CLI / tooling behind the
honest-scholar Claude Code plugin.
The plugin (skills + methodology) stays pure-markdown; this package provides the
honest-scholar command it calls — literature, dataset, defend, backlog,
and doctor — installed isolated, so it never touches your project's ML
environment.
Install
uv tool install honest-scholar # recommended (isolated tool env)
# or: pipx install honest-scholar
# or: pip install honest-scholar
honest-scholar --version
honest-scholar doctor # reports python / uv / rclone
Documentation: https://honest-scholar.science/
CLI
honest-scholar --version
honest-scholar doctor # environment report
honest-scholar literature resolve|cites|refs|enrich|neighbors # citation graph (OpenAlex + S2)
honest-scholar dataset validate|ingest|emit # manifest + Croissant
honest-scholar dataset fetch|verify|mirror|audit # SHA-256 retrieval + rclone mirror
honest-scholar defend record # understanding-status record
honest-scholar backlog park|add|list|rank|promote|drop # exploration backlog
honest-scholar keys set|list|check|unset|path # API-key & credential store
Every command is implemented and emits JSON (the skills parse it). Network- and
rclone-backed commands degrade gracefully when a key or the binary is absent.
API keys & credentials
Some services throttle hard without a key. Providing one is optional (the tooling degrades gracefully) but lifts the ceiling:
| Key | Service | What it buys | How to obtain |
|---|---|---|---|
S2_API_KEY |
Semantic Scholar | Rate limit well above the shared keyless pool. | https://www.semanticscholar.org/product/api#api-key |
OPENALEX_MAILTO |
OpenAlex | The "polite pool" (a contact email) — faster, more reliable. | https://docs.openalex.org/how-to-use-the-api/rate-limits-and-authentication |
RCLONE_CONFIG_<REMOTE>_* |
Private dataset mirror | rclone remote credentials passed as scoped env vars (no config file). | Per your rclone remote. |
Keys live in a CLI-managed JSON store at .honest-scholar/keys.json
(gitignored, created 0600), read with os.environ > store > unset
precedence, so an environment variable always wins. Manage it with keys:
honest-scholar keys set S2_API_KEY # hidden prompt, or reads piped stdin
echo "$MY_KEY" | honest-scholar keys set S2_API_KEY
honest-scholar keys set < keys.json # a JSON object sets many at once
honest-scholar keys list # presence + source (never the value)
honest-scholar keys check | unset | path
The value is read only from stdin or a hidden prompt — never argv — so it never
hits your shell history or the process list, and list/check/doctor report
presence only.
Plaintext at rest. The store is not encrypted; gitignore +
0600limit exposure but are not a vault. OS-keychain backing is a planned follow-up (#49).
Learn more
- Documentation: https://honest-scholar.science/
- User guide: https://honest-scholar.science/get-started/user-guide
- Plugin, source & full design record: https://github.com/davorrunje/honest-scholar
- Disclose your AI use & cite Honest Scholar: https://github.com/davorrunje/honest-scholar/blob/main/DISCLOSURE.md
Changelog
https://github.com/davorrunje/honest-scholar/blob/main/CHANGELOG.md
License
Metadata
Release files for honest-scholar 0.1.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 | |
|---|---|---|---|
| honest_scholar-0.1.0.tar.gz | 46.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| honest_scholar-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 98.6 kB
Release files / honest_scholar-0.1.0.tar.gz
| Download URL | honest_scholar-0.1.0.tar.gz |
|---|---|
| Size | 46.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6eb9a71ec99fc11320cd3ad59116072af353cace9ba439a0a86c52fbbb512bbb
|
|
BLAKE2b-256 checksum How to use checksums |
f807de588ce2c8d0fa87d48affea2079e86130049175f09f6ad46d7da3dcff42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency logRelease files / honest_scholar-0.1.0-py3-none-any.whl
| Download URL | honest_scholar-0.1.0-py3-none-any.whl |
|---|---|
| Size | 52.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d9669003c2ca548f719451c60cabb6de1381115eb6f921a1206b392040a4658
|
|
BLAKE2b-256 checksum How to use checksums |
68dd27dd7edcb53094f06acdad39d243ea4bf5c3a9955dfc116e5f45aa59d33b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency log