Appearance
What is guido?
guido is a UI runtime you drive from another language. Your program creates windows and widgets (buttons, text fields, lists, trees, tabs, dialogs) by sending messages to the runtime; the runtime renders them and reports events back. Application logic never leaves your process or your language.
ts
import { GodotClient } from "godot-ui-sdk";
const client = new GodotClient();
await client.connect(); // starts the runtime, opens a window
const button = await client.instantiate("Button");
button.set("text", "Click me");
(await client.getRoot()).addChild(button);
button.on("pressed", () => console.log("clicked"));The messages underneath are JSON ("instantiate a Button", "set its text", "report when it is pressed"). The SDKs wrap them in objects, properties and callbacks; languages without an SDK send the JSON directly.
The role is similar to Electron's, with different trade-offs: instead of bundling a browser and writing HTML, you ship a 21 MB runtime and create widgets through an API.
Where the widgets come from
The runtime is a reduced build of the Godot engine, which has a complete UI toolkit (used to build Godot's own editor). guido keeps the UI parts: windows, layout containers, the Control widget set, themes, image and font loading, and international text shaping. The game-engine parts (3D, physics, scripting) are compiled out, which is why the runtime is small.
Two consequences:
- Screens can be designed visually in the Godot editor, saved as scene files, shipped with your app, and driven by node name. See Custom scenes & assets.
- The runtime executes no application code. Click handlers, state and I/O live in your process. There is no embedded scripting language.
Process model
By default, connect() starts the runtime as a child process and talks to it over stdin/stdout. There is no port or socket to configure, and a runtime crash cannot take your process down.
The same runtime file can instead be loaded into your process as a native library, which matters when you want to ship a single file. Both modes use the same protocol and API. See Running the engine.
What guido is not
- A browser. There is no HTML, CSS or DOM. Layout uses anchors and container widgets (VBox/HBox/Grid), like native toolkits. A Vue renderer (
godot-vue) is available for declarative composition. - A game engine binding. There is no GDScript and no 3D in the runtime.
- A new widget set. These are Godot's existing Controls, with prebuilt Adwaita, Breeze, Fluent and macOS-style themes included.
Platform support
Linux x86-64 is the tested, packaged platform. The runtime code is portable; macOS and Windows status is tracked in Platform support.