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
npm i -g @lowcostllm/agent
lcllm auth login # paste your API key
cd ~/code/your-project
lcllm # starts a session in this directoryModel 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.
lcllm --model claude-haiku-4-5 # start cheap
# inside a session:
/model claude-sonnet-4-5 # escalate
/cost # spend so far this sessionPermissions
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.
[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.