Using models on every client

The same account, very different hardware. What runs locally in a terminal, a browser tab, a phone and the desktop app — and how to switch without losing the conversation.
Models, offline and private
0:48
Running local weights with the network off, and what that does and does not protect.

The three places a model can run

Every client offers some mix of these. Which ones you see depends on the hardware you are on, not on your plan.
On your own hardware — the weights are on the device and the prompt never leaves it. Free to run, limited by your RAM and whether you have a GPU.
Hosted — the prompt goes to a server, which runs a much larger model and sends the answer back. Faster and stronger; metered against your plan.
Free hosted tiers — community and free-tier providers, served from a shared pool. No API key of your own, rate limits are lower.

Terminal (macOS, Linux, Windows)

The CLI has the fewest restrictions, because it runs on a real computer with real storage. Anything you can pull, you can run.
lk pull --list everything available, with download sizes
lk pull qwen3-8b download a model
lk models what is installed, and which is active
lk use qwen3-8b set the default
lk ask "..." --model openrouter:qwen/qwen3-coder:free override for one call
/model inside a session switches without restarting it

Web browser

A browser tab can run models, but only builds compiled for WebGPU — currently 6 small ones. These load into the tab and run entirely on your machine; close the tab and the weights are discarded.
Every other model in the browser is hosted. This is a real hardware limit, not a restriction: a browser cannot load arbitrary GGUF weights, and the hosted backend deliberately does not run them either, so offering them in a browser would offer something nothing could execute.
Requires a WebGPU-capable browser — recent Chrome, Edge or Safari.
First load downloads the weights, which is slow once and cached after.
A phone browser is not the phone app — the app can run far more than the tab can.

iPhone and Android

The apps run GGUF weights in-process, so a downloaded model works with the network off entirely. This is genuinely on-device: aeroplane mode is a valid way to verify it, and the deep dive above does exactly that.
Models tab → download a model, then pick it as the active one.
Small models only, realistically — a phone has the RAM it has.
Hosted models remain available and are the right choice for hard problems.

Desktop app

The desktop app runs the same interface as the web app. For local weights on a desktop machine, the CLI is the stronger path — it has direct access to your GPU and your filesystem, and the desktop app and the CLI share the same account and history.

Switching model mid-conversation

The conversation is not tied to a model. Start on a small local one, hit something hard, switch to a hosted model, and the context carries across.
In a terminal session: /models to list, /model <id> to switch.
In the web, phone and desktop apps: the model picker in the composer.
/status shows what remains of your allowance before you commit to an expensive model.

Attaching images, video and audio

Models are tagged by what they can take IN as well as what they produce. The picker's capability filters — Vision, Reads video, Reads audio — show only models whose provider genuinely accepts that input; a tag is a promise this platform has verified a request path for, not a claim copied from a spec sheet.
Vision — the model can look at an attached image (screenshots, photos, diagrams).
Reads video — the model can watch an attached clip (MP4, WebM, QuickTime, AVI, MPEG; up to 20 MB per clip).
Reads audio — the model can listen to an attached recording (WAV or MP3; up to 10 MB per clip). Convert OGG/FLAC/M4A to WAV or MP3 first — the refusal message will say so too.

When your model can't hear the file: automatic delegation

If you attach audio to a model that cannot read it, Local Keep AI does not just refuse. A free model that CAN listen transcribes the clip, the transcript is handed to the model you chose, and your model answers the question. The reply carries a notice naming both models — nothing is substituted silently.
The switch happens only for the one piece your model cannot do; your chosen model answers the actual question and stays in charge of the conversation.
Only models you are entitled to are used — the transcription pool is zero-cost free models, so this never spends paid usage and never touches a model your plan excludes.
If no eligible model is available, you get the honest refusal with the filter to use instead — never a silent wrong answer.

Which should you actually use

Routine edits, questions about code you have open, anything on a plane — local.
Multi-file reasoning, tricky debugging, anything where being wrong costs you an hour — hosted.
Anything you are not allowed to send to a third party — local, and check the privacy page for what that does and does not cover.

All documentation

Installation
Install the CLI on macOS, Linux or Windows, and sign in.
Setup, start to finish
The whole path on one page: install, sign in, pick local or hosted, get an answer.
Connecting accounts
One account everywhere, registering devices for the SMS bridge, and OAuth integrations.
Models
Pull open-weight models, switch between them, and run fully local.
Commands
Every terminal command and every slash command, each with its own page.
Editor integrations
VS Code, Cursor, JetBrains, Neovim, Sublime, Zed, Godot, Unity, gh and git hooks.
The SMS bridge
Send a task to your own machine from your phone, and get the answer back.
The apps
One React Native codebase behind iPhone, Android, web and desktop — and how to run it.
Automation Studio
Idea to production: flows, per-step models, your machines or ours, live editing.
Enterprise seats
Licensed team seats under one owner account — invites, billing, and how seats resolve.
API reference
API keys, authentication, chat completions, pricing and errors — for your own software.
Notifications
Four channels, all opt-in, how to change them, and the limits on re-engagement.
Privacy
What leaves your machine, what never does, and how anonymisation works.
Troubleshooting
When a model will not load, a command hangs, or the CLI cannot be found.