honest-scholar — a CLI for honest, defensible AI-assisted research (tooling for the honest-scholar plugin)
Project description
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
Project details
Release history Release notifications | RSS feed
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 honest_scholar-0.1.0.tar.gz.
File metadata
- Download URL: honest_scholar-0.1.0.tar.gz
- Upload date:
- Size: 46.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eb9a71ec99fc11320cd3ad59116072af353cace9ba439a0a86c52fbbb512bbb
|
|
| MD5 |
707e002eaca8744783c91a33c9209505
|
|
| BLAKE2b-256 |
f807de588ce2c8d0fa87d48affea2079e86130049175f09f6ad46d7da3dcff42
|
Provenance
The following attestation bundles were made for honest_scholar-0.1.0.tar.gz:
Publisher:
publish.yml on davorrunje/honest-scholar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
honest_scholar-0.1.0.tar.gz -
Subject digest:
6eb9a71ec99fc11320cd3ad59116072af353cace9ba439a0a86c52fbbb512bbb - Sigstore transparency entry: 2203539827
- Sigstore integration time:
-
Permalink:
davorrunje/honest-scholar@9fb8bb65e091dbdef0d876f8a1323abdf51d7a98 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/davorrunje
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9fb8bb65e091dbdef0d876f8a1323abdf51d7a98 -
Trigger Event:
release
-
Statement type:
File details
Details for the file honest_scholar-0.1.0-py3-none-any.whl.
File metadata
- Download URL: honest_scholar-0.1.0-py3-none-any.whl
- Upload date:
- Size: 52.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d9669003c2ca548f719451c60cabb6de1381115eb6f921a1206b392040a4658
|
|
| MD5 |
dfa467f649e8e85bbd5986059f18c8b8
|
|
| BLAKE2b-256 |
68dd27dd7edcb53094f06acdad39d243ea4bf5c3a9955dfc116e5f45aa59d33b
|
Provenance
The following attestation bundles were made for honest_scholar-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on davorrunje/honest-scholar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
honest_scholar-0.1.0-py3-none-any.whl -
Subject digest:
6d9669003c2ca548f719451c60cabb6de1381115eb6f921a1206b392040a4658 - Sigstore transparency entry: 2203539832
- Sigstore integration time:
-
Permalink:
davorrunje/honest-scholar@9fb8bb65e091dbdef0d876f8a1323abdf51d7a98 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/davorrunje
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9fb8bb65e091dbdef0d876f8a1323abdf51d7a98 -
Trigger Event:
release
-
Statement type: