Skip to main content

tellegen power system visualization

tellegen

CI crates.io npm npm docs license

Browser visualization for DC OPF, AC power flow, SOCWR, and their sensitivities. Demand and rating edits preview through KKT sensitivity columns and commit as fresh solves in WebAssembly. Case parsing uses powerio. The project is named for Tellegen's theorem.

Live demo: tellegen.dev. Documentation: eigenergy.github.io/tellegen.

Packages

npm install @tellegen/engine   # case parsing and wasm solves, framework agnostic
npm install @tellegen/webmcp   # WebMCP tools and host adapter
npm install @tellegen/analytics # allowlisted, cookieless usage analytics
# map, panels, and solve card as Svelte components, with the map libraries
# they take as peer dependencies
npm install @tellegen/svelte maplibre-gl @deck.gl/core @deck.gl/layers @deck.gl/maplibre

@tellegen/engine exports case parsing, browser solving, the Study preview and commit calls, sensitivities, and generated TypeScript types. @tellegen/svelte exports the map, panels, local file flow, and solve card. @tellegen/webmcp exports the general OPF tools and the conditionally registered propose_capacity_plan and apply_capacity_plan tools through an adapter that does not depend on a UI framework. The hosted demo connects the live Svelte controller to that adapter. See the WebMCP guide. Start with the framework quickstart; examples/browser-minimal/ and examples/svelte-minimal/ are working integrations of each package.

Python

Python 3.11 and newer can install the native engine from PyPI:

python -m pip install tellegen
import tellegen

solution = tellegen.load("case30.m").solve()

The optional MCP server runs the engine in process over stdio:

python -m pip install "tellegen[mcp]"
tellegen-mcp

See the Python guide for calculations, source builds, and the MCP filesystem policy.

Rust

The solver itself is the tellegen crate. The packages above are WebAssembly bindings over it, so a Rust consumer skips them and calls it directly. Case parsing stays in powerio.

cargo add tellegen powerio serde_json
use tellegen::{solve_instance, SolveRequest};

let parsed = powerio::parse(powerio::Source::open("case30.m")?)?;
let network_module = tellegen::ir::balanced_module(parsed)?;
let instance = powerio::DcOpfInstance::from_network(network_module.value().clone())?;

// A DC OPF with bus 2 shifted 50 MW, and the LMP column against demand.
let request: SolveRequest = serde_json::from_str(
    r#"{
        "formulation": "dcopf",
        "edits": { "deltas": { "2": 50.0 } },
        "sensitivities": [
            { "operand": {"Price":"Active"}, "parameter": {"Demand":"Active"} }
        ]
    }"#,
)?;

let solved = solve_instance(&instance, &request).map_err(|e| e.to_string())?;
println!("{:?} objective {:?}", solved.status, solved.objective);

solve_module_json takes and returns JSON strings for callers that hold a stored PowerIO module. It accepts modules containing a balanced network or a declared problem instance; it does not accept bare network JSON. Default features carry the differentiable engine: DC OPF, AC power flow, and the KKT sensitivities. conic adds the SOCWR relaxation and its sensitivities. --no-default-features drops faer and num-complex and leaves the DC OPF solve on its own.

tellegen-cli wraps the same call for scripting: it reads a stored PowerIO module on stdin and writes the solve response to stdout. The request is the first argument, or @PATH to read it from a file when it is larger than the operating system's argument limit (about 128 KB on Linux). Its solve-module command writes an exact PowerIO solution module.

The multiconductor constant-power API, supported transformer profile, units, convergence options, and raw BMOPF limitations are documented in the multiconductor power flow page, with the full API reference in the multiconductor power-flow guide.

Demo

The demo serves three TAMU ACTIVSg synthetic grids and the CATS California Test System. These are synthetic networks on geographic footprints, not surveyed infrastructure:

case territory buses branches
ACTIVSg200 central Illinois 200 245
ACTIVSg500 South Carolina 500 597
ACTIVSg7000 Texas 6717 9140
CATS California 8870 10823

Self-hosted deployments can also register distribution feeders through an optional distribution-cases.json manifest. Portable PowerIO multiconductor modules open in the distribution viewer and can run supported AC power flow in the browser.

Bus color is locational marginal price. Selecting a bus shows ∂LMP/∂demand at that bus; selecting a binding line shows ∂LMP/∂rating. Dragging a slider applies the sensitivity column live; releasing it re-solves exactly in WebAssembly. The calculation selector offers DC OPF (the default), AC power flow, SOCWR, and experimental nonlinear AC OPF for balanced transmission cases. The website bundles the separate POUNCE WASI solver and enables AC OPF after its browser capability probe succeeds. AC OPF currently solves the unedited base case; demand/rating edits, LMPs, sensitivities, and saving/exporting AC OPF results are not supported.

Dropped .m, .raw, .aux, .epc, .pwb, .dss, and recognized JSON cases parse in the browser and never upload. Files with coordinates render in place; files without can be placed by clicking the map or paired with .csv, .json, or .geojson geography (powerio's GeoLayer reader; branch routes render as polylines). A PowerWorld .pwd file renders as approximate substation positions, or fills a sibling case without coordinates through its substation numbers. Saved PowerIO modules and exports carry the placement, and the layout downloads as a .geo.json layer.

Development

Prerequisites: Rust from rust-toolchain.toml with rustfmt, clippy, and the wasm32-unknown-unknown target; Node.js 22 or newer; wasm-pack 0.15.x; mdBook 0.5.x for docs.

# backend with the embedded fallback cases
TELLEGEN_ALLOW_FALLBACK=1 cargo run -p tellegen-server

# frontend demo (the dev server proxies /api to localhost:8000)
npm ci
npm run wasm
rustup target add wasm32-wasip1
npm run wasm:acopf
npm run build:engine
npm run build:webmcp
npm run build:analytics
npm run build:svelte
npm --workspace tellegen-frontend run dev

Tests:

cargo test --workspace --exclude tellegen-py
npm run check && npm run build && npm run smoke:web && npm run test:downstream

Case data comes from the operator, not the repository. With the ACTIVSg and CATS distributions under ~/Datasets, scripts/stage-data.sh ~/Datasets stages the complete cases into data/; the server serves whatever is staged.

Repository layout

  • crates/: Rust workspace — tellegen (engine), tellegen-synth (geographic synthetic grids), tellegen-wasm (WebAssembly), tellegen-server (HTTP), tellegen-cli, benchmarks
  • packages/engine/: @tellegen/engine browser package
  • packages/svelte/: @tellegen/svelte component package
  • packages/webmcp/: reusable WebMCP tools, validation, and registration
  • packages/analytics/: @tellegen/analytics, the allowlisted usage analytics shared with MapToGrid
  • apps/web/: the hosted demo, a SvelteKit consumer of the Svelte package
  • examples/: minimal Vite and Svelte integrations of each package
  • docs/src/: mdBook source; scripts/build-docs.sh builds it
  • docs/evidence/: checked-in measurement records (generator sweeps, WebMCP challenge runs, studies, multiconductor references) and the scripts that reproduce them

The HTTP API, deployment, and roadmap pages cover the server surface, hosting, and where the project is going.

Citing

tellegen is described in Interactive Power Flow in the Browser, presented at the Inaugural ACM Conference on Digital Transformation (ACM DXConf 2026, Ann Arbor, October 2026; doi:10.1145/3847238.3849038, arXiv:2610.01922). Please cite it, and the software release you used; GitHub's "Cite this repository" button reads CITATION.cff.

Samuel Talkington, Frederik Geth, Qian Zhang, Le Xie, and Skyler Liu. 2026. Interactive Power Flow in the Browser. In The Inaugural ACM Conference on Digital Transformation (ACM DXConf 2026), October 29–30, 2026, Ann Arbor, MI, USA. ACM, New York, NY, USA, 9 pages. https://doi.org/10.1145/3847238.3849038

@inproceedings{talkington2026tellegen,
  title     = {Interactive Power Flow in the Browser},
  author    = {Talkington, Samuel and Geth, Frederik and Zhang, Qian and Xie, Le and Liu, Skyler},
  booktitle = {The Inaugural ACM Conference on Digital Transformation (ACM DXConf 2026)},
  year      = {2026},
  month     = oct,
  location  = {Ann Arbor, MI, USA},
  publisher = {Association for Computing Machinery},
  address   = {New York, NY, USA},
  numpages  = {9},
  isbn      = {979-8-4007-3028-3},
  doi       = {10.1145/3847238.3849038},
  eprint    = {2610.01922},
  archivePrefix = {arXiv}
}

@software{tellegen2026software,
  title     = {tellegen: interactive power flow and optimal power flow in the browser},
  author    = {Talkington, Samuel and Geth, Frederik and Zhang, Qian and Xie, Le and Liu, Skyler},
  year      = {2026},
  version   = {0.4.0},
  url       = {https://github.com/eigenergy/tellegen},
  license   = {MIT}
}

License

MIT. See docs/src/third-party-notices.md for attributions.

Metadata

Release files for tellegen 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tellegen 0.7.0
File Size Uploaded Provenance Actions
tellegen-0.7.0.tar.gz 637.5 kB With provenance Details for tellegen-0.7.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for tellegen 0.7.0
File Actions
tellegen-0.7.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for tellegen-0.7.0-cp311-abi3-win_amd64.whl
tellegen-0.7.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details for tellegen-0.7.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
tellegen-0.7.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for tellegen-0.7.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
tellegen-0.7.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for tellegen-0.7.0-cp311-abi3-macosx_11_0_arm64.whl
tellegen-0.7.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for tellegen-0.7.0-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 47.3 MB

Release files / tellegen-0.7.0.tar.gz

Download URL tellegen-0.7.0.tar.gz
Size 637.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8ed6a39d6280a5ae6b887820ac1d0b49eb4e274870f8ae8c7c5bfee95ef3e89e
BLAKE2b-256 checksum
How to use checksums
44882987bbd9f9bf12280d43c839c2f34c3a9701df1f562bde2891d16c76bbf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / tellegen-0.7.0-cp311-abi3-win_amd64.whl

Download URL tellegen-0.7.0-cp311-abi3-win_amd64.whl
Size 10.1 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
6c12a59b038c4432dc8eff4acaf0608a0c6461c097b3a5716dcbc814daf4f603
BLAKE2b-256 checksum
How to use checksums
33cd5690c7d382056d10e4dff3a8219f045aff59b0705f846be97530dd5ce143
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / tellegen-0.7.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL tellegen-0.7.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
b541504519ff79a9524b36c302645e7483cb46f2d6d59128bc4d90b0a4e31442
BLAKE2b-256 checksum
How to use checksums
615ba965211fabbc44bfd8688e15eed071b8eb8508311bf3352ec2c8cb9292a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / tellegen-0.7.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL tellegen-0.7.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 8.7 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
3d37f4a89b6ccdce01616c159cabc995d99bf741e5d618763d6c045f48fd7346
BLAKE2b-256 checksum
How to use checksums
61bcf5ae4018034cd42f7e2b28681fa2b84423c4705a6912ee13cc4bd240f831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / tellegen-0.7.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL tellegen-0.7.0-cp311-abi3-macosx_11_0_arm64.whl
Size 8.6 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5b7578db4a83e8675570ab20073b958434b03373bb29bc6ef95a64c1a53d817b
BLAKE2b-256 checksum
How to use checksums
949a8b5d025d0bc7d6c75c0011c51786738291bb3fa94ceed160c3017121ecf9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / tellegen-0.7.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL tellegen-0.7.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 9.4 MB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
0abae9308d290e22e1df2e40474c481a77fedeea9a209526a9a34f6200eb1854
BLAKE2b-256 checksum
How to use checksums
14341d8cfd48e8ae270daa51758c90ef83351a1d385023fd9fb76b76b705b5f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Security for tellegen 0.7.0

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.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for tellegen-0.7.0.tar.gz

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 Nov 10, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.7.0 This release

6 release files Full provenance

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