/usr/bin/cat for LLMs
Project description
/usr/bin/cat for LLMs
llcat is an unambitious dumb program for LLM I/O.
That's why it's great!
You can handle this!
Very Quick Start
Got 0.3 seconds to spare?
List the models on OpenRouter:
uvx llcat -s https://openrouter.ai/api -m
Run that right now.
I'll wait.
llcat solves all your problems.
Yes. Even that one.
It can also:
- Pipe things from stdin and/or be prompted on the command line.
- Store conversation history optionally, as a boring JSON file.
- Do tool calling using the OpenAI spec. There's an example in this repository (and below).
- Use local or remote servers, authenticated or not.
- List models using
-mwithout arguments. Specify a model with the argument.
Free Samples? Sure! It's Free Software.
- pipx install llcat
- uvx llcat
Dependencies? Just the requests library.
Note: It's llcat, not llmcat. Let's keep it pronounceable.
Examples
Start a chat with llama:
$ llcat -s https://openrouter.ai/api \
-m meta-llama/llama-3.2-3b-instruct:free \
-c /tmp/convo.txt \
-k $(cat openrouter.key) \
"What is the capital of France?"
Continue with Qwen:
$ llcat -s https://openrouter.ai/api \
-m qwen/qwen3-4b:free \
-c /tmp/convo.txt \
-k $(cat openrouter.key) \
"And what about Canada?"
And finish on the local network:
$ llcat -s http://192.168.1.21:8080 \
-c /tmp/convo.txt \
"And what about Japan?"
One conversation, hopping across models and servers.
Pure sorcery.
Summon Some More
Want to store state? Let's go!
$ source examples/fancy.sh
$ llc-server http://192.168.1.21:8080
$ llc "write a diss track where the knapsack problem hates on the towers of hanoi"
Go read the four lines of fancy.sh
Surprise! Environment variables and a wrapper function. That's all you need.
The Tool Call To Rule Them All
This example, a very strange way to play mp3s, uses the sophisticated 21 line tool_program.py included in this repository. Some people call it MCP, llcat calls it subprocess.run.
This demo also uses DA`/50's pretty little streaming markdown renderer, streamdown.
Kablam! Alright a16z where's my $50 million?
The enterprise applications are limitless...
Conversant Conversations?
Sure! Conversation.sh is six lines of bash.
It even has inspectable tool calls and realtime observability with Human-in-the-Loop! Wowza! I'll settle for merely $40 million.
Boring Documentation
usage: llcat [-h] [-c CONVERSATION] [-m [MODEL]] [-k KEY] [-s SERVER]
[-tf TOOL_FILE] [-tp TOOL_PROGRAM]
[prompt ...]
positional arguments:
prompt Your prompt
options:
-h, --help show this help message and exit
-c, --conversation CONVERSATION
Conversation history file
-m, --model [MODEL] Model to use (or list models if no value)
-k, --key KEY API key for authorization
-s, --server SERVER Server URL (e.g., http://::1:8080)
-tf, --tool_file TOOL_FILE
JSON file with tool definitions
-tp, --tool_program TOOL_PROGRAM
Program to execute tool calls
Now it's your turn.
Brought to you by DA`/50: Make the future obvious.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llcat-0.7.tar.gz.
File metadata
- Download URL: llcat-0.7.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25cd7774e1a7e3949de115958f07a69bf85c9cd64457e7567034dbf7aed17ffa
|
|
| MD5 |
3c8881cae7e24915aae9fd43e05ad8ab
|
|
| BLAKE2b-256 |
104da25a9e9a124f3136a378a4a683c0b8a9bfa7418bfa9c8e9a90c3dbfd766f
|
File details
Details for the file llcat-0.7-py3-none-any.whl.
File metadata
- Download URL: llcat-0.7-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6748cbeeacc274513b62a3c7caf693c76ee362a6fc70900ce819f498787ae46
|
|
| MD5 |
d865acdebe547ca9db87a109131cea46
|
|
| BLAKE2b-256 |
c6a0c10221f54235a0793f7859bdd7763bf1098e0573064c36707c3779d47bb4
|