Changes between Version 4 and Version 5 of Sllim


Ignore:
Timestamp:
10/04/26 00:52:31 (12 days ago)
Author:
Eli Carter
Comment:

Real overview

Legend:

Unmodified
Added
Removed
Modified
  • Sllim

    v4 v5  
     1= Sllim =
     2
    13[[Image(wordmark-black-on-white.svg)]]
    24
    3 Sllim is a command-line interface for running AI agents and interacting with LLM APIs.
     5Sllim is a command-line interface (a CLI, not a TUI) for running AI agents and interacting with LLM APIs.
     6
     7It 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.
     8The 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
     12I'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.
     13When 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.
     14The 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
     16When it comes to sandboxing, most tools look at the command the LLM wants to run, decide if it's "safe", and execute it.
     17That doesn't even pass a security sniff test.
     18You want the agent to write test cases and run them, which means you want it to run arbitrary code.
     19So 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.
     20Anything short of that eventually ends in `sudo rm -rf /*`, or worse.
     21
     22== What it does ==
     23
     24Each 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 ==
    441
    542{{{
    643git clone https://retracile.net/git/sllim.git
     44cd sllim
     45./run-all            # lint + tests + build the binary
     46cp output/sllim ~/bin/sllim
    747}}}
    848
    9 See the [blog:2026/08/08/18.00 original announcement] for an overview of motivation and how to get started.
     49Point it at a local model server and ask something:
     50
     51{{{
     52sllim provider create local --type dwarfstar --base-url http://spark-0000.lan:8888/v1
     53sllim model-config create default --provider local --model deepseek-v4-flash
     54sllim ask "Explain TCP vs UDP in one paragraph"
     55}}}
     56
     57For the agentic part, create a profile with a sandbox:
     58
     59{{{
     60sllim 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
     68cd ~/agent-workspace
     69sllim 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.