Skip to main content

shelp

CI

cmd? → TL;DR. cmd?? → a full, man-page-grounded cheat sheet. ?? → chat. All backed by your choice of model via OpenRouter (or any local OpenAI-compatible server) — no agent harness, no vendor lock.

$ jq?                     # TL;DR — one-liner + 5 common invocations
$ ffmpeg??                # full sheet: tasks · flags · gotchas · preview safely
c) chat · r) regenerate · q) quit
$ tar?? list a tar.gz     # sheet + inline answer
$ ??                      # general chat (shelp's own agentic loop)

(IPython muscle memory: obj? → docstring, obj?? → source.)

Setup

Python 3.11+, plus either an OpenRouter key or any OpenAI-compatible endpoint:

uv tool install shelp-llm         # PyPI dist name; installs the `shelp` command
export OPENROUTER_API_KEY=sk-or-…
shelp init zsh && exec zsh        # or: shelp init bash && exec bash

(pipx install shelp-llm works too; uvx --from shelp-llm shelp jq tries it without installing.) Straight from the repo instead of PyPI:

uv tool install git+https://github.com/HenryNebula/shelp

Upgrades: uv tool upgrade shelp-llm — or for a git install, re-run its install command.

uv tool install shelp-llm
shelp init powershell             # writes shelp.ps1 + a line in $PROFILE

Works in Windows Terminal and in pwsh on macOS/Linux. PS 5.1 gets the same Enter-handler layer (only the CommandNotFoundHandler fallback needs PSReadLine ≥ 2.3.6, probed at load). The trigger intercepts the raw buffer before PowerShell parses it, so bare ?? works even though PS 7 defines ?? as an operator. Question text travels via an env var (PS 5.1 mangles quotes in native args), and cmdlet triggers (Get-ChildItem??, gci?) harvest Get-Help — via one PowerShell spawn on the generation path only, so cache hits stay fast.

Chat's tool speaks your shell (the plugin stamps it): PowerShell in PS sessions, bash in Git Bash (with MSYS_NO_PATHCONV=1 so /etc in a question isn't rewritten to a Windows path), never cmd.exe. Sheets for Windows exes that answer /? instead of --help (ipconfig, robocopy) are harvested too.

For development: clone, uv sync, then uv run shelp … (.envrc.example shows optional uv cache/venv relocation), or uv tool install --editable . for a live-installed copy. Releases: push a v* tag — CI builds the wheel, attaches it to a GitHub Release, and publishes to PyPI as shelp-llm (.github/workflows/release.yml).

Config (environment, all optional except the key with remote providers):

var default
SHELP_API_KEY / OPENROUTER_API_KEY — provider key (unneeded for local servers)
SHELP_MODEL nvidia/nemotron-3-ultra-550b-a55b:free any OpenRouter slug
SHELP_CHAT_MODEL = SHELP_MODEL stronger model for chat if you like
SHELP_BASE_URL https://openrouter.ai/api/v1 any OpenAI-compatible endpoint
SHELP_CACHE_DIR $XDG_CACHE_HOME/shelp (else ~/.cache/shelp; Windows: %LOCALAPPDATA%\shelp\cache) sheets + chat sessions
SHELP_NO_PAGER unset never page long sheets

The default model is on OpenRouter's free tier (≈20 req/min, 200 req/day — plenty for sheet generation). Free variants come and go, and some keys restrict which providers they may use — if you get a 404 "no allowed providers", point SHELP_MODEL at another :free slug.

Fully offline: export SHELP_BASE_URL=http://localhost:30000/v1 SHELP_API_KEY=local SHELP_MODEL=qwen3.5-4b (llama-server's OpenAI endpoint). Tool calling in chat depends on the local model's support for it.

The chat (??, c, shelp chat <cmd>)

shelp's own agentic loop — ~150 lines, no framework:

  • streams replies; one tool: shell (bash on POSIX, PowerShell on Windows — the shell the plugin stamped, so a Git Bash session gets bash, never cmd.exe)
  • read-only lookups (man, --help, Get-Help, Get-ChildItem, which, ls, cat, grep, pipes of those) auto-run; anything else asks y/N first (chaining, redirection, substitution, or unknown commands)
  • sessions persist per command under the cache dir and resume on re-entry; shelp chat <cmd> --new starts clean; q/Ctrl-D exits

Commands

shelp <cmd> [--refresh] [--raw] [--short] sheet / TL;DR
shelp chat [cmd] [question] [--new] agentic chat
shelp warm tar rsync ffmpeg pre-generate sheets
shelp list / prune [--older-than Nd] [--all] cache management
shelp doctor [--live] provider check + ping

Sheets are grounded in the local man page + --help (so they match the installed flavor/version), cached with hash invalidation, and hand-editable — shelp show --raw <cmd> then set pinned: true in the front-matter to opt out of auto-regeneration. First generation per command: ~5–15s depending on provider (it streams while generating); after that: ~0.2s.

Design notes: DESIGN.md.

License

MIT — see LICENSE.

Release files for shelp-llm 0.5.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 shelp-llm 0.5.0
File Size Uploaded
shelp_llm-0.5.0.tar.gz 75.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shelp-llm 0.5.0
File Interpreter ABI Platform
shelp_llm-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 106.2 kB

Release files / shelp_llm-0.5.0.tar.gz

Download URL shelp_llm-0.5.0.tar.gz
Size 75.1 kB
Tags Source
SHA-256 checksum
How to use checksums
62143cbe54b16e6db543d8fa9b621867f799171160878d8b1027d5d91ae1d29e
BLAKE2b-256 checksum
How to use checksums
f053702ebbbced61d8a5c3efa0e16c2800010c372f7dc9e3c010969b2ff423ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Sep 27, 2026.

Transparency log

Release files / shelp_llm-0.5.0-py3-none-any.whl

Download URL shelp_llm-0.5.0-py3-none-any.whl
Size 31.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e0941bcfd9777c0b2da2c8b2fafd4aa8ac235b4a50cc666667f05d23e5599af
BLAKE2b-256 checksum
How to use checksums
c170e431c8cb180fd2868d5a18b3032685bf15e6d91095557466f43071b6a3fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.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