Skip to main content

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.

📖 Documentation: opendssdesigner.ryanmsparks.com

screenshot

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 .dss file; Import existing .dss files (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: Open examples/demo-substation.oneline.json, 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.opendssDesigner exposes 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/solve and .dss export.
  • 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 .dss by compiling it with OpenDSS's own parser and reading the model back out.

See FUTURE_IMPROVEMENTS.md for the roadmap.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opendss_designer-0.1.1.tar.gz (548.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opendss_designer-0.1.1-py3-none-any.whl (218.5 kB view details)

Uploaded Python 3

File details

Details for the file opendss_designer-0.1.1.tar.gz.

File metadata

  • Download URL: opendss_designer-0.1.1.tar.gz
  • Upload date:
  • Size: 548.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for opendss_designer-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1964cde17b0b9547b0d1a36e08e2d7be504bea1b658da0b0f9d4255e9f730495
MD5 14ff368f3d500169c840c8d5ab7f91d0
BLAKE2b-256 5e3b9e88ed2e88a7a58a29e583144884d4bc18e10d04551507329c949e4c5975

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendss_designer-0.1.1.tar.gz:

Publisher: publish.yml on rsparks3/opendss-designer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opendss_designer-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for opendss_designer-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0aebe2800375b1e5fdc3c750a01c759a8761e0ed8da91aa60f5253a99e4c6629
MD5 0ad0721b364102fa0402b3f77e283077
BLAKE2b-256 02cd295337c99208ee378a695413d9de94a875c7ae756280d17b4f2074201c10

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendss_designer-0.1.1-py3-none-any.whl:

Publisher: publish.yml on rsparks3/opendss-designer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page