Install & configure

The terminal agent, model selection, and permissions.

Last updated 2026-08-19edit on github

A terminal coding agent that runs on the models you are already paying half price for. It is a fork of pi.dev, open source, so you can read exactly what it does before you let it near a repository.

Install

shell
npm i -g @lowcostllm/agent

lcllm auth login          # paste your API key
cd ~/code/your-project
lcllm                     # starts a session in this directory

Model selection

Set a default per project and switch mid-session. The point of cheap tokens is that you can start on a small model and escalate only when the task earns it.

shell
lcllm --model claude-haiku-4-5      # start cheap

# inside a session:
/model claude-sonnet-4-5           # escalate
/cost                              # spend so far this session

Permissions

The agent asks before it does anything irreversible. You can widen that per project, but the defaults assume it should not surprise you.

  • Read — allowed by default within the project directory.
  • Edit — shows a diff and asks, unless allowlisted.
  • Run — asks for every command. Allowlist the safe ones (npm test, git status) and keep the prompt for the rest.
  • Network — denied by default. Nothing leaves the machine except the model request itself.

There is a --yolo flag that skips every prompt. It exists because people ask for it, and it is genuinely useful inside a container you are willing to throw away. Do not run it on a machine you care about, and do not run it on a repository with uncommitted work.

Project config

Commit .lcllm/config.toml so everyone on the team gets the same behaviour.

.lcllm/config.toml
[model]
default = "claude-sonnet-4-5"
escalate_to = "claude-opus-4-1"

[permissions]
edit = "ask"
run  = "allowlist"
allowlist = ["npm test", "npm run lint", "git status", "git diff"]
network = "deny"

[budget]
# Hard stop. The agent exits rather than exceeding this in one session.
session_limit_usd = 5.00

[context]
ignore = ["node_modules", "dist", ".next", "*.lock"]

Every session writes an audit log of the commands it ran and the diffs it applied to .lcllm/sessions/. It is gitignored by default, and it is the first thing to read when the agent did something you did not expect.