Bash4LLM is a single-file Bash wrapper for interacting with LLMs from the terminal. I created it because I wanted something simple that worked without installing Python, Node, or any other runtime.
It uses only Bash, curl, and jq. You can send prompts, start a small chat, process files line by line, stream output, and save session metadata in JSON format.
I tried to make it safe and predictable: no use of the system /tmp, no use of eval. Groq is supported by default, and other providers can be added with dedicated Bash scripts in the extras/providers/ folder.
Example:
echo "explains the command: ls -l" | ./bash4llmwell, i write Bash4LLM to be:
. Portable - You need only: bash, coreutils, findutils, util-linux, gawk, curl, jq. No Python (slow), no Node (heavy), no Golang (need too many binaries, one for each OS, hard to maintain for one single person like me).
. Single file - only one. I write many extras, but all are optional.
. Idempotent - you copy it where you want and go!
. Transparent - open the file and read.
. Extras for all, and all optional: help file, extra providers, improved session engine, small GUI/CGI, etc...
Default (embedded) provider is Groq, because when I start the project, was the best free API service for AI.
I'm ready to answer to your question... with my terrible english...
Cristian (kamaludu)
You really should either just write it manually, or at least clean it up, 5kLOC of bash for POSTing and reading/writing files is a bit overkill (the code is extremely repetitive, verbose and just hard to follow).