Skip to main content

LLM-powered shell command explainer and generator.

Project description

jwshell

LLM-powered shell command explainer and generator.

jwshell takes a single string and either:

  • explains it, when the string is a valid bash/zsh command or expression, or
  • generates a command, when the string is a natural-language description of a desired effect.

It uses OpenRouter under the hood.

Install

Requires Python 3.12+. The recommended workflow uses uv.

git clone https://github.com/janwychowaniak/jwshell.git
cd jwshell
uv sync

To install globally as a CLI:

uv tool install .

Configure

export JWSHELL_OR_APIKEY="sk-or-..."        # required
export JWSHELL_OR_MODEL="openai/gpt-5.2"    # optional, defaults to anthropic/claude-haiku-4.5

Use

Explain a command (brief):

jwshell "ls -la"

Explain a command in detail:

jwshell -v "find . -name '*.py' -mtime -1"

Generate a command from a description:

jwshell "list every python file modified today"

Override the model for a single call:

jwshell --model anthropic/claude-sonnet-4.6 "tar all logs older than 7 days"

Development

uv sync               # install runtime + dev deps
uv run ruff check .   # lint
uv run ruff format .  # format
uv run mypy           # strict type-check
uv run pytest         # tests

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jwshell-0.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jwshell-0.1.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file jwshell-0.1.0.tar.gz.

File metadata

  • Download URL: jwshell-0.1.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jwshell-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b90767e4a58a5ccb45b9642315c7f0fa10389da8cc1c880f3c711a2a13adceeb
MD5 ee6418dfe38f001d96616b47fb26be03
BLAKE2b-256 72a37a6f6fdb912076d3f46dbd3db0ecbbe8a29553c45ac88bb10a137cf07479

See more details on using hashes here.

Provenance

The following attestation bundles were made for jwshell-0.1.0.tar.gz:

Publisher: release.yml on janwychowaniak/jwshell

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jwshell-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jwshell-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jwshell-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 641e27fc0abb296a46a26cd280174b5b3d20fda75dab147ce30ce24c2aaf2d6f
MD5 8c823c1003ba9db57f56b90cdd9343f7
BLAKE2b-256 d0e71d9cf860949a0eca615b0b3c149f4c8ee83accb13fedb8d40b5215843b64

See more details on using hashes here.

Provenance

The following attestation bundles were made for jwshell-0.1.0-py3-none-any.whl:

Publisher: release.yml on janwychowaniak/jwshell

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page