A terminal assistant that runs on a model on your own machine. It runs commands, reads your files and changes them, and asks before anything changes.

curl -fsSLo lokal https://download.guimadaleno.com/lokal/0.3.0/lokal && chmod +x lokal && ./lokal --install

Version 0.3.0, for Linux and WSL on x86-64. One file, which installs itself in ~/.local/bin and keeps itself up to date. Its SHA-256 is in SHA256SUMS.

Lokal 0.3.0  qwen3.8-27b
> is the web container running?

$ docker ps -a --filter name=web --format '{{.Names}} {{.Status}}'

  web Exited (0) 2 hours ago

It's stopped: it exited 2 hours ago.
────────────────────────────────────────────────────────────────────────────────────────────────> start it

$ docker start web

  Starts the stopped container web.
  Run it?
    Yes
    Yes, and don't ask again this session
    Yes, and don't ask again in this project
  › No

Your model, your machine

LM Studio, or any server that speaks the OpenAI API. Lokal finds it on its own, from WSL too.

Asks before it acts

Read-only commands run at once. Anything else waits for your yes, and every file change shows its diff first.

Quiet

Its reasoning shows in a small window that clears itself, so only the answer stays. Beside the breathing dot: what it's doing, and for how long.

Set up LM Studio

About five minutes, once.

  1. Install LM StudioFrom lmstudio.ai, on the machine that will run the model.
  2. Download a model that can use toolsLM Studio marks the models that support tool use; Lokal needs one to run commands and edit files.
  3. Load it with room to workA context length of 32k tokens or more: command output and files fill it up.
  4. Start the serverIn the Developer tab, switch the server on. Lokal looks for it on port 1234.
  5. Using WSL? Let it reach WindowsTurn on "Serve on Local Network" in the server's settings. LM Studio runs on Windows, and WSL reaches it over the network; Lokal finds the address by itself.
  6. Run lokalThat's it. To pin a server or a model, write them in ~/.config/lokal/config.

What it won't do

Lokal is defined as much by what it refuses.