I've been working on something in a similar class for about a year called llcat
It was born out of the lack of LLM-native unix-friendly tools that work like cURL, awk and sed.
I couldn't find any so I wrote one myself.
I knew I wanted a reference that is stateless, explicit, low-level, and composable without modal settings.
For instance, instead of config files, llcat can index into files with built-in jq-syntax and line numbers. Then it can the save invocations for later:
llcat --save invocation.json \
-k "@~/credentials.txt:12" \
-u "@settings.json:.[3].host" \
-s "@system_prompts:8" \
-m "@settings.json:.[3].model" \
"@query.txt:12" > output.txt
and then
llcat --load invocation.json { ... parameters you want to override ... }
It's easy to send to colleagues over chat or keep them invocations in a shared network folder.
Conversations are also just JSON files. You can have a different input and output one. This means you can do stuff like
for i in *; do
# use a non-mutable conversation
# apply it over a group of files with standard unix pipes
cat "$i" | llcat --load settings.json -cr context.json > ../results/"${i}.output"
# or use attachments
llcat --load settings.json -a "$i" -cr context.json > ../results/"${i}.output"
# or save the whole context
llcat --load settings.json -a "$i" -cr context.json -c ../results/"${i}.output" > /dev/null
done
One of my favorite patterns is this one:
llcat -k @~/secrets.json:.anthropic -u api.anthropic.com
llcat -k @~/secrets.json:.openrouter -u openrouter.ai/api
Since there's no hidden state you can use llcat in shell scripts and get operational guarantees.
I've put a lot of effort into it and use it daily. If you can give it a go and give me feedback and file bugs, I'd love it.
https://github.com/day50-dev/llcat
It was born out of the lack of LLM-native unix-friendly tools that work like cURL, awk and sed.
I couldn't find any so I wrote one myself.
I knew I wanted a reference that is stateless, explicit, low-level, and composable without modal settings.
For instance, instead of config files, llcat can index into files with built-in jq-syntax and line numbers. Then it can the save invocations for later:
and then It's easy to send to colleagues over chat or keep them invocations in a shared network folder.Conversations are also just JSON files. You can have a different input and output one. This means you can do stuff like
One of my favorite patterns is this one: Since there's no hidden state you can use llcat in shell scripts and get operational guarantees.I've put a lot of effort into it and use it daily. If you can give it a go and give me feedback and file bugs, I'd love it.
https://github.com/day50-dev/llcat