clat 0.1.1

Command line assistance tool. Describe what you want in plain English; `clat` generates a shell script and runs it.
clat-0.1.1 is not a library.

clat

Command line assistance tool. Describe what you want in plain English; clat generates a shell script and runs it.

clat open a port, docker pull void-base, close port
clat compress all jpegs in this directory to 80% quality
clat show disk usage sorted by size for the current directory

Works with any OpenAI-compatible inference API — LM Studio, Ollama, or a remote API. Supports reasoning models (DeepSeek-R1, QwQ, etc.) — <think> blocks are stripped automatically.


Install

Homebrew (recommended)

brew tap OWNER/clat
brew install clat

From source

make install          # builds release binary → ~/.clat/clat

Or manually:

cargo build --release
mkdir -p ~/.clat && cp target/release/clat ~/.clat/clat

Then add ~/.clat to your PATH (if it isn't already):

# zsh
echo 'export PATH="$HOME/.clat:$PATH"' >> ~/.zshrc

# bash
echo 'export PATH="$HOME/.clat:$PATH"' >> ~/.bashrc

Configuration

Config lives at ~/.clat/config.toml — same directory as the binary. Created automatically on first run, or explicitly with clat --init.

api_url           = "http://localhost:1234/v1"   # OpenAI-compatible endpoint
model             = "local-model"                # model name (see: clat -l)
api_key           = ""                           # optional bearer token
auto_run          = false                        # true = always skip confirmation
use_tools         = true                         # false for models without tool-call support
auto_run_patterns = []                           # command names that skip confirmation
                                                 # e.g. ["git", "ls", "echo"]

# Optional: override the system prompt sent with every request
# system_prompt = "..."

Models

List models available from your inference server:

clat -l
# or directly:
curl http://localhost:1234/v1/models | jq '.data[].id'

Load a different model in LM Studio:

clat -L lmstudio-community/Meta-Llama-3-8B-Instruct-GGUF

Tool calls

When use_tools = true (the default), clat sends tool definitions with each request so the model can query the system before writing the script — for example checking which commands are installed, or reading the current OS and working directory. Set use_tools = false for models that don't support tool calling.

sudo

Scripts that contain sudo are passed directly to bash. The OS handles the password prompt natively — clat never sees your password.


Usage

clat [OPTIONS] <prompt>...
Flag Description
-y, --yes Skip confirmation, run immediately
-n, --dry-run Show generated script, don't execute
-l, --list List models available from the API
-L, --load <ID> Load a model in LM Studio (can combine with a prompt)
--model <MODEL> Override model for this invocation
--api <URL> Override API URL for this invocation
-v, --verbose Print prompt, API URL, model, and tool status
--config Show current config and its path
--init Write default config file (won't overwrite existing)

Examples

# Basic — shows generated script, asks to confirm
clat how much disk space do I have

# Skip confirmation
clat -y show my public IP address

# Dry run — see the script without executing
clat -n set up a Python venv and install requests

# List available models
clat -l

# Load a model then immediately run a prompt
clat -L lmstudio-community/Meta-Llama-3-8B-Instruct-GGUF find all TODO comments in this repo

# Override model for one call
clat --model llama-3-8b find all TODO comments in this repo

# Point at a remote API
clat --api https://api.openai.com/v1 --model gpt-4o summarise the git log

# Disable tool calls for models that don't support them
clat --api http://localhost:11434/v1 --model llama3 list open ports
# (or set use_tools = false in config)