Project Index
Project Index: Find anything in a large project in one call. Unreal Engine 5 command reference with parameters and examples.
Project Index: Find anything in a large project in one call. Unreal Engine 5 command reference with parameters and examples.
4 commands. Each shows its parameters and an example, and has a copyable deep link, so you (or an AI agent) can jump straight to one.
read_assetRead any asset as compact text: header, then one line per node and per link
Reads a Blueprint, Widget or Anim Blueprint, Control Rig, material, Niagara system, Behavior Tree, StateTree, PCG graph, MetaSound, Sound Cue, data table or any other asset as compact text, about ten times smaller than export_graph JSON. A Blueprint starts with its parent, interfaces, variables, dispatchers, components, changed class defaults and widget tree. Each graph follows as 'graph <name>', one line per node ('<ref> <title> {pin or setting=value}') and one per link ('<ref>.<pin> -> <ref>.<pin>'). A node ref is the start of its GUID (PCG and Control Rig nodes use their name). Only values that differ from the default are written. Pass several paths separated by commas. A cut reply lists its graphs: read one with --graph.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | Yes | Asset path, or several separated by commas |
| graph | string | No | Only this graph, by the name printed after 'graph' |
| max_chars | int | No | Most characters of text per asset (0 = all); a cut reply says so |
| budget_ms | int | No | Stop starting new assets after this many milliseconds; the rest come back as remaining |
| only_loaded | bool | No | Read only assets the editor already holds; others come back as not_loaded |
cfa read_asset /Game/Blueprints/BP_Door
cfa read_asset /Game/Materials/M_Base,/Game/Data/DT_Items
cfa read_asset /Game/Characters/ABP_Hero --graph AnimGraph --max-chars 0index_projectBuild or update the project index: every asset as compact text in Saved/CodeFizzEditorAgent/Index
Writes the project index: assets.tsv (every asset with its class, parent and saved hash), deps.tsv (what each asset uses) and text/<path>.txt (each readable asset in the read_asset format). The work runs in a separate headless Unreal process (the CFAProjectIndex commandlet), so loading thousands of assets never touches an open editor; the editor may stay open. Only assets whose saved hash changed since the last run are read again, so a second run takes seconds. Textures, meshes, sounds, animations and maps keep their asset line only. An asset that crashed an earlier run is skipped and listed (--retry-skipped tries it again). Waits for the run to finish (--wait-timeout); a run still going is reported as running, and repeating the call reports its progress. --status only reads the index state. Search the result with search_project, or grep the text folder directly.
| Parameter | Type | Required | Description |
|---|---|---|---|
| project | string | No | Project: a .uproject path, a project directory, or omit for the current folder |
| status | bool | No | Only report the index state and any run in progress |
| roots | string | No | Content roots, comma separated (default /Game plus project plugins with content) |
| max_assets | int | No | Most assets to read this run (0 = all that changed) |
| retry_skipped | bool | No | Try again the assets that crashed an earlier run |
| full | bool | No | Write every asset again, changed or not |
| config | string | No | Editor build to run: Development, DebugGame or Debug (default: the last one built, when the plugin has binaries for it, else Development) |
| wait | bool | No | Wait for the run to finish (false = start it and return) |
| wait_timeout | int | No | Seconds to wait before returning a run that is still going (default 100; 50 over MCP) |
| engine_path | string | No | Override engine resolution with an explicit engine root |
cfa index_project
cfa index_project --status
cfa index_project --roots /Game/Characters --max-assets 200search_projectSearch the project index: which assets hold these words, with the matching lines
Searches the project index index_project writes: asset paths, classes, Blueprint parents and the compact text of every read asset (nodes, pin values, variables, components, settings). Every word must appear somewhere in an asset; put a phrase in quotes. Each result lists its matching lines as L<line> [<graph>] <text>. --refs lists what an asset uses and what uses it instead. With the editor open, assets saved since the last index are refreshed first. Changed assets the editor has not loaded (after a version control sync) are read by index_project, which search starts in the background by itself; search again a few seconds later for their text. Works with the editor closed. An agent with a shell can also grep the index folder the reply names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | No | Words that must all appear in an asset; quote a phrase |
| regex | bool | No | Treat query as one regular expression (case-insensitive) |
| class | string | No | Only these asset classes or Blueprint parents, comma separated (e.g. Blueprint,Material) |
| path | string | No | Only assets under this content path (e.g. /Game/Characters) |
| refs | string | No | Instead of searching, list what this asset uses and what uses it |
| max_results | int | No | Most assets listed (totals stay exact) |
| max_lines | int | No | Most matching lines listed per asset |
| refresh | bool | No | Refresh changed, already loaded assets through the open editor first |
| auto_index | bool | No | When changed assets are pending, start index_project in the background to read them |
| project | string | No | Project: a .uproject path, a project directory, or omit for the current folder |
cfa search_project PrintString
cfa search_project "Apply Damage" --class Blueprint
cfa search_project IMC_Default --max-results 50
cfa search_project --refs /Game/Materials/M_Baserefresh_project_indexUpdate the project index for assets the open editor already holds (never loads one)
Compares every asset's saved hash with the index and rewrites the text of changed assets that are already loaded in the editor; the rest are reported as pending for index_project. search_project runs this itself before it searches.
| Parameter | Type | Required | Description |
|---|---|---|---|
| roots | string | No | Content roots, comma separated (default /Game plus project plugins with content) |
| budget_ms | int | No | Stop reading assets after this many milliseconds |
| max_results | int | No | Most failed or pending assets listed |
cfa refresh_project_index
cfa refresh_project_index --budget-ms 5000