Skip to main content

how-tui

A terminal command assistant that uses LLMs to generate shell commands from natural language questions. Ask it how to do something and it will suggest commands for your specific OS and shell.

Features

  • Ask natural-language questions and get relevant terminal command suggestions
  • OS and shell aware — generates commands specific to your environment
  • Pluggable LLM provider system — easily add new providers
  • Authentication credentials stored securely in your OS keyring
  • Structured output via Pydantic for reliable command parsing
  • Selectable models for configured LLM providers

Installation

Install how-tui with uv:

uv tool install how-tui

Requirements

  • Python >= 3.14
  • An API key for a supported LLM provider

Usage

$ how
usage: how [-h] [--list-supported-providers] [--list-configured-providers] [--add-provider]
           [--remove-provider] [--set-default-provider]
           [prompt]

positional arguments:
  prompt                Question for the LLM

options:
  -h, --help            show this help message and exit
  --list-supported-providers
                        List all supported LLM providers
  --list-configured-providers
                        List your configured LLM providers
  --add-provider        Setup an LLM provider
  --remove-provider     Remove an LLM provider
  --set-default-provider
                        Remove an LLM provider

First-Time Setup

how --add-provider

This will walk you through selecting an LLM provider and authenticating.

Ask a question

how "compress a folder"
how "find all files larger than 100MB"
how "list all running docker containers"
how "rename multiple files at once"

Roadmap

  1. Logs — Add configurable logging for debugging provider interactions, request/response payloads, and errors.
  2. Tests — Add a comprehensive test suite covering CLI behavior, provider integration, config management, and command parsing.
  3. Descriptions for each command — Display a short explanation alongside each suggested command so users understand what it does before selecting.
  4. More LLM Providers - Add support for more LLM providers.

Supported Providers

Provider Status
Google Gemini Supported
Groq Supported

Adding a New LLM Provider

Drop a new Python file in src/how_tui/providers/ with a class that subclasses LLMProvider:

from abc import ABC, abstractmethod

from how_tui.models.command import CommandResponse


class LLMProvider(ABC):
    @staticmethod
    @abstractmethod
    def generate_commands(
        prompt: str,
        model: str,
    ) -> CommandResponse: ...

    @staticmethod
    @abstractmethod
    def authenticate(force: bool = False) -> None: ...

    @staticmethod
    @abstractmethod
    def unauthenticate() -> None: ...

    @staticmethod
    @abstractmethod
    def get_models() -> list[str]: ...

License

MIT

Release files for how-tui 1.0.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 how-tui 1.0.0
File Size Uploaded
how_tui-1.0.0.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for how-tui 1.0.0
File Interpreter ABI Platform
how_tui-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.4 kB

Release files / how_tui-1.0.0.tar.gz

Download URL how_tui-1.0.0.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6844d7d8c2a80ecde940011838c831412fc533b3e545750a9544b105b52a1c86
BLAKE2b-256 checksum
How to use checksums
b54f4b22b10d2f6733a30824d98d87da98805cb4cd46bc0fda702edf62bf9a10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / how_tui-1.0.0-py3-none-any.whl

Download URL how_tui-1.0.0-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf054a5489c27c6ca36bb6e73beea4816b431b50ef1e8d2c0e2b976b699159d1
BLAKE2b-256 checksum
How to use checksums
45851bcf362410fd3c6408f84c1564b58a2f8ab768ae2aeead9e89c35d9e14c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

This release

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