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.
. <(curl -fsSL solo.luxferre.top/solo)
curl -fsSLO https://solo.luxferre.top/solo chmod +x solo ./solo
Dependencies: bash, curl,
jq, coreutils timeout command.
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.
| Command | Effect |
|---|---|
| /help | Print the built-in command list |
| /quit | Leave the agent and restore the host shell |
| /clear | Drop the history, keep the system prompt |
| /models | List 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 |
| !cmd | Run a shell command yourself, with no agent and no tokens spent |
| Ctrl-D | End of input exits as cleanly as /quit |
| Variable | Default | Meaning |
|---|---|---|
| SOLO_ENDPOINT | https://api.kilo.ai/api/openrouter | Base LLM endpoint URL |
| SOLO_MODEL | openrouter/free | Any model id the endpoint serves |
| SOLO_TEMP | 0.7 | Sampling temperature |
| SOLO_REASON | high | Reasoning effort level |
| SOLO_API_KEY | unset | Optional API token |
| SOLO_TIMEOUT | 120 | Tool call timeout, in seconds |
| SOLO_TMPDIR | $TMPDIR/solo | Scratch space for temporary artifacts |
| SOLO_SYSPROMPT | built-in | Replaces the system prompt entirely |
| SOLO_SKILLS | unset | Directory of skills |
| SOLO_TOOLS | unset | Directory of extra shell tools |
| NO_COLOR | unset | Disables ANSI colors |