gdcli¶

gdcli drives a running Godot editor through its own APIs: nothing sits in the model's prompt, nothing is written behind the engine's back.
gdcli scene tree --depth 2
gdcli node add Sprite2D --parent Main --name Hero
gdcli prop set Hero position 'Vector2(64, 96)'
gdcli scene save
gdcli talks to a small editor plugin over loopback, and the plugin performs every operation
through EditorInterface and EditorUndoRedoManager. Nothing is written by hand, so scene
inheritance, instanced sub-scenes and resource references survive, and every change lands in
your undo history as one gdcli: <cmd> step.
Why not something else¶
-
An MCP server
Tool schemas (dozens of them) sit in the conversation forever. The transport is not the problem; the surface is. A CLI keeps the surface in the shell.
-
Editing
.tscnby hand
Inheritance and instanced scenes are not representable as text patches without a lossless parser, and one bad patch makes the engine refuse the file.
-
Screen automation
Godot's accessibility tree exposes editor chrome only: buttons, tabs and dock shells. The scene tree, inspector rows and menus are invisible to it.
-
Injecting into the editor process
The release binary is fully stripped, so this needs a per-version C++ shim β and it only reaches the same
EditorInterfaceAPI a plugin already has.
Read the full design Wire protocol
What it can do¶
-
Scene editing
Nodes, properties, signals, groups, instanced sub-scenes, undo/redo.
-
Project data
Settings, autoloads, the input map, plugin toggles, filesystem scans, script checks.
-
Editor UI
Selection, inspector, main screen, toasts, real PNG screenshots, play/stop.
-
The running game
Inspect and change live nodes, evaluate expressions, capture
printoutput.
Install¶
cargo install gdcli-cli
gdcli plugin install --project /path/to/game
# restart the Godot editor once
gdcli editor status
Prebuilt binaries and one-line installers are on the install page.
Where to go next¶
| If you want to⦠| Read |
|---|---|
| set up a project | Install |
| edit a scene from the shell | Usage |
| let an agent drive Godot | For agents |
| know why it is built this way | Design |
| implement a client | Wire protocol |