Features and maturity
Verified inventory of conversation, providers, agent, MCP, and RAG.
← Back to architectureFunctional assessment
ZeroChat 7.11.0 works as a personal multi-provider client with conversations, profiles, tools, and local RAG. The local backend adds MCP, shell, files, and browser operations; supported functions also work through the static client without it. Local tests support specific flows, but cannot establish reliability across all providers, formats, or mobile devices.
1. Method and evidence
The inventory comes from the interface, adapters, agent, MCP, RAG, Python tools, and tests. npm test passes 644 cases; npm run test:browser passes 71. No external accounts or models were connected, and answer quality was not benchmarked.
2. Maturity matrix
| Area | Implemented and tested | Limit |
|---|---|---|
| Conversation and state | Sessions, branches, attachments, streaming, telemetry, and export; state and UI tests. | Persistence is browser-local and depends on origin and storage quotas. |
| Providers | OpenAI-compatible base plus Claude, Gemini, Ollama, OpenRouter, and WebLLM adapters. | Live compatibility depends on API, CORS, model, and browser; tests use doubles. |
| Agent and tools | Tool-call loop, approvals, web search, JavaScript, charts, and RAG tools. | Models must generate valid calls; shell and MCP need a backend and supervision. |
| Local MCP | Local processes and tools over authenticated HTTP; infrastructure tests. | Commands and MCP servers have no operating-system privilege isolation. |
| Document RAG | IndexedDB, chunking, Orama lexical index, corpus/document search, and images. | No embeddings, general OCR, or semantic retrieval benchmark. |
| Interface and PWA | ES/EN, responsive UI, SVG, Service Worker, and Chromium tests. | Precache can be incomplete; actual offline reload and other browser engines were not checked. |
3. Conversation, providers, and profiles
ChatState holds configuration, sessions, messages, generation, agent, telemetry, and UI slices. ConversationService and IndexedDB preserve conversations. Branching, turn removal, import/export, and profiles are present. Large attachments are stored outside persisted message trees. BaseProviderAdapter normalizes endpoints, SSE, reasoning, tools, and metrics; WebLLM depends on device resources and support.
API keys are encrypted in the browser. Custom passwords use derived material and a temporary cache; see Q1. Selected providers receive submitted content; local storage does not imply local inference.
4. Agent, MCP, and execution
Declarative tools include web search, page/PDF reading, JavaScript, charts, RAG lookup, checkpoint, plan, and finish. The backend provides file read/write, search, commands, and MCP services managed in a venv. The browser requests approval under saved policies and the backend requires a header token. Authorization rules reside in the client, so a client with the token can call RPC directly: see Q4.
The JavaScript sandbox uses an opaque-origin iframe, CSP, and a bounded Worker; this does not isolate shell processes. MCP servers and commands run with user privileges. Having tools does not guarantee every model can complete an agent task correctly.
5. RAG and ingestion
Ingestion normalizes text, processes PDF, and accepts individual gzip logs with a 50 MiB decompression limit; ZIP and TAR containers are rejected. Orama builds derived in-memory indexes from IndexedDB chunks. Retrieval is lexical: it works when query and corpus share terms, but synonym and paraphrase recall have not been measured. There is no native embeddings pipeline or general OCR. The custom PDF parser needs more validation with complex production documents.
6. Fit and next work
The product fits personal multi-provider chat, small or medium corpus exploration, and supervised tool use. There is no evidence of multi-user governance, strong isolation for hostile code, or offline reliability under precache failures. Useful next measures include retrieval benchmarks, live API matrix testing, and browser tests on other platforms.
The prior report's F1–F4 issues were reviewed: F1, F3, and F4 have new coverage, while F2 remains open because RPC does not check the mode enum. Current risks are listed in code and infrastructure.