Skip to content

Use a local model

AI

Kadal Deck’s AI features can run on a model on your own computer. You need no key, it costs you nothing, and it works on every plan. There are two ways to do it:

You want Use
the Assistant in the builder, or the Copilot in the presenter view, on your model Models on this computer
your own agent (on a local model) to write and publish decks in a folder An agent on a local model, over MCP

The Assistant and the Copilot normally run on Kadal’s servers, using your workspace’s AI key. A model on your computer is out of their reach: Kadal’s servers only connect to public addresses, and localhost is your machine, not theirs. So for a local model the agent runs in your browser tab instead. It gets the same instructions, the same tools and the same number of steps, and it calls your model directly. The conversation goes from the page to your server and never passes through Kadal.

The Assistant does everything through tools (read the outline, change a slide, check the deck), so the model has to support tool calling. The instructions and tools take about 23,000 tokens, so it also needs a context of at least 32k tokens. Qwen 3 at 8B or larger edits decks well. A small model like Qwen 3 0.6B runs, but often calls the wrong tool or calls the right one with the wrong arguments.

Server Start it Context of 32k
Ollama ollama pull qwen3:8b, then open the app or run ollama serve OLLAMA_CONTEXT_LENGTH=32768
LM Studio lms get qwen/qwen3-8b, then lms server start --cors lms load qwen/qwen3-8b --context-length 32768
llama.cpp llama-server -m model.gguf --jinja -c 32768 --port 8080 -c 32768 (and --jinja for tools)

Ollama doesn’t warn you when a conversation is too long for its context. It drops the start of the prompt without saying so, and that includes the Assistant’s instructions. Set the context length before you start.

Two things stand between a page on https://deck.kadal.cc and a server on http://localhost:

  • The server has to allow the site (CORS). Ollama only answers pages it has been told to trust. LM Studio answers once CORS is switched on. llama-server allows any site by default.

    Terminal window
    # Ollama on macOS: then quit Ollama from the menu bar and open it again
    launchctl setenv OLLAMA_ORIGINS "https://deck.kadal.cc,https://decks.kadal.cc"
    # Ollama on Windows: then quit Ollama from the tray and open it again
    setx OLLAMA_ORIGINS "https://deck.kadal.cc,https://decks.kadal.cc"
    # Ollama on Linux (systemd): sudo systemctl edit ollama, then under [Service]
    Environment="OLLAMA_ORIGINS=https://deck.kadal.cc,https://decks.kadal.cc"
    # LM Studio: Developer → Server Settings → Enable CORS, or
    lms server start --cors

    decks.kadal.cc is there for the Copilot, which runs on your published deck’s page.

  • The browser has to allow it. Chrome, Edge and Firefox let a secure page call http://localhost. Chrome and Edge ask once whether deck.kadal.cc may reach apps on this device, and you should allow it. Safari blocks it, so use another browser or the desktop app.

On the dashboard, open AI keys and find Models on this computer. Pick your server (Ollama, LM Studio, llama.cpp or another OpenAI-compatible server), check the address (it ends in /v1), and choose Save and turn on. The page lists the server’s models and marks the ones that can call tools. If something is wrong, it tells you which problem it is and gives you the command that fixes it:

  • the server is running but doesn’t allow the site (CORS);
  • nothing is answering at that address;
  • the server has no chat models;
  • the address isn’t an OpenAI-compatible API.

Then, in the builder, open the Assistant. Your models appear in its model menu under On this computer. Models that can’t call tools are left out. The setting belongs to this browser, not to the workspace, so turn it on in each browser you use.

For the Copilot, open a published deck’s presenter view, choose the laptop button in the Copilot tab, and pick the same server. The presenter view runs on the decks site, which keeps its own copy of the setting.

  • The Studio skill isn’t included. On Pro and Team, the hosted Assistant also follows the Studio skill. A local model gets the standard builder instructions only.
  • There is no Thinking setting. If your model thinks before it answers (Qwen 3 does), its thoughts show in the chat as they arrive.
  • Each step takes as long as your machine takes. Every step sends the whole conversation again, so a model with a slow prefill (a large model on a laptop) can take a minute per step.
  • Every change is still a revision marked Assistant, so you can undo it.

The desktop app shows the same dashboard, but its webview (WebKit on macOS and Linux) won’t let a secure page call http://localhost. So the app makes those requests for the dashboard. It only connects to servers on this computer (localhost, 127.0.0.1, ::1), only on the ports you’ve allowed (11434, 1234 and 8080, plus any address you save under Models on this computer), and only to a model server’s API paths. You don’t need any CORS setting.

Decks open in their own windows, and those windows get nothing from the app (a deck is other people’s code). So the Copilot can’t use a local model inside the desktop app. To use the Copilot with a local model, present from Chrome, Edge or Firefox.

kadal-deck mcp is the engine’s MCP server. It runs on your computer, works on one deck folder, and offers 24 tools: look up components, read, edit, check, render, build, export, publish, sync and find media. Any MCP client can use it, including one that runs its agent on a local model, such as LM Studio (~/.lmstudio/mcp.json), Goose, Cline, Continue or your own script.

{
"mcpServers": {
"kadal-deck": {
"command": "npx",
"args": ["-y", "@kadal/deck", "mcp", "--dir", "/path/to/my-talk"]
}
}
}

The dashboard’s AI keys → Connect an agent section writes this for you, with your folder in it, for Claude Code, Claude Desktop, Cursor, VS Code and other clients. For your account’s decks (lists, versions, share links, live rooms), add the remote server https://deck.kadal.cc/mcp as well. It signs in with OAuth.

Tips for a local model:

  • Give it only the tools the task needs. Most clients let you turn tools off, and a small model chooses better from 3 tools than from 21.
  • The MCP server counts slides from 0 (the second slide is 1). The builder’s Assistant counts from 1.
  • The model doesn’t need to pass dir: the server already works in the folder you gave it.

Send feedback