mjEdit combines the most important tools for daily work in a single interface.

What makes mjEdit different from other JSON editors

Property Standard JSON Editors mjEdit
OSCAL detection Manual Automatic – detects document type and opens specialized tab
Schema validation Generic OSCAL v1.2.2 schemas pre-installed, real-time validation
AI integration None 154 MCP tools for fully automated OSCAL workflows
Compliance data Not available BSI Basic Protection (2,128 Controls), NIST 800-53 (468 Controls)
Document chains Not possible One click: Profile → SSP → AP → AR → POA&M
Inventory Management Not available Components (Classes) ↔ Inventory (Instances)

The core functions

JSON editor

Syntax highlighting, real-time validation, auto-repair, regex search, code folding and intelligent performance management for files from 1 MB+.

qFORM form system

JSON arrays are automatically rendered as editable forms with text fields, checkboxes, dropdowns, date pickers and embedded QC scripts in a Python sandbox.

Markdown editor

Split view, GitHub Flavored Markdown, advanced task system (priorities, assignment, time tracking) as well as PDF and HTML export.

PDF viewer

Annotations (highlighter, notes, freehand), secure text redaction (redaction) and zoom up to 400%.

Browser tab

Chromium-based web browser with tabs and lazy loading - including two-tier bookmarking system (global & private) and direct OSCAL Back Matter integration for easy reference creation.

Plugin system

Expandable via hook-based plugins with tab registration and menu integration.

System requirements

  • Windows 10/11, macOS 10.15+, Linux (Ubuntu 20.04+)
  • 4GB RAM (8GB recommended), 2000MB free space
  • No DATABASE is needed – all data is stored natively in JSON files in the user directory for maximum portability.
  • Most features are fully usable offline, including AI tools (local models) and OSCAL automatic document healing. Only the Translate function requires an internet connection as it accesses the DeepL API (For security-critical environments, this function can be disabled).

Automatic OSCAL document healing

… in practice rarely from exactly one tool: generators, scripts, older editors, AI pipelines or manual editing regularly produce schema-contradictory or outdated structures (forbidden top-level fields, incorrectly nested objects, legacy containers, missing mandatory fields, missing time zone suffixes…). Instead of leaving the user alone with cryptic validator messages, mjEdit automatically and idempotently heals such documents into an OSCAL v1.2.2-compliant state when opened and saved - without data loss.

What is automatically healed? (Excerpt, document type specific)

Document type Exemplary Healing
SSP Missing system-ids, empty role-id in responsible-parties, broken by-components entries, schema-contrary description field at statement level → automatic migration to by-components[this-system].description
SSP Deprecated system-interconnections (NIST-Pre-1.2.2) → Migration to modern components[type=interconnection]
SSP Schema-contradictory import-component-definitions → Migration to OSCAL-compliant back-matter.resources with rlinks
SSP Removing forbidden top-level containers (control-implementations), cleaning up empty mandatory arrays
Assessment Results Missing import-ap (required field) is supplemented with a placeholder stub
Assessment Results Missing assessment-platforms in local-definitions.assessment-assets is added
POA&M Legacy-remarks at risk level → lossless in props[name=legacy-remarks]
Component definition Detection and conversion of older structural formats
Mapping Collection NIST-specific mandatory and structural adjustments (provenance, map entry) automatically before schema validation

Characteristics of Healing:

  • Lossless: Content is migrated, not deleted. Texts from forbidden fields end up in semantically correct target fields (e.g. this-system description or remarks).
  • Idempotent: Repeated open/saves produce the same result - the heal does not “wobble” between two states.
  • Active when opening AND when saving: So the validation sees exactly what is actually saved.
  • Statistics in the log: For each save, it is logged how many fields of which type were migrated (e.g. statement_descriptions_migrated: 3).
  • Round-trip capable: Migrated content is displayed again in the appropriate dialog when reopened - the user does not notice the internal restructuring.

Practical tip: If you inherit an OSCAL document from a third-party tool or an old inventory, you don’t have to manually fix the schema. Open once in mjEdit, save once – done. The document can then be clearly validated against OSCAL v1.2.2.

Comprehensive functions

  • Efficient Tree View with real-time filter
  • Automatic backups and Version archive
  • Complete Bilingualism (German/English)
  • Intelligent path correction for portable OSCAL projects
  • Automatic OSCAL document healing (see above)
  • Print and export as XML, CSV, PDF, HTML, Markdown

Latest Improvements – May 2026

In the last few weeks, the OSCAL work with mjEdit has been further refined in several steps.

Smart Open for evidence files. If the user clicks on a Back Matter resource in the assessment plan or assessment results, mjEdit recognizes the file type and opens it in the appropriate tab: JSON in the editor/form, Markdown in the Markdown tab, PDFs in the PDF tab and images directly in the new Screenshot tab.

Consistent Back Matter UX in AP, AR, SSP and Profiles:

  • New menu item “Show preview” in AP and AR (analogous to SSP).
  • “Edit resource” gives clear feedback in the event of invalid indexes.
  • Duplicate entry “Edit Evidence” has been removed from the AP context menu.
  • The node 📚 Back-matter now always appears in the profile tab - even with empty profiles.

Dual subject workflow: component AND inventory item. The subject picker reads the pool via the full import chain AR → AP → SSP (import-ap.hrefimport-ssp.href). If the user selects inventory-item as the main type, the picker also shows suitable components (implemented-components). Type-dependent icons appear in the AP tree (🧩 Component, 📦 Inventory-Item, 👤 User, 🏢 Party, 📍 Location, 🖥️ this-system) as well as markers [alle], [inkl. N], [excl. M].

Language quality. Several EN translations have been corrected and new strings have been added - the bilingual interface remains consistent even with the new functions.