Skip to main content

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 + 0600 limit exposure but are not a vault. OS-keychain backing is a planned follow-up (#49).

Learn more

Changelog

https://github.com/davorrunje/honest-scholar/blob/main/CHANGELOG.md

License

Apache-2.0.

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)

Source distribution for honest-scholar 0.1.0
File Size Uploaded
honest_scholar-0.1.0.tar.gz 46.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for honest-scholar 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page