Skip to main content

WhatTheShell

Deutsche Dokumentation: Handbuch in der App (Buch-Symbol) und auf GitHub.

WhatTheShell is a Linux program with a graphical interface in which you click command-line tools together like building blocks into workflows, run them, and evaluate their output. Everything runs locally; previews and interactive programs are always executed inside a bubblewrap sandbox.

Status: beta. CLI, web GUI with node graph and block view, module editor, user prompts in runs, optional AI features, embedded terminal for interactive programs, in-app manual (English and German).

What it does

  • Finds installed CLI tools and reads their options, types and help texts (with a confidence rating).
  • Describes tools as modules (YAML), which you can scaffold, validate and hot-reload.
  • Composes modules into workflows in a node graph or block view, with a dry-run plan that shows danger classes.
  • Runs workflows with confirmation for caution and dangerous steps and evaluates the output.
  • Runs module examples and previews in a sandbox (bwrap).
  • Embedded terminal for interactive programs such as vim, less or top (GUI only, always sandboxed).
  • Optional AI features (off by default): improve modules, draft workflows, diagnose failures.

Requirements

Linux, Python >= 3.11, and bubblewrap (bwrap) for previews, examples and terminal steps (interactive programs run only in the GUI, always in the sandbox; rules in docs/SECURITY.md, section 7).

Tested on Ubuntu (CI) and Fedora (development). The code contains nothing distribution-specific; only bwrap, setsid and prlimit (util-linux) are needed. wts sandbox shows what is missing, with the install command for your distribution.

Install

sudo apt install bubblewrap pipx          # or your distribution's package manager
pipx install whattheshell
wts gui

Or from a wheel (CI artifact / release): pipx install ./whattheshell-0.0.1-py3-none-any.whl.

Node is only needed for building, not at runtime: the wheel contains the finished frontend.

Start and stop

wts gui start               # start in the background, open the browser (if already running: browser only)
wts gui status              # port, PID, uptime; exit code 3 = not running
wts gui stop                # stop (SIGTERM, SIGKILL after 5 s)
wts gui                     # foreground, Ctrl+C stops; a second `wts gui` does not start a second server
wts gui --install-desktop   # menu entry "WhatTheShell" (~/.local/share/applications), calls `wts gui start`

State: $XDG_RUNTIME_DIR/whattheshell/gui.json; background server log: ~/.cache/whattheshell/gui.log.

Quick CLI overview

wts tools --search grep          # find installed tools
wts inspect grep                 # options, types, help texts, confidence (modules included)
wts scaffold wc --user           # module skeleton in ~/.config/whattheshell/modules/
wts validate file.module.yaml    # check a module or workflow
wts modules [--watch]            # loaded modules, hot reload
wts sandbox                      # bwrap self-test with install hint
wts example grep                 # run module examples in the sandbox
wts run workflow.yaml --dry-run  # plan with danger classes, nothing is executed
wts workflows                    # library: bundled, ~/.config/whattheshell/workflows, ./.whattheshell/workflows
wts run workflow.yaml|ID         # run with confirmation for caution/dangerous steps
wts gui                          # web UI on 127.0.0.1 with session token
wts ai status                    # AI features (off by default): enable, check, config set, improve-module, examples, draft-workflow, diagnose
wts terminal transcripts         # list transcripts of terminal steps, --delete NAME removes one

Security in five bullets

  • No shell: commands are never built by string concatenation and never run with shell=True.
  • Commands are always an argv list; display uses shlex.quote only. Workflow files are untrusted and never executed on load.
  • Previews, examples and the embedded terminal run only inside a bwrap sandbox; there is no unprotected fallback.
  • The web API listens on 127.0.0.1 only, with a session token and Origin/Host checks, no CORS, never as root.
  • AI is off by default, its code path is unreachable while off, and its answers are untrusted: never executed, only shown as a diff for approval.

Details: docs/SECURITY.md.

Documentation

Updating

wts gui stop                              # stop the running server (running workflows are aborted)
pipx upgrade whattheshell                 # or uv tool upgrade whattheshell / pip install -U whattheshell
wts gui start

Settings (~/.config/whattheshell), your own modules and workflows are kept; they live outside the package. There is deliberately no update from within the running app (see docs/DECISIONS.md, D-017).

Release and development

git tag vX.Y.Z && git push --tags builds the wheel and attaches it to the GitHub release. Every release ships a CycloneDX SBOM (wts --sbom). The same workflow publishes to PyPI via trusted publishing (GitHub environment pypi). Step by step: docs/RELEASING.md.

uv sync --group dev
uv run wts --version
uv run ruff check . && uv run ruff format --check .
uv run mypy
uv run pytest

License

Copyright (C) 2026 Luk007x. Code: AGPL-3.0-or-later (see LICENSE). Bundled modules and workflows (src/whattheshell/bundled/): CC0-1.0. Security concept: docs/SECURITY.md.

Metadata

Release files for whattheshell 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 whattheshell 0.1.0
File Size Uploaded Provenance
whattheshell-0.1.0.tar.gz 1.1 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for whattheshell 0.1.0
File Interpreter ABI Platform
whattheshell-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / whattheshell-0.1.0.tar.gz

Download URL whattheshell-0.1.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
339c0f0c0fafad08bca0830a8603352ab61615d704785848b3bd84925760d0b0
BLAKE2b-256 checksum
How to use checksums
0a5e4f99b2e33db37cef5c98d3a6d9511927768050eefa8aaed63a034dd1b568
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 Oct 19, 2026.

Transparency log

Release files / whattheshell-0.1.0-py3-none-any.whl

Download URL whattheshell-0.1.0-py3-none-any.whl
Size 731.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d61677471a27a8f8935cfc7ce88d0ce7565ace40d3695598b6f3658922a6b03
BLAKE2b-256 checksum
How to use checksums
acea466573f3ed1471ac7fc59910809b2385111fde33b5d844cf8cfb231ff974
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 Oct 19, 2026.

Transparency log

Security for whattheshell 0.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for whattheshell-0.1.0.tar.gz

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 Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

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