Model or dataset
ImDarkTom/LlamaPen avatar
ImDarkTom/LlamaPen

LlamaPen: A Browser-Hosted Chat GUI for Ollama and Other Local LLM Servers

A no-install needed GUI for Ollama and other local LLM providers.

448 stars38 forksVueAGPL-3.0

At a glance

What is it?
LlamaPen is a Vue and Bun web app that puts a chat interface in front of self-hosted model servers, with chats kept in browser storage. The Docker image is the low-friction path; the AGPL-3.0 licence and the browser-local data model are the two things to weigh before adopting it.
Who is it for?
LlamaPen fits people who already run a model server on their own hardware and want a chat front end without installing a desktop client per machine, and who are comfortable with conversation history living in browser storage. It is the wrong pick if you need server-side conversation sync, multi-user access control, or a licence that permits closed-source redistribution.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Vue, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap LlamaPen fills between a model server and a usable chat window

Ollama ships a command line and an HTTP API. That is enough to pull a model and send a prompt, but it is not a chat interface. Anyone who wants conversation history, markdown rendering, or a way to switch between two running servers has to either use a desktop client or reach for a hosted service, which defeats the point of running models locally. LlamaPen targets that middle ground: a web interface that talks to servers you already control.

The README is explicit about the audience. LlamaPen is "built for models running on your own hardware." Ollama is pre-configured, and the project lists one-click presets for llama.cpp, LM Studio, Jan and vLLM, plus a manual path for anything else that speaks the OpenAI-compatible API. The README also notes that hosted APIs can be added by hand "if you want the option," so the tool does not enforce local-only operation. It just defaults to it.

The second half of the pitch is distribution. "No-install needed" is the phrase in the repository description, and the Docker route is described as the recommended way to get a local instance. That combination matters for people running a home server or a small lab machine: one container, reachable from a phone or a laptop browser, no per-device client to update.

How the app is put together: Vue, Bun, Dexie and a browser-side database

The repository metadata names Vue as the primary language and lists vue3, bunjs and dexiejs among the topics. That is consistent with the README's instruction to run the app through Bun and with the claim that chats are stored locally in the browser. Dexie is a wrapper around IndexedDB, so the storage layer sits in the browser, not on the server that serves the app.

That design has a visible consequence. The README states that "all chats are stored locally in your browser," which the project presents as a privacy property and a speed property ("near-instant chat load times"). It also means the server component is essentially a static host. Requests go from the browser to whichever provider endpoints you configure, and the README says "requests only ever go to the providers you configure yourself."

What the material does not describe is a backend for synchronising conversations. There is no mention of an account system, a database service, or a sync endpoint. LlamaPen Cloud existed at one point and was discontinued; the README says all user accounts were deleted and refunds issued. So the current architecture is a client-side app plus your own model servers, with nothing in between that holds state.

Running it: the Docker command and the Bun fallback

The README gives two routes. The recommended one is Docker. Pull the image, then run it:

docker pull ghcr.io/imdarktom/llamapen:latest

docker run -d -p 8080:80 --name llamapen --restart unless-stopped ghcr.io/imdarktom/llamapen:latest

The container maps port 80 inside to 8080 on the host, and the README notes you can substitute any port. The --restart unless-stopped flag means the container comes back after a reboot, which is what makes the "accessible on localhost" claim hold across machine restarts.

The manual route needs Git and Bun, with Bun 1.3 or newer described as tested:

git clone https://github.com/ImDarkTom/LlamaPen.git cd LlamaPen bun install bun run local

The README flags this path as "slightly less preferrable" and warns about version drift in packages and tooling. That is a fair warning rather than a hedge: a Bun-based project pinned to a major version will break for anyone on an older runtime, and the Docker image sidesteps that entirely.

Configuration happens in the app, not in a config file. The README points to a setup guide on llamapen.app and says Ollama needs nothing configured. Everything else is added from the providers section in settings.

The browser as the database is the real constraint

Storing conversations in IndexedDB means the data belongs to one browser profile on one device. Open LlamaPen on your phone and you get a different history than on your desktop, unless the project provides an export or import mechanism, which the supplied material does not describe. Clearing site data, switching browsers, or using a private window removes the history from view.

This is not a bug in the implementation. It is the direct cost of the privacy claim. There is no server holding your prompts, so there is no server to sync them. Anyone evaluating LlamaPen for a team should treat that as a hard boundary: the README describes no user accounts, no shared workspaces, and no access control. A single container on a shared machine is reachable by anyone who can reach the port.

The second constraint is the network path. The browser talks to your model server directly. If LlamaPen runs in a container on a home server and you open it from a laptop, the browser on the laptop must be able to reach the Ollama or OpenAI-compatible endpoint. The README does not walk through CORS or reverse-proxy configuration, and it does not say what happens when a provider is unreachable. That is a gap worth testing before you rely on remote access.

What it renders, and what the feature list leaves unstated

The feature list is specific about presentation: markdown, think text and LaTeX math are rendered, and custom tool calls are supported. Keyboard shortcuts are included for navigation. There is a built-in model and download manager, which suggests the app can trigger model pulls rather than only chatting with models already present. Offline and PWA support is claimed, which follows naturally from a client-side app with a service worker.

The README does not specify which providers support which features. Tool calling depends on the server behind the endpoint, and a vLLM or llama.cpp server may handle it differently from Ollama. The material does not say whether the model manager works against every provider or only Ollama. It also does not describe how think text is detected, which matters because different model families emit reasoning traces in different formats.

None of this is disqualifying. It is the normal state of a project whose documentation lives partly in an external guide. The practical move is to test the features you actually need against your specific server rather than assuming the feature list applies uniformly.

Where Open WebUI fits differently

The closest comparison in this space is Open WebUI, which is also a self-hosted chat front end for local models. The architectural difference is where state lives. Open WebUI is a server application with its own backend and database, so conversations, users and settings are held server-side and are available from any browser that points at the same instance. LlamaPen pushes that layer into the browser and keeps the server side thin.

That single difference drives most of the trade-offs. Open WebUI gives you multi-user accounts and shared history, at the cost of running and maintaining a stateful backend with a database to back up. LlamaPen gives you a container that holds no conversation data, at the cost of per-browser history and no sharing. Neither is better in the abstract. If two people need to see the same conversation, LlamaPen's model does not support it. If you want a chat log that survives a browser wipe without an export step, the same applies.

The other difference is licence posture. Open WebUI's licence is not stated in the supplied material, so no comparison there is possible. LlamaPen is AGPL-3.0, which is the point worth examining on its own.

AGPL-3.0, forks and the maintenance picture

LlamaPen is licensed AGPL-3.0. The practical effect of that licence is that if you modify the code and let users interact with it over a network, you are expected to offer those users the corresponding source. Running the unmodified Docker image for yourself does not trigger that obligation in any way that should worry a personal user. It does matter if you plan to fork LlamaPen, rebrand it, and host it for customers. That is a legal question for a lawyer, not for this article, but the licence choice should be a known factor before you build a product on top of it, not a discovery afterwards.

The release cadence visible in the metadata is roughly every six to eight weeks across v1.2.0, v1.3.0 and v1.4.0. That suggests active development without a promise of API stability. The README's own warning about package and tool version differences on the manual path is the maintenance signal to take seriously: pinning to the Docker image tag is the lower-variance choice, and the README recommends it for that reason among others.

The discontinued cloud service is also worth reading as a maintenance indicator. It shows the project has already removed a component and cleaned up after it, including account deletion and refunds. That is a reasonable way to shut something down, but it also means anyone who built a workflow around LlamaPen Cloud had to migrate to OpenRouter or Ollama's cloud presets.

Editorial conclusion

LlamaPen fits people who already run a model server on their own hardware and want a chat front end without installing a desktop client per machine, and who are comfortable with conversation history living in browser storage. It is the wrong pick if you need server-side conversation sync, multi-user access control, or a licence that permits closed-source redistribution. Before committing, verify three things on your own setup: that the Docker image exposes the port you expect, that the browser can reach your Ollama or OpenAI-compatible endpoint over the network, and that exported or backed-up chat data survives a browser profile reset.

Official sources

  1. ImDarkTom/LlamaPen on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes