v1.6.0 Meet the Library for your notes, files and links

Local-first AI, beautifully native.

Loach is a free, open-source desktop workspace for Ollama and any OpenAI-compatible endpoint. Chat with your own notes and files, write code and work inside your project folders, with no telemetry, no accounts and no usage limits.

  • Free & open source (MIT)
  • Works offline
  • Windows · Linux · macOS

Why Loach

A calm home for every model you run.

Simple from the first click, and ready to grow with you. The rich feature set stays out of the way until you reach for it.

Free and private

No telemetry, no required network access, no subscriptions or usage limits. With local models your data never leaves the device, and an optional API key lives in your OS credential manager.

Bring your own model

Run Gemma, Qwen, DeepSeek, GPT-OSS, Mistral or any other Ollama model locally, or plug in an OpenAI-compatible endpoint: OpenAI, llama.cpp, LM Studio, vLLM, LiteLLM.

Built for developers

Project folders with LOACHFILE.md, Code Canvas with HTML preview and Open in VS Code, KaTeX math, slash commands, built-in tools, local and remote MCP servers, per-chat parameters and context compaction.

Features

All the controls. None of the friction.

Switch providers, give your models your own sources, hand them a project folder, keep chats in Spaces and watch every token stream.

01 Models

Bring your own model, local or cloud.

Ollama models and your OpenAI-compatible endpoint share one picker in the chat header. Switch per chat, no restart.

  • Ollama, out of the box. Loach finds a local install at localhost:11434, lists every model you've pulled and streams natively. Daemon not running? Start Ollama launches it, or let Loach start it at launch.
  • Any OpenAI-compatible endpoint. Presets for OpenAI, llama.cpp, LM Studio, vLLM and LiteLLM; Groq, OpenRouter, Together, Fireworks or Mistral work with their base URL. Test connection checks it first.
  • Warm and ready. Preload your default local model into VRAM at launch, and keep it loaded for 5 minutes, 30 minutes, an hour or always.
gemma4:12b · Ollamagpt-oss-20b · OpenAI

02 Library

Your own material, in any chat.

Texts, files and web links saved once and used anywhere. Loach sends the model only as much as fits its context window.

  • One place for your sources. Write or paste texts (Markdown works), upload PDFs, Word files, code and images up to 20 MB each, or keep a web page as a dated snapshot. Group them into datasets.
  • Attach with + or #. Choose From Library next to the message box, or type # and a few letters. Sources are linked, not copied, so an edit reaches every chat on its next message.
  • Sized to the window. Small sources go in full. Once they outgrow half the context window, only the passages most relevant to each message are sent, and every reply says what it used.
  • Search by keyword and by meaning. Keyword search works offline from the first item. Add an embedding model in Settings → Library, one click for Ollama, to also find passages phrased differently.

03 Workspace

Work in your project folders.

Hand a chat a folder. The model reads, searches and edits your project, and nothing changes until you've seen the change.

  • Add a folder to any chat from the + menu next to the message box. The model can list, find, read and search, then write, edit, move or delete. Sandboxed to that folder, with no shell.
  • See every change first. New contents, a line-by-line diff, from → to or a deletion warning, then Allow once, Allow for this chat or Deny.
  • Project rules in LOACHFILE.md. How to run the tests, what not to touch, house style. It rides along with every turn, read fresh each time.
  • Your files stay as they were. Line endings, non-UTF-8 encodings and permissions are kept. With a cloud provider, files the model reads are sent to it like any other message.

04 Model library

Model management, minus the terminal.

Pull, copy, customize and delete Ollama models from inside Loach, sized to the machine you actually have.

  • Every installed model as a tile with its family and size on disk. Start a chat with any of them in one click.
  • Modelfile-level controls. Edit the system prompt, template and parameters, preview the live Modelfile and save the result as a new model. Hugging Face pulls (hf.co/…) included.
  • Sized to your hardware. First-run setup reads your GPU's VRAM, or system RAM without one, and labels each option: Runs well, Runs OK, Runs slowly, or Too big for this machine.
  • Low VRAM mode, globally or per chat, for lower-spec devices.

05 Spaces & memory

Spaces that remember what matters.

Group chats around a project with its own instructions, sources, default model and a memory that keeps up.

  • Sources for every chat in the Space. Upload text, code, PDF, Word or image files, or add Library items and whole datasets. The Sources tab shows how much of the window they take and pauses any one with a switch.
  • Memory that updates itself. A Space learns lasting facts as you chat, updating or dropping ones that changed. Every change shows an Undo, and a searchable editor links each fact back to its chat.
  • Global memories follow you into every chat when you opt in. Private Chat never reads or writes memory.
  • Folders, colour labels and pins. Drag a chat onto another to file them together, tag chats in six colours, and pin replies to a bar under the header.

06 Snippets

Prompts you write once.

Save a reusable prompt, pin it to a model if you like, and run it whenever you need it.

  • Variables that ask. Write {{PLACEHOLDER}} into a snippet and Loach asks for the blanks when you run it, remembering your answers for next time.
  • Built-ins fill themselves in: {{USER_NAME}}, {{CURRENT_DATE}}, {{CURRENT_TIME}}, {{CURRENT_WEEKDAY}} and more. Define static globals once and reuse them everywhere.
  • Run starts a fresh chat pre-filled and ready to send, or expand one inline with /snippet. Any message you've sent can become a Snippet from its menu.
  • Need a starting point? The Snippets page links to the Prompt Gallery, a starter set you can paste straight in, and a search box finds the snippets you already have.

07 Developer UI

A chat that respects your code.

GitHub-flavoured Markdown, KaTeX math and a real canvas for code, with the numbers you care about under every reply.

  • Code Canvas opens any code block in a wider, resizable view that updates live while the reply streams, with line numbers, copy, export and Open in VS Code.
  • HTML preview. HTML code blocks and .html attachments render as a live page in an offline sandbox that can't reach Loach or your files. Scripts stay off until you choose Run scripts.
  • Slash commands. Type / in the composer for 37 commands: /fork, /model, /compact, /set, /folder, /remember and more, with model, Space, snippet and persona names completed as you type and /help for the full list.
  • Fork and compact. Branch any conversation into a new chat, watch the context bar under the composer, and compact older turns or double the window when it fills.
  • Search everything. Chats, message content, Spaces, Snippets and the Library, narrowed with in:messages, in:library and friends, plus an in-chat finder with phrase highlighting.
  • Generation stats. tok/s · tokens · elapsed under every finished reply, and /stats for the whole chat.

And plenty more

Built for real work.

Private Chat

Open a temporary chat from the ghost icon in the title bar. Local models only, with no tools, folders, Library sources or memory, and nothing is saved: it's wiped when you close it or lock Loach.

Files in chat

Images, PDFs, Word files and code up to 20 MB each. Text is extracted locally, images are scaled down so they cost fewer tokens, and every attachment opens in a matching preview.

Built-in tools

Twelve local utilities the model can call mid-answer, from exact math to real PDFs attached to the reply. See all tools

MCP servers

Over Streamable HTTP or as local programs via npx, uvx or node. Every tool call waits for Allow once, Always allow or Deny.

Thinking models

Reasoning traces render in a collapsible block above the answer, with a per-chat Thinking toggle and a per-model default.

Opt-in web fetch

Add up to five URLs to a message and their readable text joins the context. Off by default and screened against private addresses.

Custom instructions

Global, per Space or per chat; the most specific wins. Inject today's date, weekday and timezone so models know what day it is.

Personas & tones

Code Reviewer, Writing Editor, Brainstorm Partner, Explain Like I'm 5 or Translator, delivered Direct, Detailed, Casual, Formal, Encouraging, Playful, Skeptical or Socratic.

Tunable generation

Context length, temperature, top_k, top_p, min_p, max tokens, penalties, GPU layers and seed, per chat, in Simple and Advanced views.

Import & export

Copy a chat's context as Markdown, optionally compacted, and paste it, a JSON backup or any text back into any chat.

Voice dictation

The mic in the composer turns speech into text using the system web view's speech recognition. Shown where available; hidden on most Linux builds.

Share a message

As text, as a rendered chat-bubble image or PNG, or as a pre-filled post on X, Reddit, LinkedIn or Facebook. Loach uploads nothing.

Appearance

Glass or solid. Day or night.

Glassy, gradient Aurora or flat Solid, each in Light or Dark or following your system, plus three font sizes. This site wears Aurora; try the rest.

Theme
Color mode
Font size

Privacy & security

Local and private by default.

Hardened from the lock screen to the database. Nothing leaves your device unless you decide it should.

Pull the plug.

With local providers, Loach launches and works completely offline. Flip the switch to see what keeps working.

Works offline Goes online
  • Local models
  • Remote endpointsneeds network
  • Spaces & memory
  • Model pullsneeds network
  • Snippets
  • Web fetch (opt-in)needs network
  • Search
  • Remote MCP serversneeds network
  • Built-in tools
  • Update checks (opt-in)needs network
  • Library & its search
  • Library linksneeds network
  • Workspace folders
  • Math rendering
  • App lock
  • Chat history
01 · App Lock

PIN, password, or both.

Auto-lock after 1, 5, 15 or 30 idle minutes or the moment the window is minimized, and Ctrl/Cmd+Shift+L locks instantly. Wrong attempts are slowed down, even across a restart, and credentials are hashed with Argon2id and kept in your OS credential manager.

02 · Keyring

Your API key stays in the vault.

It lives in Windows Credential Manager, the Linux Secret Service or macOS Keychain, separate from the lock hash, and is never sent over plain http:// to another machine.

03 · Storage

One local SQLite file.

Chats, Spaces, the Library and its search index, memories, Snippets, MCP servers and settings live in a single local database. Settings → Data shows what everything weighs; back up to JSON, restore, or factory-reset in a few clicks.

04 · Network

Online only when you say so.

Only remote endpoints, model pulls, web fetch and Library links, embeddings from a remote endpoint, remote MCP servers and update checks touch the network, and web fetch and the update check are opt-in. No telemetry, ever.