# MBZoo > See what's inside your MBZ — documentation ## Guide - [What is an .mbz?](/mbzoo/docs/guide/what-is-mbz.md): An .mbz file is a Moodle course backup: a package containing the course's sections, activities, files, settings and (optionally) user data. - [¿Qué es un .mbz?](/mbzoo/docs/es/guide/what-is-mbz.md): Un archivo .mbz es una copia de seguridad de un curso Moodle: un paquete con las secciones, actividades, archivos, ajustes y (opcionalmente) datos de usuario del curso. ## Activity support - [Activity & content support](/mbzoo/docs/guide/activity-support.md): MBZoo renders what the backup actually contains, and is transparent about what it cannot do. Unknown third-party plugins never break the course view. Legend: ✅ implemented · 🔜 planned next · ⏳ research (Q-012/Q-013/Q-016). Media files (video, audio) preview inline with native controls; a media element decodes its file but never executes it. - [Actividades y contenidos soportados](/mbzoo/docs/es/guide/activity-support.md): MBZoo renderiza lo que la copia contiene realmente y es transparente con lo que no puede hacer. Los plugins de terceros desconocidos nunca rompen la vista del curso. Leyenda: ✅ implementado · 🔜 planeado · ⏳ investigación (Q-012/Q-013/Q-016). Los archivos de vídeo y audio se previsualizan en línea con los controles nativos; un elemento multimedia decodifica su archivo pero nunca lo ejecuta. ## Architecture - [Architecture](/mbzoo/docs/ARCHITECTURE.md): Status: experimental but working end to end (2026-08-25). Durable decisions live in research/decisions/adr/; this page summarizes the shape. packages/core/src/moodle/ holds one parser per thing the format expresses, each reading the minimum subset it needs: Two rules keep that list from becoming a pile: the normalized model in packages/core/src/model/backup.ts is the only contract that crosses a package boundary, and XML library objects never escape src/moodle. Key boundaries (see ADRs for rationale): Portable core (ADR-0004): Web-platform primitives only; the normalized model in packages/core/src/model/backup.ts is the only cross-package contract.Archive abstraction (ADR-0005): both real .mbz containers supported; lazy/streaming access deferred behind ArchiveReader.XML adapter (ADR-0006): event-based parsing with input/text budgets; saxes is an implementation detail.Security (ADR-0009): hostile input posture; textContent by default; a single sanitization path for backup HTML (ADR-0012); no content execution in the app origin.Sandboxed content (ADR-0017, ADR-0020, ADR-0022): executable HTML runs only in an opaque-origin iframe with an injected CSP, with assets inlined as data: URIs; multi-page sites are navigated within that contract.Never guess a URL (ADR-0019): $@…@$ link tokens decode from rules read in Moodle source, or not at all — an undecodable one loses its href rather than resolving against MBZoo's own origin.Refusing parsers (ADR-0021): the PHP serialize() reader supports the scalar and array subset that appears and refuses objects and back-references outright. Performance model today: parse runs in a Worker; only metadata XML is read eagerly; binary assets are never extracted unless requested. ZIP entries are sliced and inflated on demand (ADR-0029); a TAR.GZ is decompressed into a Blob and indexed as it streams, so no allocation is larger than the entry being read (ADR-0036). Large-file strategy is tracked as TASK-003 / Q-004..Q-007. ## Privacy - [Privacy](/mbzoo/docs/PRIVACY.md): Nothing you open in MBZoo leaves your device. The viewer is a static web application. Backups are read with the browser File API and parsed inside a Web Worker on your machine. There is no upload path — no backend, no telemetry, no analytics.The CLI reads local files only.External resources referenced by course content are not fetched automatically. Course links that Moodle rewrote into $@…@$ tokens are decoded and offered as links, never requested (ADR-0019). If a future feature needs network access, it will be opt-in and documented here first. This is a product property enforced by architecture (static deployment, no server code), not just a policy statement. - [Privacidad](/mbzoo/docs/es/PRIVACY.md): Nada de lo que abras en MBZoo sale de tu dispositivo. El visor es una aplicación web estática. Las copias se leen con la File API del navegador y se analizan dentro de un Web Worker en tu máquina. No existe ruta de subida: sin backend, sin telemetría, sin analíticas.El CLI solo lee ficheros locales.Los recursos externos referenciados por el contenido del curso no se descargan automáticamente. Los enlaces del curso que Moodle reescribió como fichas $@…@$ se descodifican y se ofrecen como enlaces, nunca se piden (ADR-0019). Si una función futura necesitara red, será opcional y se documentará aquí primero. Esto es una propiedad del producto, garantizada por la arquitectura (despliegue estático, sin código de servidor), no solo una declaración. ## Others - [Sistema de investigación y evidencia](/mbzoo/docs/es/guide/research.md): Cada afirmación durable en MBZoo traza a un registro registrado: REPO-NNN / STD-NNN / TECH-NNN — fuentes inspeccionadasAN-NNN — análisis (hechos vs interpretación)EXP-NNN — experimentos reproducibles (comandos, entorno, medidas)ADR-NNNN — decisiones de arquitectura (cuerpo de decisión legible; investigación en la Adenda; se sustituyen, nunca se reescriben)TASK-NNN / Q-NNN — trabajo seguido y preguntas abiertas El sistema se valida automáticamente: bun run research:validate comprueba IDs, metadatos requeridos y referencias cruzadas; bun run research:indexes genera los índices (CI detecta desviaciones). Ver research/ en el repositorio y research/AGENTS.md para las reglas operativas. Copias legibles por máquinas de este sitio: llms.txt (índice) y llms-full.txt (todas las páginas). Cada página HTML tiene un .md hermano y un control Copy Markdown. Versión en inglés - [index](/mbzoo/docs/es/index.md) - [Development](/mbzoo/docs/guide/development.md) - [Research & evidence system](/mbzoo/docs/guide/research.md): Every durable claim in MBZoo traces to a registered record: REPO-NNN / STD-NNN / TECH-NNN — inspected sourcesAN-NNN — analyses (facts vs interpretation)EXP-NNN — reproducible experiments (commands, environment, measurements)ADR-NNNN — architecture decisions (readable decision body; investigation in the Addendum; supersede, never rewrite)TASK-NNN / Q-NNN — tracked work and open questions The system is machine-validated: bun run research:validate checks IDs, required metadata and cross-references; bun run research:indexes generates the indexes (drift-checked in CI). See research/ in the repository, and research/AGENTS.md for the operational rules.