Open-source tooling for EnergyPlus, built on one object model in two languages. Around it: an MCP server your AI agent can drive, a visual web editor, and an engine build that runs simulations in the browser.
The same ideas — O(1) lookups, a live reference graph, IDF and epJSON treated as one format — expressed once for Python and once for TypeScript. Pick the runtime, not the compromise.
A fast, modern Python toolkit for EnergyPlus with O(1) lookups, automatic reference tracking, and zero dependencies.
pip install idfkit
An MCP server that exposes building energy modeling to AI agents. Let Claude author, validate, and simulate EnergyPlus models.
uvx idfkit-mcp
Language Server and VS Code extension for intelligent idfkit editing. Autocomplete, hover docs, signature help, and AST-based type inference.
pip install idfkit-lsp
Interactive EnergyPlus Input/Output reference documentation. Browse object types, fields, and constraints — all searchable and hyperlinked.
docs.idfkit.com
A Claude Code and Codex plugin bundling idfkit's MCP server with skills, agents, and slash commands for building energy modeling.
/plugin install idfkit
A sibling to the Python library rather than a transliteration of it. A synchronous core with async edges, so the same code runs in Node, a browser, a worker, or at the edge.
npm i @idfkit/core @idfkit/schemas
Loader, worker and output parsers for EnergyPlus version 26.1.0 software compiled to WebAssembly. Verified to reproduce a native build, not to approximate one.
npm i @idfkit/engine @idfkit/engine-assets
Search the TMYx station index and pull weather files browser-side. The archive is unzipped in the page and handed straight to the engine, with no server in the path.
npm i @idfkit/weather
@idfkit/engine packages EnergyPlus version 26.1.0 software compiled to WebAssembly. A model built with @idfkit/core can be solved in the browser, without a server.
Loads the live demo from shoebox.idfkit.com. About 10 MB of engine on first visit, cached afterwards — then every solve is local.
A one-zone model authored with @idfkit/core and solved by @idfkit/engine. Drag a slider and it re-solves a design day in about 50 ms — fast enough that there is no Run button. Pick a weather site and it fetches the EPW and DDY in the browser and runs all 8,760 hours in about 0.7 s.
Worst divergence from a native build: 3.5e−9 over 3.79 million data points. No COOP/COEP headers required. HVACTemplate objects expand unchanged.
A full editor built on the same stack as everything above — visual HVAC design, 3D geometry, and in-browser simulation. No install, no server.
@idfkit/engineLegacy tools hold you back. idfkit is built from the ground up for speed, correctness, and developer experience.
O(1) dictionary-based lookups vs linear scans. On a 1,700-object IDF, idfkit is 4,000x faster than eppy.
Automatic live graph of cross-object relationships. Rename a zone and every reference updates instantly.
Core library uses only the Python standard library. Optional extras for pandas, plotting, and cloud storage.
Built-in Vector3D and Polygon3D classes. Calculate surface areas, zone volumes, and coordinate transforms natively.
Search by location or coordinates. Download EPW and DDY files. Inject design days automatically.
MCP server with 37 tools lets AI agents author, validate, and run energy simulations autonomously.
An EnergyPlus build compiled to WebAssembly runs in a worker on the page, with no install or server. Its results match a native build to within 3.5e−9.
Both libraries bundle the schemas for 17 EnergyPlus releases. A model is read and written against the version it declares.
858 interfaces generated per version, so a misspelled field is a compile error rather than a silent run-time surprise. All 17 versions ship in ~1 MB gzipped.
Autocomplete, hover docs, signature help, and AST-based type inference for IDF files in VS Code.
The test corpus is the EnergyPlus example set. All 760 files parse, write and re-parse to a deeply equal document — 290,313 objects, zero round-trip differences.
Searchable, hyperlinked EnergyPlus I/O reference with field constraints and cross-references — all in the browser.
# Install
pip install idfkit
# Load a model
from idfkit import load
model = load("building.idf")
# O(1) lookup by name
zone = model["Zone"]["Office_Floor_1"]
# Automatic reference tracking
zone.name = "Main_Office"
# ^ All referencing objects update automatically
# Run simulation
results = model.simulate()
print(results.summary())
// Install
npm install @idfkit/core @idfkit/schemas
import { loadIdf, saveIdf } from '@idfkit/core/node';
import type { TypeMap } from '@idfkit/core/types/v26-1';
import { createEnergyPlus } from '@idfkit/engine';
const doc = await loadIdf<TypeMap>('building.idf');
// Typed and autocompleted, from the schema
for (const zone of doc.all('Zone')) {
console.log(zone.name, zone.ceiling_height);
}
// Renaming rewrites every reference to the old name
doc.require('Zone', 'SPACE1-1').name = 'Open Office';
await saveIdf(doc, 'renamed.idf');
// Optional: simulate with EnergyPlus compiled to WebAssembly
const ep = await createEnergyPlus({ assetBaseUrl: '/energyplus' });
const result = await ep.run({ idf, epw });
// Add to your Claude MCP config
{
"mcpServers": {
"idfkit": {
"command": "uvx",
"args": ["idfkit-mcp"]
}
}
}
// Then ask Claude:
// "Create an office building model
// with 3 zones and run an annual
// simulation for Denver, CO"
# Envelop runs entirely in your browser
1. Open Envelop in any modern browser
2. Import an IDF or start from scratch
3. Design HVAC systems visually
4. Edit schedules with intuitive UI
5. View 3D geometry in real-time
6. Simulate with in-browser EnergyPlus
# Powered by @idfkit/engine (WebAssembly)
# No server required
# Works offline once the engine is cached
All tools are in active beta. We'd love for you to try them and let us know what's working and what isn't.
Have a feature request or general feedback?