MDMA
MDMA is an open-source format and package collection from Mobile Reality for turning Markdown into interactive interfaces. Authors place structured component definitions inside fenced mdma blocks. A renderer can then display forms, tables, charts, or approval controls alongside ordinary text.
Give generated UI a defined contract
The publisher lists ten component types, including forms, buttons, task lists, tables, and approval gates. Each type has a schema. A custom type allows the host application to register its own component variants rather than letting a model invent arbitrary new types.
MDMA separates parsing, validation, runtime state, and rendering into packages. Its deterministic validator is described as providing 17 lint rules and six automatic repair strategies without an LLM call. That can catch structural problems, but validation of a document's shape does not establish that its content or requested action is trustworthy.
Render across web and native applications
The project lists renderers for React, Vue 3, and React Native. Headless packages handle state, bindings, policy, and audit separately from the view. The website describes a shared theme-token shape, with web styling also exposed through CSS variables.
For agent applications, an AG-UI bridge streams documents and routes user actions back into a run. Its described interrupts let a run pause at an approval gate and resume after an answer. The host still needs to decide who can approve an action and what the application is permitted to execute.
Evaluate the format without treating examples as assurance
The project publishes example workflows such as contact forms, onboarding checklists, and budget approval. Its website also reports a cross-format benchmark and model evaluations. Those are project-reported results; Franklin has not independently reproduced them or checked every comparison's methodology.
MDMA is described as MIT-licensed, with source available on GitHub. Developers evaluating it can inspect the parser, schemas, and runtime before connecting real actions. Start with a constrained component set and check how invalid or incomplete documents behave. An interactive element that renders correctly can still contain an inappropriate webhook target, misleading field label, or unsupported business claim.
