How features are divided between the browser and the local server.
The web app runs in your browser. The optional Python server adds tools from your computer; it does not replace the interface.
| What you need | Web only | With local server |
|---|---|---|
| Chat, profiles, history, attachments and RAG | Yes | Yes |
| Browser JavaScript and web tools | Yes; network tools need access to their services | Same requirements |
| Local models with WebLLM | Requires compatible WebGPU and memory | Same requirements |
| Computer files and commands | No | Requires enabled tools and permissions |
| MCP services and browser automation | No | Requires each tool's dependencies |
Install and start the local server → · Configure tools and MCP →
If supported, install the web app as a PWA from your browser's options. Cached resources do not guarantee that every feature works offline.
py -m zerochat launcher), and Android (Termux with the python package). Playwright cannot currently be used on Termux, so browser_action and Playwright MCP are not available.
Conversations, profiles, attachments and RAG stay in browser storage. They belong to the web address, browser and profile used; there is no automatic cross-device sync. Export copies before clearing data.
Conversations are not encrypted as a vault. See Profiles for API key encryption and its limits.
~/zerochat/
├── config/ Token and configuration
├── services/ MCP definitions, dependencies and credentials
└── .venv/ Python MCP dependencies
PyPI and the downloaded script use the same folder. Deleting it removes local configuration and managed services, including their credentials. It does not remove the executable, browser history or files changed outside that folder.
The published interface is GitHub Pages. The local server listens at 127.0.0.1:6388 by default and opens an authenticated link. Do not share the startup URL while it contains the token; the interface removes it and stores it in a cookie. Without that link (another computer, an SSH tunnel or a reverse proxy), the connection is set up in the Connection panel (the plug icon next to the settings wheel in the sidebar) and the page asks for the user name and password of the account running the server to get the daily token.
Remote providers receive messages, attachments and tool results included in their requests. Web tools do not use public proxies or intermediaries. Models and dependencies also require downloads.
Third-party libraries (Orama for search; mammoth and fflate for office documents) ship with the web app itself at pinned versions, with no CDN. The document libraries are downloaded from the same site the first time they are used and cached for offline work. Their licenses are listed in THIRD_PARTY_NOTICES.md.
WebLLM runs inference locally; network tools still send data. Local history does not make all operations private. The debug panel shows requests; their context may differ from visible history because of token limits or RAG selection.
Web updates arrive from GitHub Pages. Patches in the same series, such as 9.1.x, are compatible with backend 9.1 and do not require reinstalling it. When a new web version is ready, ZeroChat offers Reload now or Later; reloading applies it without losing saved history.
A new major.minor series may require a backend update. Follow the terminal notice for your installation method; the executable does not update automatically. Press i when the terminal offers information.
Inside the repository, python3 zerochat.py serves http://127.0.0.1:6388/zerochat.html. Its browser storage is separate from GitHub Pages. The interface loads js/ and css/; copying the HTML alone is not enough.
python3 zerochat.py --test checks local tools. For the project test suite, see tests/README.md in the repository.
Reviews conducted following the canonical procedure in docs/audits/AuditFull.md. Each claim states whether a test protects it, and each AGENTS.md rule is matched with the test that watches it, following the 9.0.0 lesson.