Skip to content
ClaudeUnreal
GitHub

cu Commands

cu exposes nine subcommands. Three are local-only (read the bundled manifest or local files) and six hit the TCP bridge.

SubcommandTCPPurpose
cu listList manifest commands (optionally filtered)
cu helpFull reference for one command
cu searchFuzzy search the manifest
cu logRead filtered editor / PIE log (local file)
cu pingProbe the bridge, report latency
cu doctorDiagnose CLI / manifest / editor state
cu execSend a command to the bridge
cu previewOpen an asset editor and screenshot its viewport
cu catalogBuild a static HTML asset catalog of /Game
Terminal window
cu list [--category <id>] [--limit N]

Reads manifest.json; emits one line per command:

spawn_actor [scene_actors] Create a new actor in the current level.
delete_actor [scene_actors] Remove an actor from the level by name.
...

--limit 0 (or omitted) lists all matches.

Terminal window
cu help spawn_actor

Output sections: full description, params (typed --flag form with required vs optional), and a runnable cu exec example.

This is the same content unreal_doc(<command>) returns over MCP — the two paths are interchangeable.

Terminal window
cu search "focal length"
cu search foliage --category landscape_foliage --limit 5

In-memory keyword scoring (no embeddings):

MatchScore
Query is substring of command name+10
Query token appears in command name tokens+5 each
Query token appears in summary+3 each
Query token == category id+2 each

Sorted descending, capped at --limit (default 10).

Terminal window
cu ping

Returns ✓ pong on success. Use --json for machine-parseable output.

Terminal window
cu doctor

Emits:

  • Manifest path and command count
  • bridge_commit recorded at manifest build time
  • Bridge port and editor reachability (probes ping)

Useful first step when something stops working — pinpoints whether the manifest is stale, the editor is down, or the port is blocked.

Three input styles, in order of typical use:

Terminal window
# Typed flags — derived from manifest schema
cu exec spawn_actor --name MyCube --type StaticMeshActor --location 0,0,100
# JSON string — easier for nested params
cu exec spawn_actor --params-json '{"name":"MyCube","type":"StaticMeshActor","location":[0,0,100]}'
# JSON file — large or reused payloads
cu exec spawn_actor --params-file /tmp/spawn.json

If --params-json or --params-file is given, typed flags are ignored.

Terminal window
cu log [--category <name>] [--verbosity <level>] [--max N] [--json]

Reads <ProjectDir>/Saved/Logs/<Project>.log locally — no TCP, works whether the editor is running or not. Filters by --category (e.g. LogTemp, LogBlueprintUserMessages) and --verbosity (all / info / warning / error). Returns the most recent --max matches (default 100).

Replaces the older get_runtime_log MCP tool — same semantics, no MCP token cost.

Terminal window
cu preview /Game/Meshes/SM_MyMesh.SM_MyMesh [--out <png>]

Opens the asset editor and captures its viewport at editor quality — full PBR, Nanite, streamed textures, studio lighting. Single asset only, ~1–3s per call. Default output is a temp file keyed by the asset path; the PNG path is printed on stdout.

Currently static mesh only; other asset types follow.

Terminal window
cu catalog [--out DIR] [--path /Game/...] [--classes CSV]
[--batch N] [--size N]

Walks the asset registry under --path (default /Game), extracts a thumbnail per asset, and emits a self-contained static HTML grid plus a machine-readable manifest:

<ProjectDir>/Saved/ClaudeUnreal/Catalog/
index.html ← grid + class chip filter + search + copy-path
manifest.json ← {generated_at, counts, assets:[{path,class,tier,png}]}
thumbs/*.png

Two-tier extraction:

  1. tier: cached — reads the FObjectThumbnail baked into the .uasset on save (the same image the Content Browser shows). Fast, covers ~90% of meshes / materials / textures.
  2. tier: rendered — falls through to ThumbnailTools::RenderThumbnail for assets without a cached thumbnail (e.g. fresh Blueprints).

Assets without either path are recorded tier: icon-fallback (no PNG, grey card); per-asset failures become tier: error rows but never abort the run.

Default class whitelist: StaticMesh, SkeletalMesh, Material, MaterialInstanceConstant, Texture2D, ParticleSystem, NiagaraSystem, Blueprint (Blueprint additionally filtered to AActor-derived).

--batch controls how many asset paths each TCP call carries (default 50); per-batch progress lines go to stderr, the final file:// URL to stdout.

Hard fail if PIE is active — RenderThumbnail shares the GPU and won’t run concurrently.

Terminal window
cu catalog --path /Game/Megascans --batch 50
# stderr: [catalog] 200/847 (cached=187 rendered=11 fallback=2 error=0)
# stdout: file:///.../Saved/ClaudeUnreal/Catalog/index.html

These work on any subcommand:

FlagPurpose
--port NBridge port (default 55557)
--jsonEmit JSON to stdout instead of human-readable lines
--quietSuppress stdout; report via exit code only
  • Discovery flow — find the right command when you don’t know its name.
  • Reference — the full per-category command index.