system
Engine-level controls: run builds and tests, console commands, the job queue, and read-only scene inspection.
What it's for
The system namespace covers the process- and engine-level operations that sit
underneath the asset- and actor-specific namespaces: spawning Unreal Build Tool for a scripted
recompile, running automation tests and reporting pass/fail counts, issuing console commands at
engine scope, and managing the long-running job queue that every slow operation flows through.
Its inspection branch, system.inspect.*, is the read-only counterpart to the
mutating actor and level namespaces. When your assistant only needs to look — count the actors in
a level, find every instance of a class, read the active viewport camera, or dump one object's
properties — it reaches for system.inspect so nothing in the scene is touched. Reserve
the write-side actor.* and level.* calls for when the next step actually
changes state.
Console commands span two namespaces. Use system.console_command for project- and
engine-wide cvars and editor-process commands; use editor.console_command when the
command targets the editor world or viewport. When a command name is unfamiliar, discover it
through the console search sub-namespace before running it.
Slow operations here never block the connection. Builds, test runs, and folder dumps return a job
ticket immediately and keep running in the background; your assistant polls
system.job_status to learn when they finish, and can list or cancel jobs in flight.
Examples
Run automation tests and wait for the result
Your assistant kicks off the suite, gets a ticket back, and polls the job until it is done.
You: Run the PinWright automation tests and tell me if anything failed.
call("system.run_tests", {filter:"PinWright"})
→ {ticket_id:"job_7f2a", status:"running"}
call("system.job_status", {ticket_id:"job_7f2a"})
→ {status:"completed", result:{passed:214, failed:0}}
Done. All 214 tests passed, 0 failures.
Set an engine-scope console variable
A project- or engine-wide cvar goes through the process-scope console command.
You: Bump the texture streaming pool size to 2048.
call("system.console_command", {command:"r.Streaming.PoolSize 2048"})
→ {ok:true}
Done. Streaming pool size set to 2048.
Find actors in the level without touching them
The read-only inspection branch reports what is in the world so the assistant can plan a change.
You: How many StaticMeshActors are in the current level?
call("system.inspect.find_by_class", {className:"StaticMeshActor"})
→ {actors:[{name:"Floor", ...}, {name:"Wall_01", ...}], count:12}
Done. Found 12 StaticMeshActors in the active world.