Argent Vega (Amazon Fire TV)
Critical
- Vega is a TV platform
- D-pad only. Drive every interaction with
tv-remote. Never usegesture-*/ touch — they are unsupported on Vega. - Always
describebefore navigating. Find the live cursor from the tree — the[focused]element, or[selected]when nothing reports[focused](the toolkit often marks the highlighted item[selected]whilefocusedstays false). Never guess focus position from a screenshot. - All tools take the Vega
serial(fromlist-devices) asudid.
The navigation loop
Per screen, two calls:
describe— find the cursor ([focused], or[selected]if no[focused]) and your target.- Compute the full D-pad path from focus → target (count rows/columns from the frames) and fire it as one
tv-remote {button:[...]}ending inselect.
Then describe again to confirm. On a miss, run the loop again.
Tools
Device lifecycle
list-devices→ Vega devices appear with aserial(use asudid) and avvdImage. Start here to get both.boot-device {vvdImage}— starts the single SDK-managed VVD (e.g.vvdImage:"tv") and returns itsserial. Skip iflist-devicesalready shows a running device.- Stopping the VVD — run
vega virtual-device stopin your shell. Caveat: the CLI only tracks VVDs it starts in the foreground. As a result, it may report "virtual device not running" for a VVD started withboot-device, and won't stop it. To restart that VVD, runboot-device {vvdImage, force: true}. This stops the running VVD process before booting it again.
App lifecycle
launch-app {udid, bundleId}—bundleId= interactive component app id from manifest.toml (e.g.com.example.app.main)restart-app {udid, bundleId}— terminate + launchreinstall-app {udid, bundleId, appPath}— uninstall + install;appPath= a.vpkgdescribe {udid}→ on-screen element tree. The discovery tool — call before navigatingtv-remote {udid, button}— D-pad; single key, path array, orrepeatkeyboard {udid, text}or{udid, key:"enter"}— focus the field with the D-pad firstscreenshot {udid, scale?}— captured host-side viaadb
describe
Nested element tree from the on-device automation toolkit — each line is a button/text/image with its label, id (test_id), [clickable], and [focused]/[selected] + a normalized [0,1] frame. [focused] is the live D-pad cursor when present; in practice the toolkit usually leaves focused false and marks the highlighted item [selected], so treat [selected] as the cursor whenever no element reports [focused]. Navigate on the tree alone. If the tree comes back empty → restart-app and retry.
tv-remote
button is a single key or a whole path. Keys: up/down/left/right, select, back, home, menu, playPause, rewind, fastForward. Single: {button:"down"}. Repeat one key: {button:"down", repeat:3}. Whole path in one call: {button:["up","right","right","select"]} — strongly prefer this for any multi-step move.
Fast Refresh
Needs a Debug build + Metro running. argent only connects to Metro — it does not start Metro or port-forward (any platform); do these in your shell.
- Build a Debug
.vpkgand install it:vega device install-app -p <path/to/debug.vpkg> npm start(Metro on :8081; usenpm start, notnpx react-native start)vega device start-port-forwarding --port 8081 --forward false(reverse)vega device launch-app -a <appId>
Metro must be up before launch; confirm http://localhost:8081/json/list lists a Hermes React Native target. Then .tsx edits hot-reload live.
Troubleshooting
describereturns an empty tree →restart-app(the automation toolkit attaches at launch), then retry.- Keyboard / D-pad input is ignored → enable developer mode inside the VVD:
vsm developer-mode enable. - Editing
node_moduleshas no effect → you are on a Release build. Release Vega apps load JavaScript and native code split and stored on device, so patchingnode_modulesonly works in Debug builds.
Platform notes
- Metro connects only on port 8081 — fixed, cannot be changed.
- Profiling / crashes → use the
amazon-devices-buildertools-mcpserver (analyze_perfetto_traces,get_app_hot_functions,symbolicate_acr). - Unsupported tools, with the Vega equivalent:
gesture-→ usetv-remote;open-url→ not wired;debugger-→ JS debugger not supported on Vega. These fail withTool '<id>' is not supported on vega vvd.(or... is not yet implemented on vega.).
Knowledgebase
- Search Vega docs with the
search_documentationtool (amazon-devices-buildertools-mcpserver). - Community Q&A at community.amazondeveloper.com.



