| 3 | | Sllim is a command-line interface for running AI agents and interacting with LLM APIs. |
| | 5 | Sllim is a command-line interface (a CLI, not a TUI) for running AI agents and interacting with LLM APIs. |
| | 6 | |
| | 7 | It talks to Ollama and OpenAI-compatible endpoints, whether from an API provider (such as fireworks.ai) or !DwarfStar on a local DGX Spark running !DeepSeek-v4-Flash. |
| | 8 | The central agentic tool of Sllim is a real bash shell, generally sandboxed in a VM with filtered networking and scoped filesystem access. |
| | 9 | |
| | 10 | == Why I built it == |
| | 11 | |
| | 12 | I've spent much of my career building tools for software engineering, and I'm a CLI kind of guy: my "IDE" is a grid of terminals, and I reach for `grep` over a code-navigation tool. |
| | 13 | When I first saw an Open Source model with a `bash` tool write a full-page Python script, properly escaped to execute in bash, and it worked, I knew I wanted to harness that. |
| | 14 | The existing harnesses didn't fit my hand; most are TUIs claiming to be CLIs, and it seems all take a wrong-headed approach to sandboxing. |
| | 15 | |
| | 16 | When it comes to sandboxing, most tools look at the command the LLM wants to run, decide if it's "safe", and execute it. |
| | 17 | That doesn't even pass a security sniff test. |
| | 18 | You want the agent to write test cases and run them, which means you want it to run arbitrary code. |
| | 19 | So you must constrain what it can do instead: scoped access to specific directories, whitelist-filtered internet through a proxy, harness code that runs outside the sandbox, and LLM actions that execute inside it. |
| | 20 | Anything short of that eventually ends in `sudo rm -rf /*`, or worse. |
| | 21 | |
| | 22 | == What it does == |
| | 23 | |
| | 24 | Each level of AI interaction is supported: |
| | 25 | |
| | 26 | * `sllim ask` is non-agentic: one prompt, one response. Great for code review - feed it a git diff with context plus a task description, and get back a list of concerns. |
| | 27 | * `sllim act` is agentic: the model gets a shell tool and can spawn sub-agents, looping until it stops. |
| | 28 | * `sllim goal` wraps `act` in a loop with an evaluation command before each attempt. Define what "goal met" means, hand it off, and let it cook. |
| | 29 | |
| | 30 | == Features == |
| | 31 | |
| | 32 | * Multiple sandbox options: `host` (dangerous), `remote` over ssh, `container` via podman with configured volume mounts, and, most powerfully, `vm` with virtiofs-based shared directories and filtered networking. The VM proxy whitelist grants access to specific URL patterns and HTTP verbs. |
| | 33 | * Transparent; no spinner hiding the action. It streams responses as they arrive, and shows tool calls being built up token-by-token so you see the command stream in, then the output stream back. |
| | 34 | * Logging to text-based formats (YAML, JSON, JSONL) building up a pile of data you can mine later for test cases, debugging, or even model training. |
| | 35 | * Conversation history that lets you resume any session with `--continue` or `--continue-from`. |
| | 36 | * Cost accounting. Per-turn tokens and dollars, including cached tokens and sub-agent totals. |
| | 37 | * A single self-contained binary. A shiv-built zipapp (~25 MB) that runs on any Python 3.11+ Linux box, with no virtualenv or package install on the target. |
| | 38 | * Loop detection, with retry, so a spiraling model stops burning tokens instead of running forever. |
| | 39 | |
| | 40 | == Quick start == |
| 9 | | See the [blog:2026/08/08/18.00 original announcement] for an overview of motivation and how to get started. |
| | 49 | Point it at a local model server and ask something: |
| | 50 | |
| | 51 | {{{ |
| | 52 | sllim provider create local --type dwarfstar --base-url http://spark-0000.lan:8888/v1 |
| | 53 | sllim model-config create default --provider local --model deepseek-v4-flash |
| | 54 | sllim ask "Explain TCP vs UDP in one paragraph" |
| | 55 | }}} |
| | 56 | |
| | 57 | For the agentic part, create a profile with a sandbox: |
| | 58 | |
| | 59 | {{{ |
| | 60 | sllim profile create agent \ |
| | 61 | --model-config default \ |
| | 62 | --sandbox-type vm \ |
| | 63 | --base https://mirror.servaxnet.com/fedora/linux/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2 \ |
| | 64 | --add-vol "$HOME/agent-workspace:$HOME/agent-workspace" \ |
| | 65 | --network filtered \ |
| | 66 | --dnf-mirror https://mirrors.fedoraproject.org \ |
| | 67 | --yolo |
| | 68 | cd ~/agent-workspace |
| | 69 | sllim act "List the files here and tell me what each is for" |
| | 70 | }}} |
| | 71 | |
| | 72 | == Going further == |
| | 73 | |
| | 74 | * The [[https://retracile.net/blog/2026/08/08/18.00|announcement post]] tells the story in more detail, and other posts about Sllim can be found in [[https://retracile.net/blog/category/sllim|the Sllim catagory]]. |
| | 75 | * [[/browser/sllim|Browse the source]] for the full picture. |
| | 76 | * [[https://retracile.net/git/sllim.git|Clone the repository]] and give it a try. |