mjEdit combines the most important tools for daily work in a single interface.
What sets mjEdit apart from other JSON editors
| Property | Standard JSON editors | mjEdit |
|---|---|---|
| OSCAL detection | Manual | Automatic – detects document type and opens specialised tab |
| Schema validation | Generic | OSCAL v1.2.1 schemas preinstalled, real-time validation |
| AI integration | None | 88 MCP tools for fully automated OSCAL workflows |
| Compliance data | Not available | BSI Grundschutz (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 capabilities
JSON editor
Syntax highlighting, real-time validation, auto-repair, regex search, code folding and intelligent performance management for files larger than 1 MB.
qFORM form system
JSON arrays are automatically presented as editable forms with text fields, checkboxes, dropdowns, date pickers and embedded QC scripts running in a Python sandbox.
Markdown editor
Split view, GitHub Flavored Markdown, extended task system (priorities, assignment, time tracking) plus PDF and HTML export.
PDF viewer
Annotations (highlighter, notes, freehand), secure text redaction and zoom up to 400 %.
Browser tab
Chromium-based web browser with bookmarks, tabs and lazy loading – including a two-tier bookmark system (global & private) and direct OSCAL back-matter integration.
Plugin system
Extensible via hook-based plugins with tab registration and menu integration.
Automatic OSCAL document healing
In real-world projects, OSCAL JSON files rarely come from a single tool: generators, scripts, older editors, AI pipelines or manual edits regularly produce schema-violating or outdated structures (forbidden top-level fields, mis-nested objects, legacy containers, missing mandatory fields, missing timezone suffixes, …). Instead of leaving the user alone with cryptic validator messages, mjEdit automatically and idempotently heals such documents on open and save into an OSCAL v1.2.1-compliant state – without data loss.
What gets healed automatically? (excerpt, document-type specific)
| Document type | Example healing |
|---|---|
| SSP | Missing system-ids, empty role-id in responsible-parties, broken by-components entries, schema-violating description on a statement → automatic migration into by-components[this-system].description |
| SSP | Outdated system-interconnections (NIST pre-1.2.1) → migrated to modern components[type=interconnection] |
| SSP | Schema-violating import-component-definitions → migrated to OSCAL-compliant back-matter.resources with rlinks |
| SSP | Removal of forbidden top-level container (control-implementations), cleanup of empty mandatory arrays |
| Assessment Results | Missing import-ap (mandatory) is filled with a placeholder stub |
| Assessment Results | Missing assessment-platforms in local-definitions.assessment-assets is added |
| Assessment Results | Datetime fields without timezone suffix (start, end on result and assessment-log entries) → forced to UTC (Z) |
| POA&M | Legacy remarks on risk level → losslessly moved to props[name=legacy-remarks] |
| Component definition | Detection and conversion of older structural formats |
| Mapping collection | NIST-specific mandatory and structural adjustments (provenance, map-entry) applied automatically before schema validation |
Properties of the healing:
- Lossless: content is migrated, not deleted. Text from forbidden fields lands in semantically correct target fields (e.g.
this-systemdescription orremarks). - Idempotent: repeated open/save yields the same result – the healing does not flap between states.
- Active on open AND on save: so the validator sees exactly what is actually saved.
- Statistics in the log: every save records how many fields of which kind were migrated (e.g.
statement_descriptions_migrated: 3). - Round-trip aware: migrated content reappears in the matching dialog on the next open – the user never notices the internal restructuring.
Practical tip: If you inherit an OSCAL document from a foreign tool or a legacy archive, you don’t have to fix the schema by hand. Open once in mjEdit, save once – done. The document then validates cleanly against OSCAL v1.2.1.
Cross-cutting features
- Efficient tree view with real-time filter
- Automatic backups and a version archive
- 4 themes: Dark, Light, Blue, Green
- Full bilingual UI (German / English)
- Intelligent path correction for portable OSCAL projects
- Automatic OSCAL document healing (see above)
- Print and export as XML, CSV, PDF, HTML, Markdown