~/solo 85 lines 1 file 3 deps 1 tool public domain

Solo_

A coding agent in 85 SLOC of Bash with exactly one tool: the shell.
Running commands is the only thing it knows how to do,
and the only thing it does.

Get Solo

Straight into your Bash shell as a function

. <(curl -fsSL solo.luxferre.top/solo)

Or keep the file and run it later

curl -fsSLO https://solo.luxferre.top/solo
chmod +x solo
./solo

Dependencies: bash, curl, jq, coreutils timeout command.

REPL commands

Any line not starting with / or ! is sent to the agent as a task. A trailing backslash continues the prompt onto the next line, so multi-line input needs no quoting.

Commands understood by the prompt loop:
CommandEffect
/helpPrint the built-in command list
/quitLeave the agent and restore the host shell
/clearDrop the history, keep the system prompt
/modelsList model ids offered by the endpoint
/api_key [key|null]Show, set or clear the API token. null, none, off or - clears it
/endpoint [url]Show or set the API base URL
/name [value]Set any request parameter, e.g. /model stealth/yet-another-cool-model, /temperature 0.5, /reasoning_effort low. With no value it prints the current one
!cmdRun a shell command yourself, with no agent and no tokens spent
Ctrl-DEnd of input exits as cleanly as /quit

Environment variables

Every knob, with the value used when it is unset:
Variable Default Meaning
SOLO_ENDPOINThttps://api.kilo.ai/api/openrouterBase LLM endpoint URL
SOLO_MODELopenrouter/freeAny model id the endpoint serves
SOLO_TEMP0.7Sampling temperature
SOLO_REASONhighReasoning effort level
SOLO_API_KEYunsetOptional API token
SOLO_TIMEOUT120Tool call timeout, in seconds
SOLO_TMPDIR$TMPDIR/soloScratch space for temporary artifacts
SOLO_SYSPROMPTbuilt-inReplaces the system prompt entirely
SOLO_SKILLSunsetDirectory of skills
SOLO_TOOLSunsetDirectory of extra shell tools
NO_COLORunsetDisables ANSI colors