Skip to main content

TinyWebUILive

One command. A chat that can search and remember.

TinyWebUI is a small, local-first chat workspace for any OpenAI-compatible model. Bring an endpoint, pick a model and a system prompt, and start working. Chats, documents and tool output stay in one SQLite file on your machine. No hosted backend, no account, no build step.

npx tinywebui
A fresh start with DeepSeek V4.1 Flash through OpenRouter.

Comes with web search and memory.

A new install starts with two TinySuite MCP servers already connected, so the first chat can already look things up and remember what matters. Keep them, add any other MCP server next to them, or remove them in mcp.json.

TinyContext

Long-term memory across chats. It saves short memories in SQLite and recalls the relevant ones within a token budget.

  • Memory that carries between chats
  • Hybrid keyword and vector recall
  • Stored locally, never resent in full

Bring any OpenAI-compatible endpoint.

OpenRouter, OpenAI, Groq, Ollama, vLLM, LM Studio, llama.cpp, or anything else that speaks the OpenAI API. The Settings panel writes every change back to tinywebui.config.json, and the API key never reaches the browser.

The bundled servers launch through uv, which fetches them and Python 3.12 on first start. Without uv, TinyWebUI still runs; the two servers show needs uv until you install it and restart.

tinywebui.config.json

A local runtime needs two lines.

{
  "baseUrl": "http://localhost:8080/v1",
  "model": "qwen3-coder-30b-a3b-instruct"
}

Point baseUrl at its API and leave out apiKey. Open http://127.0.0.1:7777.

Small, and built for real work.

No frontend framework and no hosted service. The parts that matter for daily use are still there: durable turns, approvals, attachments, search and an honest token count.

Turns belong to the server

A running turn keeps going when you reload, close the tab or put the laptop to sleep. Reopen the chat to rejoin its stream. Press Enter mid-turn to steer it, or Alt+Enter to queue a follow-up.

Writes wait for you

Any MCP call that can change something shows its arguments and waits for allow, always allow, or deny. Read-only calls in the same round run in parallel.

Documents, not pasted walls

Attach text, source files, PDFs and DOCX. The model reads the relevant passages with read_document instead of getting the whole file. Images go along too, with HEIC and AVIF converted for you.

Search everything, locally

BM25 plus a small on-device embedding model, fused with the same RRF as TinySearch and TinyContext, searches your documents and past chats. Nothing leaves the machine.

Long chats stay affordable

Deterministic prefixes keep provider caches warm. Large tool results are compacted once, and the full output stays one expand_context call away.

You can see what you spend

Every round shows tokens, cache reads and cache writes. The statistics view breaks each request down by where its tokens went: prompt, tool schemas, history, results.

Built-in tools, next to your MCP servers.

These ship with TinyWebUI and never ask for approval. MCP tools appear beside them under stable server__tool names, over stdio, Streamable HTTP or SSE.

read_documentDocuments
Searches or reads a document attached to the chat, returning whole passages ranked by their best-matching chunk.
search_chatsHistory
Searches your earlier conversations, never the current one, and returns the questions with the answers they got.
expand_contextRecovery
Searches or pages through the full output behind a compacted tool result, so nothing compaction removes is lost.
ask_userClarify
Asks you a question mid-turn, optionally with choices, and waits for the answer before carrying on.
manage_tasksPlan
Keeps a checklist for the current chat, shown in the right rail as the model works through it.
manage_automationSchedule
Creates, edits and runs cron-scheduled prompts that post into a chat of your choice.

Access

Starts personal. Grows into a team tool.

Pick how people sign in with authMode. Private by default: nobody gets in without an account.

Every setting can also come from version-controlled config that hot-reloads, refuses typos, and has a fingerprint you can check against a running instance with tinywebui fingerprint.

  1. Local accounts

    The default. The first account you create is the administrator, and everyone else joins with a single-use invitation. Each person's chats and documents stay their own.

  2. Local only

    Set authMode to local for a workspace without sign-in. It only ever listens on loopback, so it stays on your machine.

  3. Behind your SSO

    Put it behind a sign-in gateway for Google, Microsoft or any SSO. Roles, per-user data, model allowlists and an admin panel, all managed from version-controlled config.

Start a chat that already knows how to look things up.

TinyWebUI is open source under AGPL-3.0, needs Node.js 22.13 or later, and ships with TinySearch and TinyContext connected.