
What it is
A desktop app that opens, edits, plays and ships Deki scenes. It hosts the engine in-process, so the components you write in C++ are compiled into a plugin DLL and show up in the inspector immediately. Packages load the same way.
Windows today; Linux runs with native file dialogs.
Download
The editor is free and open source (Apache 2.0). Each release has one archive
per platform, with the compiler inside: unpack it anywhere and runDekiEditor. There is nothing else to install, not even a C++ toolchain.
| Platform | Archive |
|---|---|
| Windows x86-64 | DekiEditor-<version>-windows-x86_64.zip |
| Linux x86-64 | DekiEditor-<version>-linux-x86_64.tar.gz |
Get the latest release on GitHub, where each archive has its SHA-256 beside it.
The Windows build is not code-signed yet, so its first launch shows a SmartScreen “Windows protected your PC” dialog: click More info, thenRun anyway. To build it yourself instead, the source and the setup guide are at github.com/dekiengine/deki-editor.
The panels

Hierarchy is a multi-select tree. Drag to reparent or reorder, and structure edits share the undo history with value edits.
| Panel | What it does |
|---|---|
| Inspector | Multi-object property editor, built from reflection. Mixed values show as ---. |
| Scene View | 2D canvas with gizmos, pan, zoom and selection. |
| Asset Browser | GUID-keyed assets with previews. |
| Console | Filtered log from the engine, packages and your plugin. |
| Build | Build firmware, export assets, flash the device. |
| Profiler | Hierarchy, flat and flame-graph views, plus memory. |
| Frame Capture | Save play-mode frames to PNG. |
| Font Importer | TTF / OTF import, or baked bitmap fonts. |
| Boards Manager | MCU, memory, display and peripherals per board. |
| Package Manager | Install, remove and update packages. |
The inspector writes itself
Tag a field DEKI_EXPORT. The C++26 static-reflection codegen picks it up at
build time and emits the property descriptor and its serialization. Nothing else
to register.
DEKI_CATEGORY("Demo")
DEKI_DESCRIPTION("Bobs the object up and down on a sine wave.")
class Bobber : public Deki::Component
{
public:
DEKI_EXPORT DEKI_SLIDER(0, 64)
float amplitudePx = 12.0f;
DEKI_EXPORT DEKI_SLIDER(0, 4)
float speedHz = 0.6f;
void Awake() override;
void Update() override;
};

The descriptor picks the widget too: a slider for a ranged float, a colour
picker for a colour, an asset picker for AssetRef<T>, a dropdown for an enum.
Other attributes: DEKI_TOOLTIP, DEKI_GROUP, DEKI_UNIT(px) to edit metres
in pixels, DEKI_VISIBLE_WHEN to hide a field until another allows it, andDEKI_EDITOR_ONLY to keep one out of the build.
What you see is what the device draws

Play mode runs the scene through the same RenderToBuffer() path as hardware,
at the panel’s real size. Edit mode, play mode and the board agree, because
it is one renderer rather than a preview of one.
Hot reload
Focus the editor after an edit and HotReloadService diffs the source tree,
unloads the package and plugin DLLs, rebuilds through CMake, and re-registers
the component editors, with the scene still running.
Undo that behaves
Every edit is a command, and commands merge: dragging a slider is one undo entry, not hundreds. A multi-selection edit batches into one command applied to every selected object.
Build and flash
The Build panel reads the board config and runs the toolchain end to end:
generate the platform CMake, build firmware (ESP32 through ESP-IDF), export
assets to storage/ as .tex, MessagePack .scene and baked fonts, then flash
over USB. The same export populates an SD card for offline boot.
Scripting it
The editor ships an MCP server. Launch with --mcp and the scene, assets,
package manager, builds and screenshot capture are on JSON-RPC, enough to take
a project from nothing to a captured screenshot. Every editor image on this site
was made that way.