Project and learning

Two learning tracks: building an AI client and learning to guide its development with agents.

ZeroChat is a personal learning project about AI clients and agentic execution. The work combines clear goals, decision review, and result validation.

1. Learning chat client technology

The journey goes from a simple prompt-built chat client to one with local knowledge and tools:

  • Chat and providers: SSE streaming, reasoning, vision and API adaptation through a shared provider architecture.
  • Data and documents: IndexedDB persistence, PDF extraction and retrieval-augmented generation (RAG) with Orama and ZeroChatDB.
  • Agentic execution: tool loops, JavaScript isolated in Web Workers, MCP, permissions and a local server with development tools.
  • Inference and context: caching, token limits and checkpoints for long conversations, plus models running inside the browser with WebLLM and WebGPU.
  • Shared desktop and mobile UI: responsive web design, navigation, and shared controls that provide a consistent experience across desktop screens and mobile devices.

2. Learning to guide coding agents

As the infrastructure grows—browser, storage, providers, MCP server, and local backend—learning also means keeping control of the whole system:

  • Plan before executing: define scope, stages, acceptance criteria and the tests that will confirm the outcome before requesting a change.
  • Turn decisions into rules: document architecture, contracts and the workflow to guide the agent, with centralized state in ChatState and separate responsibilities.
  • Discuss and simplify with the model: question proposals, reuse modules and remove unnecessary complexity before it becomes permanent infrastructure.
  • Verify each step: use unit, infrastructure, integration, and browser tests alongside security audits to check real behavior.

Automated tests as a checkpoint

Tests are the checkpoint at every stage of work with coding agents. Before implementation, they define what must remain stable and what must change; during the work, they check the affected module; when a stage closes, the full suite confirms that the change has not broken other system boundaries. Interface changes are checked in the browser and integration changes in local server infrastructure tests. If a test fails, the agent must correct or simplify the proposal before moving forward.

The plan is to keep repeating this cycle: choose a capability, agree on a simple design, assign scoped changes, review tests and document what was learned.

This plan summarizes the project's practical evolution and quality criteria.