NextChat stores chats in the user's browser by default
NextChat puts several model providers behind one familiar chat window. The README documents OpenAI, Anthropic, Google, DeepSeek, Azure, Baidu, ByteDance, Alibaba, and compatible base URLs. You can use it in a browser, install it as a PWA, or run the desktop client. Prompt templates, Markdown, Mermaid diagrams, streaming replies, artifacts, plugins, and optional MCP support cover the daily features most people expect from an AI chat app.
Its defining choice is where the conversation lives. Chat data stays in the user's browser by default, so a personal deployment avoids standing up a database just to remember a thread. None of the 847 MB installed in our run changes that storage model. A browser reset, a new device, and a centrally managed company record are different problems. The README points to Upstash synchronization for people who need history across devices, but that is extra infrastructure rather than the default behavior.
What happened when we ran it
Our sandbox installed commit defdcdb in 241 seconds. Yarn added 2,413 packages, and the resulting environment occupied 847 MB on disk. The build then completed successfully in 169 seconds. We measured those steps in a fresh Debian container with 3 CPUs, 8 GB of RAM, Node 22, no secrets, and no elevated privileges. The repository itself contained 425 files and about 43,498 lines of source in a 7.8 MB checkout.
The test step did not finish within our 900-second limit. Its command launched Jest with --watch, and the last message said no tests were found related to files changed since the last commit. That is all the log establishes. We cannot say the suite passed, failed an assertion, or needed an undisclosed system package because none of those outcomes appeared. For CI, use an explicit non-watch command and confirm what the project treats as its complete suite.
The repository has a tests directory, 7 CI workflow files, a Dockerfile, and a Compose file. Those are useful maintenance signals, although they do not turn our timed-out command into a passing result. The practical split is straightforward: installation and production compilation worked at defdcdb, while the default test path we were given did not produce a finite test result.
Vercel setup needs an API key and a CODE password
The shortest documented route is Vercel: supply an OpenAI key, set CODE, and deploy. Docker is similarly direct on port 3000, and the README lists Node.js 18 and Docker 20 as its minimums. Provider flexibility is a genuine strength. You can point BASE_URL at a compatible proxy or self-hosted service, configure Azure deployments, and add or hide models through CUSTOM_MODELS.
CODE deserves careful reading. The project calls it limited access control, and its value is a comma-separated set of passwords. The 2,413-package install does not add named accounts, roles, per-user revocation, or an administrator's record of who opened which chat. A company that needs those controls should choose a system designed around server-side users instead of treating a shared page password as identity management.
MCP has another deployment wrinkle: the README says to set ENABLE_MCP=true before building. In other words, an operator cannot assume a runtime toggle will add the feature to an already-built image. The same care applies to hidden user keys, custom model names, provider URLs, and the page password. Put those values in the deployment's secret store, document which are build-time settings, and rebuild when the image contents depend on them.
A browser-first design limits central administration
Local browser storage is pleasant for one owner, even after the 169-second production build has succeeded. It cuts out an application database, keeps ordinary chat history near the user, and matches the project's privacy claim. For a shared service, the trade changes. Support staff cannot inspect a central record that does not exist, retention policy is left to each browser, and synchronized history requires the separate Upstash setup documented by the project.
That makes NextChat a better personal client than an internal system of record. A small technical group may still accept the boundary, especially if each person supplies a provider key and understands where conversations are stored. A regulated team usually cannot. The difference comes from the storage and access model, not from the number of model logos in the settings screen.
The last push was August 11, 2026
GitHub recorded the last push on August 11, 2026. On September 30, the repository had 693 open issues and 157 open pull requests, and an issue had been updated as recently as September 22. That is a very large queue, but it is also visible activity. The latest tagged release, v2.16.1, dates to July 29, 2025, so the tag alone would give a misleadingly stale picture of the code.
The project is mature enough to offer web, PWA, desktop, Docker, Compose, and hosted deployment paths under the MIT license. Its maintenance burden is equally visible in the 850-item combined issue and pull-request queue. For a personal instance, the successful 169-second build is the more relevant starting point. For a team release gate, the unresolved 900-second test run and limited CODE access model should decide the evaluation before interface polish does.

