Skip to main content

/usr/bin/cat for the LLM era

Project description

/usr/bin/cat for LLMs

llcat is an LLM program with very little ambition.

That's why it's awesome.

llcat

You can handle this!

llcat solves all your problems.

Yes. Every one.

It can also:

  • Pipe things from stdin and/or be prompted on the command line.
  • Store conversation history optionally, in a normal 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 -m without arguments. Specify a model with the argument.

Free Samples? Sure! It's Free Software.

  • pipx install llcat
  • uvx llcat

It's llcat, not llmcat. Let's keep it pronounceable.

Dependencies? Just the requests library.

Pretty unambitious. Pretty nice.

Examples

List the models on OpenRouter:

uvx llcat -s https://openrouter.ai/api -m

Go ahead, do that right now.

$ 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?"

$ llcat -s https://openrouter.ai/api \
        -m meta-llama/llama-3.2-3b-instruct:free \
        -c /tmp/convo.txt \
        -k $(cat openrouter.key) \
        "And what about Canada?"

Let's continue it locally

$ llcat -s http://192.168.1.21:8080 \
        -c /tmp/convo.txt \
        "And what about Japan?"

Pure sorcery.

Want to store state? Let's go!

$ source fancy.sh
...
$ llc "write a diss track where the knapsack problem hates on the towers of hanoi"

What goes in the ...?

You'll have to read the four lines of fancy.sh!

(Spoiler Alert: it sets environment variables and has a wrapper function)

The Tool Call To Rule Them All

This example, a very strange way to play mp3s, uses the sophisticated 21 line example_tool_program.py included in this repository.

It also uses DA`/50's pretty little streaming markdown renderer, streamdown.

tc

Kablam! Alright a16z where's my $50 million?

The enterprise applications are limitless...

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

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

llcat-0.3.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

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

llcat-0.3.0-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file llcat-0.3.0.tar.gz.

File metadata

  • Download URL: llcat-0.3.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.11

File hashes

Hashes for llcat-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c6c9fae362ac180054f27014e8cce7bea98b911f3abb4d0b9a8d1e187f4c2d8d
MD5 9527026cfff25d7452e4e6ec84536d39
BLAKE2b-256 0c4742700328759289bd5364abaa3fddb7550de12972d73a721a4be99f079402

See more details on using hashes here.

File details

Details for the file llcat-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: llcat-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.11

File hashes

Hashes for llcat-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f461248c7dd30d01e5a7ccc5ef6686c4a86aaa5605af8aa5ea991a619854ca49
MD5 cab5ebef4a0c15a08fcce141ab5c52b9
BLAKE2b-256 57df8359a4546db11fc0ab12a513501b115e5c278641ea3daf89b64e8a28a943

See more details on using hashes here.

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