[{"data":1,"prerenderedAt":470},["ShallowReactive",2],{"navigation":3,"\u002Fstation-runtime\u002Fconfiguration":99,"\u002Fstation-runtime\u002Fconfiguration-surround":465},[4,16,28,55,82],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-rocket",{"title":12,"path":13,"stem":14,"icon":15},"Your first station run","\u002Fgetting-started\u002Ffirst-run","1.getting-started\u002F2.first-run","i-lucide-play",{"title":17,"path":18,"stem":19,"children":20,"icon":22},"Core concepts","\u002Fcore-concepts","2.core-concepts\u002F1.index",[21,23],{"title":17,"path":18,"stem":19,"icon":22},"i-lucide-boxes",{"title":24,"path":25,"stem":26,"icon":27},"Projects and access","\u002Fcore-concepts\u002Fprojects-and-access","2.core-concepts\u002F2.projects-and-access","i-lucide-users",{"title":29,"path":30,"stem":31,"children":32,"icon":34},"Station runtime","\u002Fstation-runtime","3.station-runtime\u002F1.index",[33,35,40,45,50],{"title":29,"path":30,"stem":31,"icon":34},"i-lucide-circuit-board",{"title":36,"path":37,"stem":38,"icon":39},"Configure a station","\u002Fstation-runtime\u002Fconfiguration","3.station-runtime\u002F2.configuration","i-lucide-file-code-2",{"title":41,"path":42,"stem":43,"icon":44},"Custom stages","\u002Fstation-runtime\u002Fcustom-stages","3.station-runtime\u002F3.custom-stages","i-lucide-puzzle",{"title":46,"path":47,"stem":48,"icon":49},"Credentials and secrets","\u002Fstation-runtime\u002Fcredentials-and-secrets","3.station-runtime\u002F4.credentials-and-secrets","i-lucide-key-round",{"title":51,"path":52,"stem":53,"icon":54},"Multiple lanes","\u002Fstation-runtime\u002Fmultiple-lanes","3.station-runtime\u002F5.multiple-lanes","i-lucide-git-branch",{"title":56,"path":57,"stem":58,"children":59,"icon":61},"Production workflows","\u002Fproduction-workflows","4.production-workflows\u002F1.index",[60,62,67,72,77],{"title":56,"path":57,"stem":58,"icon":61},"i-lucide-factory",{"title":63,"path":64,"stem":65,"icon":66},"Applications and firmware","\u002Fproduction-workflows\u002Ffirmware-images","4.production-workflows\u002F2.firmware-images","i-lucide-cpu",{"title":68,"path":69,"stem":70,"icon":71},"DUT records and IDs","\u002Fproduction-workflows\u002Fdut-records-and-ids","4.production-workflows\u002F3.dut-records-and-ids","i-lucide-scan-barcode",{"title":73,"path":74,"stem":75,"icon":76},"Results and logs","\u002Fproduction-workflows\u002Fresults-and-logs","4.production-workflows\u002F4.results-and-logs","i-lucide-chart-no-axes-combined",{"title":78,"path":79,"stem":80,"icon":81},"Operator kiosk","\u002Fproduction-workflows\u002Foperator-kiosk","4.production-workflows\u002F5.operator-kiosk","i-lucide-monitor",{"title":83,"path":84,"stem":85,"children":86,"icon":88},"Reference","\u002Freference","5.reference\u002F1.index",[87,89,94],{"title":83,"path":84,"stem":85,"icon":88},"i-lucide-book-open",{"title":90,"path":91,"stem":92,"icon":93},"API access","\u002Freference\u002Fapi-access","5.reference\u002F2.api-access","i-lucide-braces",{"title":95,"path":96,"stem":97,"icon":98},"Troubleshooting","\u002Freference\u002Ftroubleshooting","5.reference\u002F3.troubleshooting","i-lucide-life-buoy",{"id":100,"title":36,"body":101,"description":458,"extension":459,"links":460,"meta":461,"navigation":462,"path":37,"seo":463,"stem":38,"__hash__":464},"docs\u002F3.station-runtime\u002F2.configuration.md",{"type":102,"value":103,"toc":454},"minimark",[104,130,133,242,255,265,272,277,280,436,439,443,450],[105,106,107,108,112,113,117,118,121,122,125,126,129],"p",{},"The station uses two YAML documents. Its ",[109,110,111],"strong",{},"local"," ",[114,115,116],"code",{},"config.yaml"," holds MQTT transport, certificate paths, API endpoint, station identity, and hardware programmer definitions. The ",[109,119,120],{},"runtime YAML"," in HTF's ",[109,123,124],{},"Station configuration"," defines the stages that run for a DUT. The station pulls that runtime plan when it starts. ",[127,128,12],"a",{"href":13}," shows both complete files.",[105,131,132],{},"The local sample loads settings from YAML. Environment variables fill in deployment-specific values without putting credentials in source control.",[134,135,140],"pre",{"className":136,"code":137,"language":138,"meta":139,"style":139},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","station:\n  org_id: ${HTF_ORG_ID}\n  station_id: ${HTF_STATION_ID}\n\nstages:\n  - name: print testing\n    kind: print\n    message: testing\n    wait_seconds: 5\n","yaml","",[114,141,142,155,168,179,186,194,208,219,230],{"__ignoreMap":139},[143,144,147,151],"span",{"class":145,"line":146},"line",1,[143,148,150],{"class":149},"swJcz","station",[143,152,154],{"class":153},"sMK4o",":\n",[143,156,158,161,164],{"class":145,"line":157},2,[143,159,160],{"class":149},"  org_id",[143,162,163],{"class":153},":",[143,165,167],{"class":166},"sfazB"," ${HTF_ORG_ID}\n",[143,169,171,174,176],{"class":145,"line":170},3,[143,172,173],{"class":149},"  station_id",[143,175,163],{"class":153},[143,177,178],{"class":166}," ${HTF_STATION_ID}\n",[143,180,182],{"class":145,"line":181},4,[143,183,185],{"emptyLinePlaceholder":184},true,"\n",[143,187,189,192],{"class":145,"line":188},5,[143,190,191],{"class":149},"stages",[143,193,154],{"class":153},[143,195,197,200,203,205],{"class":145,"line":196},6,[143,198,199],{"class":153},"  -",[143,201,202],{"class":149}," name",[143,204,163],{"class":153},[143,206,207],{"class":166}," print testing\n",[143,209,211,214,216],{"class":145,"line":210},7,[143,212,213],{"class":149},"    kind",[143,215,163],{"class":153},[143,217,218],{"class":166}," print\n",[143,220,222,225,227],{"class":145,"line":221},8,[143,223,224],{"class":149},"    message",[143,226,163],{"class":153},[143,228,229],{"class":166}," testing\n",[143,231,233,236,238],{"class":145,"line":232},9,[143,234,235],{"class":149},"    wait_seconds",[143,237,163],{"class":153},[143,239,241],{"class":240},"sbssI"," 5\n",[105,243,244,246,247,250,251,254],{},[114,245,191],{}," run in the plan's order. Each stage has a ",[114,248,249],{},"name"," for the result view and a ",[114,252,253],{},"kind"," that selects its implementation.",[105,256,257,258,260,261,264],{},"To edit the server-owned plan after creating a station, open that station in HTF, select ",[109,259,124],{},", paste the runtime YAML, and select ",[109,262,263],{},"Save for station pull",". Restart or reconnect the station to load the saved revision.",[105,266,267],{},[268,269],"img",{"alt":270,"src":271},"Station configuration editor and Save for station pull action","\u002Fimages\u002Fproduct\u002F11-station-configuration.png",[273,274,276],"h2",{"id":275},"add-a-programmer","Add a programmer",[105,278,279],{},"For hardware flashing, define a named programmer and refer to it from each stage. The following is based on the station's basic programming sample; replace the serial number, target, image ID, and image path with your own values.",[134,281,283],{"className":136,"code":282,"language":138,"meta":139,"style":139},"programmers:\n  - name: jlink_1\n    kind: jlink\n    serial_number: 823000667\n    target_device: nrf54l15_xxca\n\nstages:\n  - name: Device Erase\n    kind: nrfutil_device_recover\n    programmer: jlink_1\n  - name: Flash Firmware\n    kind: firmware_flash\n    programmer: jlink_1\n    firmware_id: 12b0cbe8-71d9-43fa-97b3-02202cf7d593\n    firmware_version: latest\n    path: zephyr\u002Fzephyr.hex\n",[114,284,285,292,303,312,322,332,336,342,353,362,372,384,394,403,414,425],{"__ignoreMap":139},[143,286,287,290],{"class":145,"line":146},[143,288,289],{"class":149},"programmers",[143,291,154],{"class":153},[143,293,294,296,298,300],{"class":145,"line":157},[143,295,199],{"class":153},[143,297,202],{"class":149},[143,299,163],{"class":153},[143,301,302],{"class":166}," jlink_1\n",[143,304,305,307,309],{"class":145,"line":170},[143,306,213],{"class":149},[143,308,163],{"class":153},[143,310,311],{"class":166}," jlink\n",[143,313,314,317,319],{"class":145,"line":181},[143,315,316],{"class":149},"    serial_number",[143,318,163],{"class":153},[143,320,321],{"class":240}," 823000667\n",[143,323,324,327,329],{"class":145,"line":188},[143,325,326],{"class":149},"    target_device",[143,328,163],{"class":153},[143,330,331],{"class":166}," nrf54l15_xxca\n",[143,333,334],{"class":145,"line":196},[143,335,185],{"emptyLinePlaceholder":184},[143,337,338,340],{"class":145,"line":210},[143,339,191],{"class":149},[143,341,154],{"class":153},[143,343,344,346,348,350],{"class":145,"line":221},[143,345,199],{"class":153},[143,347,202],{"class":149},[143,349,163],{"class":153},[143,351,352],{"class":166}," Device Erase\n",[143,354,355,357,359],{"class":145,"line":232},[143,356,213],{"class":149},[143,358,163],{"class":153},[143,360,361],{"class":166}," nrfutil_device_recover\n",[143,363,365,368,370],{"class":145,"line":364},10,[143,366,367],{"class":149},"    programmer",[143,369,163],{"class":153},[143,371,302],{"class":166},[143,373,375,377,379,381],{"class":145,"line":374},11,[143,376,199],{"class":153},[143,378,202],{"class":149},[143,380,163],{"class":153},[143,382,383],{"class":166}," Flash Firmware\n",[143,385,387,389,391],{"class":145,"line":386},12,[143,388,213],{"class":149},[143,390,163],{"class":153},[143,392,393],{"class":166}," firmware_flash\n",[143,395,397,399,401],{"class":145,"line":396},13,[143,398,367],{"class":149},[143,400,163],{"class":153},[143,402,302],{"class":166},[143,404,406,409,411],{"class":145,"line":405},14,[143,407,408],{"class":149},"    firmware_id",[143,410,163],{"class":153},[143,412,413],{"class":166}," 12b0cbe8-71d9-43fa-97b3-02202cf7d593\n",[143,415,417,420,422],{"class":145,"line":416},15,[143,418,419],{"class":149},"    firmware_version",[143,421,163],{"class":153},[143,423,424],{"class":166}," latest\n",[143,426,428,431,433],{"class":145,"line":427},16,[143,429,430],{"class":149},"    path",[143,432,163],{"class":153},[143,434,435],{"class":166}," zephyr\u002Fzephyr.hex\n",[105,437,438],{},"The sample uses a J-Link programmer, device recovery, and a firmware flash stage. The image must exist in your project and contain the referenced path.",[273,440,442],{"id":441},"keep-configuration-safe","Keep configuration safe",[105,444,445,446,449],{},"Keep credentials in protected environment variables or the station's secret mechanism. Do not place a password or API token in YAML, logs, or command-line arguments. See ",[127,447,448],{"href":47},"Station credentials and secrets",".",[451,452,453],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":139,"searchDepth":146,"depth":157,"links":455},[456,457],{"id":275,"depth":157,"text":276},{"id":441,"depth":157,"text":442},"Define station identity, programmers, and stages in YAML.","md",null,{},{"icon":39},{"title":36,"description":458},"xYAW-Js8_lep1rZpwxh94gsNh01tka_4IXBYf2BTzR8",[466,468],{"title":29,"path":30,"stem":31,"description":467,"icon":34,"children":-1},"Build and operate a Python test station.",{"title":41,"path":42,"stem":43,"description":469,"icon":44,"children":-1},"Extend a station with product-specific test logic.",1790376318215]