ZeroChat · Current code audit · 7.11.0

Features and maturity

Verified inventory of conversation, providers, agent, MCP, and RAG.

25 de septiembre de 2026 · dev · Codex (OpenAI)

← Back to architecture

Functional 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

AreaImplemented and testedLimit
Conversation and stateSessions, branches, attachments, streaming, telemetry, and export; state and UI tests.Persistence is browser-local and depends on origin and storage quotas.
ProvidersOpenAI-compatible base plus Claude, Gemini, Ollama, OpenRouter, and WebLLM adapters.Live compatibility depends on API, CORS, model, and browser; tests use doubles.
Agent and toolsTool-call loop, approvals, web search, JavaScript, charts, and RAG tools.Models must generate valid calls; shell and MCP need a backend and supervision.
Local MCPLocal processes and tools over authenticated HTTP; infrastructure tests.Commands and MCP servers have no operating-system privilege isolation.
Document RAGIndexedDB, chunking, Orama lexical index, corpus/document search, and images.No embeddings, general OCR, or semantic retrieval benchmark.
Interface and PWAES/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.