What's New in v0.46: Gateways, Local Models, and a Rebuilt Harness Page

8 min read Original article ↗

v0.46 is about where your agents get their tokens from. You can now point any session at a model provider that is not the CLI's own: a model running on your laptop, a box on your network, or a provider you buy by the token. Ollama is managed end to end, from install to a context window sized for your machine.

Underneath that, the settings area was rebuilt. There is a new Agentic Coding group holding everything about how sessions run, including a Harness page that finally tells you whether the CLI Lanes is about to launch is installed, current, and where it came from.


Bring your own model provider

Settings, then Agentic Coding, then Gateway. A provider profile points a session at a provider of your choosing, and covers three shapes:

  • Local, an Ollama or LM Studio running on your own machine, with no marginal cost.
  • Your own hardware, a vLLM box on your network.
  • A provider you buy, OpenRouter, z.ai GLM, or anything else serving the same wire format.

Start from a preset for Ollama, LM Studio, vLLM, OpenRouter, or z.ai GLM and the base URL and auth mode are filled in for you, or add a blank profile and type your own. Adding a profile selects it, so there is nothing else to switch on.

Lanes is not in the request path. A profile is applied as real process environment when the session starts, so the request goes straight from the CLI to your provider. Nothing routes through us, and the credential never reaches terminal scrollback, the command line, or ps. A profile with no base URL does nothing at all, so the half-filled one you are still typing into cannot affect a running session.

Hit Test connection once you have a base URL. It sends a single one-token request and reports back. An "unknown model" result counts as success: the probe uses a placeholder model name on purpose, so the provider authenticated the request before rejecting the name, which is exactly what is being checked.

One thing to get right: name the model. The profile has no model field, because Lanes already has one in the session picker's Model row. Default is not a safe pick, since the harness would send its own model id and your provider will not serve it. Switching providers per session happens in the new Gateway row, right next to it.

The Gateway docs cover the rest, including bearer versus API key, what you give up by routing a harness away from its own provider, and how to reach a backend that only speaks a different wire format.


Local models, starting with Ollama

Settings, then Agentic Coding, then Local LLMs. Runs models on this machine. Nothing leaves it.

Lanes drives Ollama for you: Install, Start server, Stop server, and Uninstall, each using the right lever for how it was installed, whether that is the Homebrew formula or the desktop app. The status card tells you the version and whether it is actually serving.

  • Your installed models, honestly. Size on disk, parameter count, quantization, capabilities, and trained context length. The list works even with the daemon stopped, because Lanes falls back to reading the model manifests on disk rather than showing you an empty page.
  • Recommendations sized for this machine. A short curated list with a checked download size and a minimum memory figure, compared against the RAM you actually have. A Fit column tells you whether a model fits, fits tightly, or cannot work here at all, before you spend the download.
  • The whole library, searchable. Browse everything on ollama.com from inside the page, or pull any reference by name.

The interesting part is context. A real session sends roughly 38,000 tokens before you type anything: the harness instructions, its built-in tool definitions, and the tool definitions of every MCP server you have connected. Ollama picks its context size from available memory, and when a prompt overflows it truncates instead of failing, keeping the head and the tail. The model then answers with tool-definition JSON and nothing reports the loss.

So Lanes bakes it in. On pull, it creates a -lanes variant of the model with a context window sized from your memory and that model's own key/value geometry. The variant shares its data with the base model, so it costs nothing extra on disk, and ollama rm undoes it. If you would rather choose, the Context window field overrides the estimate.

It wires itself into the rest: the daemon is registered as a Gateway provider automatically once you have a model to serve, and the session picker's Model row lists the tags your daemon actually has, rather than model ids it does not. Full detail in the Local LLMs docs.


A settings home for agentic coding

Everything about how a session runs now lives in one group. Agentic Coding holds Terminal, Harness, Local LLMs, and Gateway. The old CLIs group is gone, the Codex-only page folded into Harness, and per-repository configuration moved up to Workspace, then Projects, where it belongs.

The Harness page is new. Lanes runs each coding CLI in its embedded terminal and reads session state from what the CLI writes to disk, so having one installed is the whole setup. The page makes that state visible for Claude Code and OpenAI Codex:

  • Whether the CLI is on your PATH, and the version it reports.
  • The resolved path and which package manager put it there, whether that is npm, bun, pnpm, yarn, Homebrew, or a native installer.
  • Whether a newer version exists, and an Update button that uses the manager the CLI actually came from. This matters more than it sounds: bun, pnpm, and yarn keep global packages in their own prefix, so an npm install -g would report success while the old binary kept running.

If the registry cannot be reached, the page says nothing rather than claiming you are behind. "Up to date" is only shown when there was a real answer to compare against.

The Codex card also carries the optional terminal-title setup. Idle detection already works from Codex's transcript, but one click adds a [tui] terminal_title block to your Codex config for a second signal, and it writes only that block.

In the session picker, the row that used to say CLI now says Harness, and the new Gateway row sits between Effort and Flags.


Not just the agents, the workbench around them

Running agents in parallel is the part people see first. The reason a session stays in Lanes is everything else in the window, so it is worth naming what is already there:

  • A git client, not just a diff. The Changes pane has a repository and branch header, a commit box, one button that publishes, pulls, or pushes as needed, per-file and full discard, branch switching with a dirty-tree escape hatch, and a History tab that can undo the last unpushed commit. If you keep GitHub Desktop open next to your terminal, this is the thing that replaces it.
  • A real editor. Monaco, the editor from VS Code, with a file tree, syntax highlighting, save on Cmd+S, and a side-by-side markdown preview. Reviewing what an agent just wrote does not need a second app.
  • A database browser. The Databases explorer finds the SQLite files in your project by itself, lists tables and views, and runs read-only SQL. Checking whether the migration did what the agent claimed is two clicks.
  • The right name on the commit. Git identity switching, so work in a client repo is not attributed to your personal account. Switch GitHub account and the git author name and email follow.

One window, one set of shortcuts, no tool-switching tax between asking an agent for a change and checking whether it was any good.


Also in this release

  • A Working Folder pane, a file tree and editor scoped to the project you are on, opened from the header or a project's menu.
  • The newest models in the picker for both harnesses.
  • Choose the terminal Lanes reports itself as, now iTerm by default. It only changes the TERM_PROGRAM the CLIs see, and it matters because Apple Terminal answers a bell by pulling the real Terminal.app to the foreground mid-session.
  • Fixed pasting of certain characters into the terminal.
  • No more duplicate sessions when an agent starts one over MCP.
  • Fixes for worktree memory use and for opening a folder that is not a git repository.

Local models and provider profiles are both marked Research Preview, which means they work and we want to hear where they do not.

Join our Discord and tell us what you point yours at.