Skip to content

Releases: nasser1941/lcode

lcode 0.6.1

Choose a tag to compare

@nasser1941 nasser1941 released this 01 Oct 16:40
7b1e232

Fixed

  • Tools marked free_gpu (such as ComfyUI's run_workflow) now always run to completion (wait: true). A job left running in the background competed with lcode's reloading model for the GPU.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli · Homebrew: brew upgrade lcode

Full changelog: v0.6.0...v0.6.1

lcode 0.6.0: images

Choose a tag to compare

@nasser1941 nasser1941 released this 01 Oct 13:43
3336edc

lcode can see images, and make them with your local models.

❯ the layout breaks on mobile, see @screenshots/mobile.png

Added

  • Looking at images:

    • Attach a screenshot, mockup or diagram with @path, or let the model open images itself with the new view_image tool.
    • A model that can see describes the image in detail, with all text transcribed and your question in mind. That's your model itself if it can see, or the original model behind lcode's text-only variant, which lcode setup already downloaded (vision_model setting; lcode doctor shows which).
    • Screenshots returned by MCP tools, such as Playwright's, are described too.
  • Making images: lcode mcp add comfyui generates and edits images with models you run locally in ComfyUI (FLUX.2 Klein, FLUX.1 Dev/Kontext, SDXL, SD 1.5, Qwen-Image), through ComfyUI's official MCP server. Only its local tools are enabled, so nothing leaves your machine.

  • Sharing one GPU (free_gpu): before MCP tools that need the GPU to themselves run, lcode unloads its own model and reloads it afterwards. It's on for ComfyUI, so image models work on a 12 GB GPU next to a large coding model.

    Measured on an RTX 4080 Laptop (12 GB): about 12 s per 512×512 FLUX.2 Klein image, plus about 20 s to reload qwen3.6-35b.

Docs: Images · Images with ComfyUI

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli · Homebrew: brew upgrade lcode

Full changelog: v0.5.0...v0.6.0

lcode 0.5.0: sandbox

Choose a tag to compare

@nasser1941 nasser1941 released this 01 Oct 10:29
d869f1f

An optional sandbox for the model's shell commands. Let lcode work more independently without giving it your whole machine.

lcode --sandbox                    # this session
lcode config set sandbox docker    # every session (or podman)

Added

  • Isolated commands: with the sandbox on, the model's shell commands run in a container (Docker or Podman) that only sees your project folder. Your home folder, SSH keys, cloud credentials and other projects aren't there, and neither is the network unless you allow it (/sandbox network on).
  • Locked down: commands run as your user (files belong to you), with no Linux capabilities and a process limit.
  • File tools too: lcode's file tools are limited to the project while the sandbox is on.
  • Default image: built locally on first use (about a minute), with Python, Node.js, git, build tools and ripgrep. sandbox_image sets your own.
  • Fewer prompts: in auto-edit mode, sandboxed commands run without asking. They can only reach the project, and /undo takes their changes back.
  • Fails safe: if the sandbox can't start, lcode stops instead of running commands without it.

Docs: Sandbox, including what it doesn't cover.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli · Homebrew: brew upgrade lcode

Full changelog: v0.4.1...v0.5.0

lcode 0.4.1: Homebrew

Choose a tag to compare

@nasser1941 nasser1941 released this 01 Oct 09:17
5cbd74b

lcode is on Homebrew.

brew install nasser1941/tap/lcode
lcode setup

Added

  • Homebrew: brew install nasser1941/tap/lcode works on macOS (Apple Silicon and Intel) and on Linux. The tap tests the formula on both, and updates it automatically for each release about a day after it's published.
  • Python 3.14 is supported and tested.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli · Homebrew: brew upgrade lcode

Full changelog: v0.4.0...v0.4.1

lcode 0.4.0: MCP servers

Choose a tag to compare

@nasser1941 nasser1941 released this 01 Oct 07:09
5de6005

lcode now connects to MCP servers. Your local model can work with Jira and Confluence, GitHub, AWS, Google Drive, Grafana, Google Cloud, Sentry, Linear, Notion, Postgres, Kubernetes, a browser and any other MCP server. You approve every call.

lcode mcp catalog          # the ready-made servers
lcode mcp add atlassian    # signs you in through the browser, then tests the connection
lcode mcp add github       # offers the token from `gh auth token`
lcode mcp list             # checks every server and says what's wrong

Added

  • Ready-made servers: lcode mcp add <name> sets up and tests each one:

    Server Sign-in
    atlassian, sentry, linear, notion browser sign-in
    google-drive browser sign-in, with your own Google OAuth client
    github, grafana, postgres a token or connection URL
    aws, gcp, kubernetes your local credentials
    aws-knowledge, context7, playwright nothing

    Servers that can change things start read-only where possible.

  • Any other server: local (stdio) or remote (Streamable HTTP), configured in ~/.config/lcode/mcp.json in the standard mcpServers format, so a server's README snippet can be pasted in as is. A project can share servers in .mcp.json, used only after you approve it.

  • Browser sign-in: OAuth 2.1 with PKCE, automatic client registration and token refresh. Tokens are stored readable only by you.

  • Protocol versions: both the current MCP protocol (2026-07-28) and the earlier initialize-based versions.

  • Context: when tool definitions would take more than 15% of the context window, the model looks tools up on demand instead (the mcp_tools setting). /mcp shows servers, tools and their context cost.

Fixed

  • lcode bench: Ctrl+C no longer leaves a temporary folder behind, and the "already loaded" warning no longer names the model being benchmarked.

Docs: MCP servers

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli

Full changelog: v0.3.1...v0.4.0

lcode 0.3.1

Choose a tag to compare

@nasser1941 nasser1941 released this 30 Sep 17:36
968ba99

Which local model codes best on your machine? lcode bench measures it.

Added

  • lcode bench scores models on this machine with eight small coding tasks:

    • fixing a bug
    • finding code
    • writing a script from a spec
    • renaming across files
    • a one-line edit in a long file
    • recovering from failing commands
    • fixing a function to match its spec
    • adding a feature across files

    Each task runs in a temporary folder and has an automatic check, some with hidden tests. It reports tasks passed, time, generation and prompt speed, tool-call errors and memory use. lcode bench model-a model-b compares models, --json saves the results (a documented, versioned format) and --markdown prints a table for a model test report.

lcode bench qwen3.6-35b qwen3.5-9b --markdown

Results on an RTX 4080 Laptop GPU (12 GB) with 31 GB of RAM, 32K context:

qwen3.6-35b qwen3.5-9b qwen3.5-4b
Passed 8/8 6/8 6/8
Time 3m 57s 11m 55s 5m 20s
Generation 71.4 tok/s 60.1 tok/s 91.3 tok/s
Prompt reading 855 tok/s 3,507 tok/s 5,186 tok/s
Tool-call errors 0 9 1

Please share yours, especially from Apple Silicon Macs and other GPUs: paste the --markdown table into a model test report. Details: Benchmarking models.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli

Full changelog: v0.3.0...v0.3.1

lcode 0.3.0

Choose a tag to compare

@nasser1941 nasser1941 released this 30 Sep 15:51
ff2ecbf

Undo for local models. lcode now saves a checkpoint before the model changes your files, so a wrong edit or a script that went sideways is one command away from being undone.

Added

  • /undo takes back the file changes of the last request. Before the model first changes files in a request, lcode saves a checkpoint. /undo then restores edited and deleted files and removes new ones, including changes made by shell commands.
    • /undo again goes further back.
    • /rewind N goes back to before request N, optionally removing those requests from the conversation too.
    • /checkpoints lists them.
  • Checkpoints live in a separate git repository in lcode's state folder, so your own repository is never touched. They also work in folders that aren't git repositories. Turn them off with lcode config set checkpoints false.
● edit_file(calc.py)
  ✓ Edited calc.py
● write_file(notes.md)
  ✓ Created notes.md (1 lines)
  $ rm old.txt
↶ Checkpoint 1: 3 files changed · /undo reverts them

❯ /undo
Undoing request 1: In calc.py add a multiply(a, b) function. Also create notes.md with o…
  restore calc.py
  restore old.txt
  remove  notes.md
Done: restored calc.py, old.txt; removed notes.md.

Details: Undo and checkpoints

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli

Full changelog: v0.2.2...v0.3.0

lcode 0.2.2

Choose a tag to compare

@nasser1941 nasser1941 released this 30 Sep 15:17
1ddbd86

Change the context window without leaving your session.

Added

  • /context now lets you change the context window mid-session: it lists the sizes the model
    supports with the memory each needs and whether it fits on the GPU, and you pick one (or type
    /context 128k). If the conversation is too long for a smaller size, lcode summarizes it first.
    /ctx is a shortcut for the same command.
❯ /context
In use: 14.2K of 256K tokens (5%) in 1 message; auto-compacts at 85%.
Context window for lcode-qwen3.6-35b
 #  Size  Memory · fit
 1   16K  ~22 GB · GPU + RAM
 2   32K  ~23 GB · GPU + RAM
 …
 5  256K  ~28 GB · GPU + RAM   current, recommended
  Choose a number, a size like 96k, or press Enter to keep 256K: 2
Context window set to 32K tokens. The model reloads on the next request.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli

Full changelog: v0.2.1...v0.2.2

lcode 0.2.1

Choose a tag to compare

@nasser1941 nasser1941 released this 29 Sep 12:53
498d59e

Please upgrade if you use 0.2.0: in the default ask mode, file edits failed with IndexError: list index out of range.

Fixed

  • File edits and writes failed with "IndexError: list index out of range" in the default ask
    permission mode, a regression in 0.2.0. auto-edit and yolo modes were not affected.
  • Slow models no longer look stuck: the status line keeps counting the elapsed time while the model
    thinks, answers or silently writes a long file into a tool call, and reminds you that Ctrl+C stops it.

Upgrade

uv tool upgrade lcode-cli        # or: pipx upgrade lcode-cli

Full changelog: v0.2.0...v0.2.1

lcode 0.2.0: web search

Choose a tag to compare

@nasser1941 nasser1941 released this 29 Sep 08:32
22c4a34

Highlights

The model can now search the web. When an answer depends on something newer than its training data, such as the latest version of a library, a changed API, an error message or current documentation, lcode searches and reads pages by itself, then tells you which URLs it used.

  • web_search works with Ollama web search (free key with an Ollama account), Brave Search, Tavily or your own SearXNG.
  • web_fetch reads any page as clean text, with no key needed.
  • On by default. Use lcode config set web ask to approve each search, or web off / --no-web to keep everything local. See Web search for setup and exactly what leaves your machine.

Added

  • Web access for the model: web_search finds current information (latest releases, docs, error
    messages) through Ollama web search, Brave Search, Tavily or a self-hosted SearXNG, and web_fetch
    reads pages as clean text. On by default; lcode config set web ask|off or lcode --no-web limits
    it. Search API keys are read from environment variables only. Closes #7.

Install or upgrade

curl -fsSL https://nasser1941.github.io/lcode/install.sh | bash   # new install
uv tool upgrade lcode-cli                                         # upgrade (pipx: pipx upgrade lcode-cli)

To turn on search, set up a provider, for example export OLLAMA_API_KEY=... with a free key from https://ollama.com/settings/keys, then check with lcode doctor.

Full changelog: v0.1.2...v0.2.0