# Zayeed > Author, deliver and mark assessments on web, Windows, Linux and Android — one account, one database, offline. Zayeed is an assessment platform: author questions, deliver them, mark them and report on them, on the web, on Windows and Linux, and on Android. Two rules shape the whole product. 1. **One engine, many shells.** Grading, sessions, documents, formats and analytics live in shared packages. A shell is a user interface over them and never re-implements a rule, so the same answer gets the same mark on a phone and on a laptop — structurally, not as a policy. 2. **One logical database.** Every device holds a full SQLite replica of one schema and converges through an HLC-ordered operation log. Items, attempts, results and settings are rows in that one database. Offline is the normal case; the network only ever adds other people's work to what you already have. ## What is distinctive - **Formatting is markable.** Question, accepted answers and candidate response are all marked text in one document model, so an author can require the subscripts in H2SO4 for a chemistry item and ignore them for a prose item. Declared per item; never moved by the leniency control. - **One leniency control.** A staged tolerance pipeline — whitespace, case, punctuation, accents, spelling variants, edit distance — behind a single setting, with the reason shown next to every mark. - **Answers are expressions, not lists.** ANY, ALL, COUNT(n of m), synonym groups, declared part counts, ordering sensitivity, partial credit. - **The keyboard travels with the exam.** Keys emit strings rather than key codes, so a script the device cannot type is still answerable. Latin, maths and chemistry, IPA and Bangla are built in. - **Access arrangements are engine-level.** Extra time is a share of the paper applied by returning a longer session configuration; rest breaks stop the clock and are derived from the pause events already in the log. Granted on the account, honoured by every shell. - **It manages the test, not only the question.** A six-state item workflow with named roles (an author cannot approve their own question); papers built to a blueprint — so many from this topic at this difficulty, with the bank's headroom shown as you write it; a register of candidates, cohorts and access arrangements where the most lenient variation wins and the screen says which; rubric marking with blind double marking, a tolerance for disagreement and a moderator whose mark is appended rather than overwriting; and Angoff standard setting that produces the evidence, not just the number. All of it on all four shells, offline. - **Two delivery contracts over one engine.** `open` is optimised for friction approaching zero — no account, nothing installed, a question typed mid-room. `assessed` is optimised for defensibility — the content arrives first, the clock cannot be bought back, and the attempt survives an appeal. The mode is chosen per sitting, not per build: there is no exam build and no polling build, and the same `.mcq` can be delivered either way. Exactly three things differ — what is required before a sitting starts, what is recorded while it runs, what is kept when it ends. - **A pack can be played in front of a room.** People join on their phones with a six-character code — no account, no install — and the host paces the questions from the screen at the front. A quiz is marked by the same engine a sitting uses, so the score agrees with the paper. The tally type has nowhere to put a participant id, so a projector cannot be made to show who voted for what. Questions can be improvised mid-room; ratings, net promoter and rankings are not new item types (a rating is a numeric item carrying its scale, a ranking is the ordering type), which is why all four shells got them at once and why a room can be saved back to a `.mcq` pack. - **The relay can be your own laptop.** The live server runs on the machine at the front of the room with one command — the same program the hosted site runs, with phones joining over the local network and nothing crossing the router. It announces itself only because a person started it, and keeps nothing by default. A hall with no internet still runs rooms, and a poll about pay leaves no data with a third party because there is no data anywhere else. Proven at 1,000 simulated phones against one relay: every acknowledged answer counted, slowest answer 40ms, no snapshot ever carrying another participant's id. - **A silent recording is the failure mode this is engineered against.** A picture that fails to draw fails visibly; a recording that fails to play fails silently, and a candidate cannot tell a broken clip from a clip of silence. So an assessed sitting that needs a format the machine cannot decode is refused at the door with the reason, an open room is warned and runs, and a browser's `maybe` is never flattened into a `yes`. Sound is Opus and film is VP9, both in WebM — royalty-free, and therefore actually present on the Linux desktops that will not decode H.264 or AAC. SVG is sanitised on the way in and refused if it cannot be made safe. - **An attempt can prove what it was.** Every event is hashed into a chain over canonical bytes with a published version string, sealed at submission with Ed25519 and verifiable offline from a public key alone. An unsealed attempt is reported as unsealed, never as tampered — those are different findings and only one of them is about a person — and the integrity report never accuses anybody. - **Lockdown ships its own limits.** Three levels, each printing on screen what it cannot do, with the per-platform truth stated rather than averaged: a Linux desktop on Wayland is not permitted to suppress screenshots, so Supervised there is Focused plus display detection and the app says so. None of it can see a phone under the desk, and a camera pointed at the screen defeats every screenshot restriction on every platform. - **Sections with their own clocks and their own doors.** Per-section time limits, sealed sections that close behind the candidate, and per-section back navigation — opt-in, so a paper without them is unchanged. - **46,573 generated conformance cases** pin behaviour that must not drift: 30,240 over the grading grammar, because "we improved the marker" and "we changed people's grades" are the same sentence; 15,000 over media acceptance and SVG sanitising; 1,333 over the attempt chain's canonical bytes. Two of those suites carry promises that are asserted live and are not allowed to be re-baselined — the sanitiser may never emit executable content, and the attempt chain may not change its bytes while claiming the same version. - **The file format is specified, not just shipped.** `.mcq` is an encrypted, signed binary container with an encrypted directory and a per-pack key wrapped into key slots — passphrase, public key, device, entitlement, exam window. There is no global key and none compiled into any binary, and a build gate asserts that any key holder can always export in the clear. - **Work travels three ways and they agree.** An account over the network, two devices on one local network with no server at all, or a `.mcq` bundle carried by hand. All three funnel into one merge rule, so they end in the same rows. - **Certificates, licences and sealed papers are checked offline.** A certificate verifies ten years from now from the issuer's public key alone. An exam paper can be sealed to a key the invigilator releases only inside the window. A licence can decide whether a screen opens; a build gate stops it ever reaching the marker. ## Platforms - Web — React + Vite, full SQLite replica in the browser's private file system, installable, offline. - Windows / Linux / macOS — Tauri 2. Adds .mcq files on disk, several windows on one replica, lockdown mode, and device-to-device sync on the local network. - Android — Expo. Full authoring as well as sitting, .mcq save/open through the share sheet, and device-to-device sync on the local network. A teacher whose only computer is a phone is not an edge case. - Server — Fastify on Node, SQLite or Postgres. Only needed for sync, LTI and join-by-code. ## Interop LTI 1.3 (Deep Linking, launch, Assignment and Grade Services), QTI 3.0 import and export, and the encrypted .mcq pack format for estates with no network at all. Import reads spreadsheets, CSV, Moodle XML, GIFT, Aiken, QTI, .mcq/.mcqx files, legacy MCQPro Access banks and pasted text, always previewing what it would do to the library before anything is written. Self-hosting is first class, including air-gapped. ## Pages - [Zayeed](https://zayeed.org/): Author, deliver and mark assessments on web, Windows, Linux and Android against one account and one database — offline, with the same mark on every device. - [Features](https://zayeed.org/features.html): Every Zayeed capability, grouped by the package it lives in: grading, documents, the .mcq pack format, keyboards, analytics, sync and interoperability. - [Test and quiz management](https://zayeed.org/management.html): Review workflow, blueprint-built papers, registers and access arrangements, double marking with moderation, timed sections, and Angoff standard setting. - [Platforms and offline sync](https://zayeed.org/platforms.html): Web, Windows, Linux and Android over one account and one database. A full local replica on every device, pairing by code, and offline as the normal case. - [Authoring and automatic grading](https://zayeed.org/authoring.html): Marked text end to end, a nested boolean grading grammar, one leniency control over the whole tolerance pipeline, and a keyboard that travels in the pack. - [Live rooms and exam delivery](https://zayeed.org/delivery.html): Audience polling with no accounts and formal exam delivery from one engine and one .mcq file: media checked at the door, tamper-evident attempts, lockdown that states its limits. - [Accessibility and access arrangements](https://zayeed.org/accessibility.html): Extra time as a share of the paper, stopped-clock rest breaks, text scale, high contrast and a screen-reader layout — applied by the engine on every shell. - [LTI 1.3, QTI 3.0 and self-hosting](https://zayeed.org/integrations.html): An LTI 1.3 tool with Deep Linking and grade return into Moodle, Canvas or Blackboard. QTI 3.0 import and export, encrypted .mcq packs; self-hosting too. - [Security](https://zayeed.org/security.html): A capability-scoped action set with no process spawn, no shared encryption password and no stored card numbers — plus how to report a vulnerability. - [Documentation](https://zayeed.org/docs.html): Getting started, pairing a second device, writing a question, exam packs, self-hosting on SQLite or Postgres, and the four tests that gate every change. - [Downloads](https://zayeed.org/downloads.html): Get Zayeed for the browser, Windows, Linux and Android, or build any shell from source with the same commands the release builds use. - [Pricing and licensing](https://zayeed.org/pricing.html): Zayeed is in preview and nothing is purchasable yet: the intended shape — free tier, team plans, per-candidate institution licensing — and what is firm. - [Try Zayeed](https://zayeed.org/demo.html): Ten minutes to judge a marker: answer a paper wrongly on purpose, read the reason beside every mark, then take it offline and onto a second device. - [FAQ](https://zayeed.org/faq.html): Does it work offline, will a phone and a laptop give the same mark, can it grade short answers, how do access arrangements work, and can you host it yourself. - [Contact](https://zayeed.org/contact.html): Email Zayeed about the grading grammar, an institution licence, an air-gapped deployment, a bug, a security report or an accessibility barrier. - [Video guide](https://zayeed.org/help-video.html): A 38:36 chaptered walkthrough of Zayeed on the running application: authoring, the answer tester, sitting a paper offline, and marking with reasons. ## Machine-readable - [features.json](https://zayeed.org/features.json) — architecture, platforms, grading, accessibility, interop, security and pricing as structured data. - [llms-full.txt](https://zayeed.org/llms-full.txt) — the long form of this file. ## Contact hello@zayeed.org