A browser-based editor for DOCSIS configuration files, powered by the OpenDCI schema and reference implementation.
Live editor: https://roc-ops.github.io/open-dci-web/
- Monaco-based JSON editor with DOCSIS schema validation and auto-complete
- Inline comments for valid values (e.g.
// enabled(1)) - Hover documentation from
x-docsis-*schema metadata - Binary DOCSIS config encode/decode via WASM (Go reference implementation)
- MIB-aware OID resolution for SNMP objects
- No server required — runs entirely in the browser
- Shareable config links via URL — share configs, link to lines or TLV paths
Configs can be shared via URL. Click the Get Link button in the toolbar to copy a shareable link to your clipboard.
The editor content is compressed and embedded directly in the URL hash:
https://roc-ops.github.io/open-dci-web/#config=eJwLzy...
Most DOCSIS configs compress well and fit within browser URL limits. A warning is shown if the URL exceeds ~8,000 characters.
Load a config from the open-dci repository:
https://roc-ops.github.io/open-dci-web/#file=docs/examples/basic-cm.jsonc
Load from a public GitHub Gist by ID:
https://roc-ops.github.io/open-dci-web/#gist=abc123def456
Load from an arbitrary URL (subject to CORS):
https://roc-ops.github.io/open-dci-web/#url=https://example.com/my-config.jsonc
Combine any of the above with line or TLV navigation parameters:
| Parameter | Example | Description |
|---|---|---|
&line=N |
&line=15 |
Scroll to and highlight line N |
&highlight=M-N |
&highlight=12-18 |
Highlight lines M through N |
&tlv=Path |
&tlv=DownstreamServiceFlow.0.MaxSustainedTrafficRate |
Navigate to a TLV by JSON path |
Example with deep link:
https://roc-ops.github.io/open-dci-web/#file=docs/examples/basic-cm.jsonc&tlv=MaxNumCpes
Load custom MIBs from a Gist or URL. The MIB source should be a JSON object mapping filenames to SMIv2 content ({"IF-MIB.mib": "...", ...}).
Augment — add MIBs alongside the bundled set:
https://roc-ops.github.io/open-dci-web/#config=...&mibs=abc123def456
Replace — swap out the bundled MIBs entirely:
https://roc-ops.github.io/open-dci-web/#config=...&mibs-replace=abc123def456
The parameter accepts either a Gist ID or a full URL.
Load a vendor-specific TLV schema (e.g. custom TLV 43 sub-TLVs) from a Gist or URL:
https://roc-ops.github.io/open-dci-web/#config=...&vendor=abc123def456
For Gists, all files are loaded as separate vendor schemas. For URLs, the content is loaded as a single schema. Vendor schemas are always additive — they augment any existing schemas.
Combine config, vendor schema, and custom MIBs in one link:
https://roc-ops.github.io/open-dci-web/#config=eJwLzy...&vendor=abc123&mibs=def456
This gives the recipient full context: the config with the vendor's TLV definitions and MIB set pre-loaded.
- URL length: Inline configs (
#config=) are limited by browser URL length. Very large configs should use a Gist or file link instead. - CORS: Arbitrary URLs (
#url=) may be blocked by CORS. GitHub raw URLs and Gist API work from the browser. - Public only: Gist and file loading only works with public resources (no authentication).
pnpm install
pnpm devRequires Go 1.21+:
pnpm build:wasmpnpm buildSee OpenDCI for schema and codec licensing.