Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

godot-grpc is a GDExtension: you build a native library and point a .gdextension manifest at it.

Requirements

  • Rust ≥ 1.94 (Edition 2024)
  • Godot 4.6+
  • Linux or macOS (Windows is future work)
  • protoc (only to produce descriptor sets / run codegen)

Build the extension

git clone https://github.com/quobox/godot-grpc
cd godot-grpc
# tier 1 only (smallest binary):
cargo build -p godot-grpc --release
# or with the tier-2 runtime descriptor API:
cargo build -p godot-grpc --features tier2 --release

The default feature set is tier-1 only, to keep the binary small. Enable tier2 if you want the Dictionary/GrpcMessage runtime API or use generated code.

Add it to your Godot project

Copy the built library into your project (e.g. res://addons/godot-grpc/lib/) and add a .gdextension manifest:

[configuration]
entry_symbol = "gdext_rust_init"
compatibility_minimum = 4.6
reloadable = true

[libraries]
linux.debug.x86_64   = "res://addons/godot-grpc/lib/libgodot_grpc.so"
linux.release.x86_64 = "res://addons/godot-grpc/lib/libgodot_grpc.so"
macos.debug          = "res://addons/godot-grpc/lib/libgodot_grpc.dylib"
macos.release        = "res://addons/godot-grpc/lib/libgodot_grpc.dylib"

When developing against a checkout, you can instead point the library paths directly at target/debug/ with a relative res://../../target/debug/... path.

Headless note: the first time a project loads a new .gdextension, run the editor once (godot --headless --editor --path <project> --quit) so Godot records it in .godot/extension_list.cfg. After changing registered classes, rebuild the library (cargo build) before launching Godot, or it loads a stale copy.

Verify

func _ready() -> void:
    print(ClassDB.class_exists("GrpcChannel"))  # true once loaded