Reference

The um CLI

Ten command groups that do the mechanical parts of modding, so the agent doesn't improvise them. Every group has --help with examples.

um scan

Find installed games and fingerprint one: engine, scripting runtime, anti-cheat, mod loaders, saves. Read-only. Ends with ranked routes and the playbook to read.

um scan
um scan --list                 # Steam / Epic / Xbox installs (Windows, WSL, Linux, macOS)
um scan terraria               # fuzzy name or a path
um scan "C:\Games\Foo" --json  # machine-readable, for agents

um fal

Game assets from fal over plain REST. Needs FAL_KEY. Every call appends to a manifest so any asset can be traced and regenerated.

um fal
um fal sprite "a rusty scrap drone enemy, side view, 16-bit pixel art" --name drone
um fal image "key art: ..." --aspect 16:9
um fal edit "same drone, second animation frame" --ref assets/gen/drone.png
um fal rmbg in.png                     # background removal
um fal pixelate in.png --colors 24
um fal texture "mossy cobblestone"     # seamless tiling
um fal pbr "rusted sheet metal"        # basecolor/normal/roughness/metalness/height
um fal model3d concept.png             # image -> textured GLB (Trellis 2)
um fal rig character.glb --animate     # auto-rig a humanoid
um fal sfx "laser rifle shot" --seconds 1.5
um fal music "tense boss battle, chiptune, 140 bpm" --seconds 60
um fal voice "You dare challenge the Mothership?" --voice-id Adam
um fal video still.png "camera orbits the boss"
um fal search "image to 3d" | um fal schema fal-ai/trellis-2 | um fal price fal-ai/trellis-2

um comfy

Images from a local ComfyUI server: no API key, your own GPU. Run any workflow exported with Export (API).

um comfy
um comfy status
um comfy image "a red health potion" --sprite      # plain background, then cut out
um comfy run my_workflow.json --set 6.text="a blue mana potion" --set 3.seed:=42

um sprite

Turn generated art into the exact frames a game expects.

um sprite
um sprite cutout in.png out.png                 # flat background -> transparent
um sprite fit in.png out.png --size 64x26       # trim + nearest-neighbour fit
um sprite pixelate in.png out.png --size 32x32 --colors 16 --outline
um sprite palette in.png out.png --from ref.png # snap to a game's palette
um sprite sheet out.png f1.png f2.png --cols 4
um sprite slice sheet.png outdir --frame 32x32
um sprite frames in.png outdir --n 3 --kind bob # quick idle animation
um sprite team-mask in.png out.png --hue blue   # player-colour mask
um sprite seamless in.png out.png

um render3d

Render a GLB into sprite frames from a game's camera with Blender. Presets: aoe2 (16 headings), iso8, trueiso, topdown, side, turntable.

um render3d
um render3d model.glb out/ --preset aoe2 --length 80 --anims idle:10:bob,walk:12:bob --shadows
um render3d model.glb out/ --preset side --canvas 128 --length 110
um render3d model.glb out/ --preset iso8 --canvas 256x256 --engine eevee

um win

Drive Windows games from an agent, natively or from WSL: GPU-safe window capture, input that only reaches the game, recording with game-only audio.

um win
um win setup                                   # PowerShell tools + ffmpeg with gfxcapture
um win ps [name]
um win launch --steam 105600 -- -windowed
um win shot --exe AoE2DE_s.exe out.png --scale 0.33
um win drive --proc AoE2DE_s "focus" "click 640 360" "key 0x1B"
um win record --exe Game.exe --out C:\caps\take1 --seconds 30
um win kill <pid>                              # exact PID only
um win reg set KEY VALUE DATA --type REG_DWORD # backs up first

um video

Showcase videos with ffmpeg and Pillow: contact sheets to pick moments, then an EDL (JSON) compiled into a titled, beat-cut video with music.

um video
um video contact clip.mp4 sheet.png --every 2
um video first-frame take.mkv
um video beats music.mp3
um video mux take.mkv take.mkv.audio.raw take.mkv.json out.mp4
um video compile edl.json out.mp4 --preview

um backup

Snapshot, diff and restore save folders. A restore snapshots the current state first, so it can itself be undone.

um backup
um backup create "C:\Users\me\Documents\My Games\Terraria" --name terraria-saves
um backup list
um backup diff terraria-saves
um backup restore terraria-saves

um publish check

Lint a mod folder before sharing. Fails on byte-identical game files, leaked keys and .env files; warns on decompiler fingerprints, big engine archives, absolute paths and missing credits.

um publish check
um publish check ./MyMod --game "C:\Program Files (x86)\Steam\steamapps\common\Terraria"

um kb

The shared knowledge base. Search works outside the repo too, from a synced GitHub copy.

um kb
um kb search "unreal pak mod"
um kb search terraria --route loader-api
um kb show games/terraria/fal-arsenal.md
um kb new --game "Hades II" --title "A new boon god" --from-scan "hades"
um kb check knowledge/games/hades-ii/new-boon-god.md
um kb pr knowledge/games/hades-ii/new-boon-god.md --yes   # after your human says OK

Examples adapted from each module's built-in help in um/. Two no-build Windows tools ship alongside: WinDrive input and ProcLoopback game-only audio (PowerShell with embedded C#).

Frequently asked questions

How do I install the um CLI?

Plugin installs and clones put it on PATH. Anywhere else: uv tool install git+https://github.com/rehan-remade/universal-modder (or pipx install). It is not on PyPI. See the install guide.

Does um need an AI agent?

No. It's a normal Python CLI and every command works by hand. It was designed so agents can call it, with --json output where it matters.