OpenDSS Designer
A free, open-source graphical user interface (GUI) for
OpenDSS, EPRI's distribution system
simulator — built on OpenDSSDirect.py.
Draw a substation-style one-line (single-line) diagram in your browser — the
drawing is the circuit model — then run a power flow and see voltages,
loading, and violations right on the diagram. Import existing .dss files,
edit visually or in a spreadsheet view, and export runnable OpenDSS scripts.
🚀 Try it: opendssdesigner.ryanmsparks.com — no sign-up, runs in your browser
📖 Documentation: opendssdesigner-docs.ryanmsparks.com
Features (v1)
- Click-and-place palette: Source (Vsource), Busbar, 2-winding Transformer, Breaker/Switch, Load — placement is sticky, so keep clicking to drop several; Esc to stop
- Drag-to-wire: drag between terminals; choose Wire (ideal connection, merges buses) or Line (a real OpenDSS Line with impedance and length). Illegal connections (busbar-to-busbar wires, self-connections, duplicates) are refused with an explanation
- Stretchable busbars with connection points along both edges (top and bottom rows), plus implicit junction buses when you wire elements directly together
- Double-click a breaker to open/close it; double-click a wire or line to add a draggable routing point and shape the run yourself (double-click a point to remove it)
- Properties panel with the OpenDSS parameters for each element (kV, kVA, impedances, phases 1/2/3, wye/delta, load model…)
- Solve button → snapshot power flow → overlays on the diagram: bus voltages (pu), element loading as pie charts + %, power flows, with color-coded violations (undervoltage blue, overvoltage/overload red) and total losses in the status bar — or toggle Auto to re-solve automatically on every circuit change
- Live validation: unconnected terminals, missing source, islands, duplicate names, kV mismatches — errors disable Solve and halo the offending element
- Spreadsheet view: an Elements tab in the bottom panel lists every source, busbar, transformer, line, breaker, and load in an editable table (plus a read-only bus-results table after a solve) — edit values in bulk with an Excel-style fill-down handle, click ⌖ to locate an element on the diagram
- Undo/redo (Ctrl+Z / Ctrl+Y), delete key, grid snapping, pan/zoom, minimap
- Save/Open projects as JSON; Export a runnable
.dssfile; Import existing.dssfiles (select the main file plus anything it redirects to) with a hierarchical auto-layout — source at top, loads beneath their buses
Install & run
Requires Python 3.10+.
pip install opendss-designer
opendss-designer # starts a local server and opens your browser
(Or from a clone of this repo: pip install -e . — see Development below for
building the frontend.)
Options: --port 8721, --no-browser.
Try it: pick a circuit from the Samples dropdown, press Solve.
Development
Backend (FastAPI + OpenDSSDirect.py):
pip install -e .[dev]
pytest # backend test suite
PYTHONPATH=src python -m opendss_designer.cli --no-browser # serve API + built frontend
Frontend (React + Vite + React Flow), in a second terminal:
cd frontend
npm install
npm run dev # http://localhost:5173, proxies /api to :8721
To bundle the frontend into the Python package (before building a wheel):
python scripts/build_frontend.py
Architecture
frontend/— React + Vite app. React Flow canvas with custom ANSI-symbol nodes; zustand store is the canonical circuit model (zundo for undo history).window.opendssDesignerexposes the stores for console scripting.src/opendss_designer/core/connectivity.py— union-find translation of the drawn graph into OpenDSS bus names (wires merge terminals; Line edges are series elements).src/opendss_designer/core/compiler.py— circuit JSON → ordered OpenDSS Text commands; the same commands back both/api/solveand.dssexport.src/opendss_designer/core/engine.py— solves and extracts per-bus voltages and per-element loading through the OpenDSSDirect API. Full rebuild per solve; no engine state persists between requests.src/opendss_designer/core/importer.py— imports.dssby compiling it with OpenDSS's own parser and reading the model back out.
See FUTURE_IMPROVEMENTS.md for the roadmap.
Metadata
Release files for opendss-designer 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| opendss_designer-0.3.0.tar.gz | 641.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| opendss_designer-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 971.4 kB
Release files / opendss_designer-0.3.0.tar.gz
| Download URL | opendss_designer-0.3.0.tar.gz |
|---|---|
| Size | 641.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7441ecf5751f033c60f7b8d25558e3a1f0c3545cfa98dbb00340b2ab1ec4d9c
|
|
BLAKE2b-256 checksum How to use checksums |
5651849bf942b9ce697fc76c3894b60e9879c1e1ceba95e18c3b1e45fe80fb4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / opendss_designer-0.3.0-py3-none-any.whl
| Download URL | opendss_designer-0.3.0-py3-none-any.whl |
|---|---|
| Size | 329.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b67c9c31abb2c1226d95133e058fcbe9c8ff50cb343cd058dbfa559c373fc621
|
|
BLAKE2b-256 checksum How to use checksums |
cb0f1bc9a6fbe2527e050659965da8775ad0b085528fe9c7483b9ac90e4b177a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency log