{"id":361,"date":"2026-10-30T03:06:51","date_gmt":"2026-10-30T03:06:51","guid":{"rendered":"https:\/\/www.sigma-rt.com\/blog\/?post_type=sigma_tc&#038;p=361"},"modified":"2026-11-13T06:18:55","modified_gmt":"2026-11-13T06:18:55","slug":"appium-device-farm-without-the-cloud-a-practical-guide","status":"publish","type":"sigma_tc","link":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/","title":{"rendered":"Appium Device Farm Without the Cloud: A Practical Guide"},"content":{"rendered":"<p><strong>Appium Device Farm Without the Cloud: A Practical Guide<\/strong><\/p>\n<p>Your CI pipeline is automated. Your device layer is a person named Dave who plugs in phones every morning.<\/p>\n<p>That is the gap this article is about. Appium gives you a strong automation API, but it assumes devices are already connected, authorized, named and healthy. At 20+ devices, that assumption becomes a full-time job.<\/p>\n<p>There are three ways to close the gap: a cloud device farm, a self-built Selenium Grid\/STF stack, or a commercial device layer on your own hardware. This guide focuses on the third option and how it fits next to Appium rather than replacing it.<\/p>\n<h1><strong>What Appium assumes \u2014 and what it does not do<\/strong><\/h1>\n<p>Appium is a client-server protocol for driving apps. It does not:<\/p>\n<ul>\n<li>discover devices on a USB hub;<\/li>\n<li>keep devices awake and authorized;<\/li>\n<li>restart a frozen phone;<\/li>\n<li>allocate devices to a test run;<\/li>\n<li>capture a screenshot when a step fails;<\/li>\n<li>tell you which device is free.<\/li>\n<\/ul>\n<p>Those are device-orchestration problems. In a small lab, a person solves them. At scale, software has to.<\/p>\n<h1><strong>Option 1: one device per machine<\/strong><\/h1>\n<p>The simplest setup: one phone, one Appium server, one CI runner. It works for a handful of devices, but it does not scale. You end up with a shelf of mini-PCs, each with one phone, and a spreadsheet to track which one is free.<\/p>\n<h1><strong>Option 2: Selenium Grid + STF + Appium<\/strong><\/h1>\n<p>This is the open-source path. STF (or DeviceFarmer) manages devices; Selenium Grid distributes sessions; Appium runs the tests. It is powerful and free, but it is a project:<\/p>\n<ul>\n<li>you maintain the STF deployment and its Android compatibility;<\/li>\n<li>you register each device as a node;<\/li>\n<li>you build allocation, naming and recovery yourself;<\/li>\n<li>you own the upgrade path when Android changes.<\/li>\n<\/ul>\n<p>For a platform team with spare engineering time, it is a reasonable choice. For a QA team that just wants the suite to run, it is a second product to maintain.<\/p>\n<h1><strong>Option 3: a commercial device layer on your own hardware<\/strong><\/h1>\n<p>This is where Total Control fits. The idea is to keep Appium (or your existing test runner) and replace the manual device layer with software that:<\/p>\n<ul>\n<li>discovers and names 2\u2013100 Android devices;<\/li>\n<li>keeps them online, awake and reconnectable;<\/li>\n<li>groups them by role or suite;<\/li>\n<li>exposes a REST API that CI can call;<\/li>\n<li>captures screenshots and logs;<\/li>\n<li>runs fully on-prem.<\/li>\n<\/ul>\n<p>TC is <strong>not<\/strong> an Appium server. It is the layer underneath: it connects, controls and observes the devices, and exposes HTTP endpoints for your pipeline.<\/p>\n<h1><strong>A realistic integration pattern<\/strong><\/h1>\n<p>You do not need to rewrite your tests. A common pattern looks like this:<\/p>\n<ol>\n<li><strong>Device host.<\/strong> A Windows PC connected to a powered USB hub with 10\u201350 Android devices. TC runs on this host.<\/li>\n<li><strong>Device groups.<\/strong> Devices are named by role (`pixel-8`, `a54`, `head-unit`) and grouped by suite (`smoke`, `regression`, `iot`).<\/li>\n<li><strong>Run endpoint.<\/strong> A small service wraps your test command. It calls the TC REST API to start the run, passes the device group, and returns artifacts.<\/li>\n<li><strong>CI step.<\/strong> Jenkins, GitHub Actions or GitLab CI calls the run endpoint. No human touches the rack.<\/li>\n<li><strong>Artifacts.<\/strong> Screenshots, logs and pass\/fail are pulled from TC and attached to the build.<\/li>\n<\/ol>\n<p>This keeps Appium where it is strong (test logic, assertions, reporting) and moves device orchestration to a dedicated layer.<\/p>\n<h1><strong>Coordinates vs elements<\/strong><\/h1>\n<p>One of the practical differences between a mirroring tool and an automation layer is how it finds UI.<\/p>\n<p>Coordinate taps (`click(100, 200)`) break when resolution, density or layout changes. Element queries find a button by text, resource ID or property, then click it. TC&#8217;s AAI\/FindNode does this with a query language; Appium does it with accessibility IDs and XPath.<\/p>\n<p>If your scripts currently rely on coordinates, moving to element queries is often a bigger reliability win than changing device vendors.<\/p>\n<h1><strong>Cost<\/strong><\/h1>\n<p>Appium itself is free. The cost is the device layer and the hardware.<\/p>\n<ul>\n<li>10 devices + TC Pro: from $199\/year in software.<\/li>\n<li>100 devices + TC Team: $1,990\/year in software.<\/li>\n<li>Hardware: devices, a powered hub, a Windows PC, cables.<\/li>\n<\/ul>\n<p>Compare that with $199 per parallel session per month for a cloud device farm. If you run five parallel Android suites daily, the annual difference is significant.<\/p>\n<h1><strong>FAQ<\/strong><\/h1>\n<p><strong>Does TC replace Appium?<\/strong> No. It is a device layer. You can run Appium against the same devices, or use TC&#8217;s REST\/AAI APIs directly.<\/p>\n<p><strong>Can I trigger TC from CI?<\/strong> Yes. The REST API is plain HTTP and can be called from any pipeline step.<\/p>\n<p><strong>Does it support parallel execution?<\/strong> Yes, across device groups. Licensing is per device, not per parallel session.<\/p>\n<p><strong>What about iOS?<\/strong> Not supported. Use Appium + XCUITest with a Mac or a cloud vendor for iOS.<\/p>\n<p><strong>Can everything stay on-prem?<\/strong> Yes. TC runs on a Windows host on your network and does not require a cloud account.<\/p>\n<p>If you are evaluating an Appium device farm, start with the Appium device farm landing page or <a href=\"\/en\/tc\/price\/\">see TC pricing<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Appium Device Farm Without the Cloud: A Practical Guide Your CI pipeline is automated. Your device layer is a person named Dave who plugs in phones every morning. That is the gap this article is about. Appium gives you a strong automation API, but it assumes devices are already connected, authorized, named and healthy. At [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":410,"template":"","sigma_tc_category":[],"class_list":["post-361","sigma_tc","type-sigma_tc","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt<\/title>\n<meta name=\"description\" content=\"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt\" \/>\n<meta property=\"og:description\" content=\"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Sigma-rt\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-13T06:18:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/\",\"url\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/\",\"name\":\"Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg\",\"datePublished\":\"2026-10-30T03:06:51+00:00\",\"dateModified\":\"2026-11-13T06:18:55+00:00\",\"description\":\"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg\",\"contentUrl\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg\",\"width\":1600,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/appium-device-farm-without-the-cloud-a-practical-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TC \u6587\u7ae0\",\"item\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/en\\\/tc\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Appium Device Farm Without the Cloud: A Practical Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/\",\"name\":\"Sigma-rt\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#organization\",\"name\":\"Sigma-rt\",\"url\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/w-logo-gray.png\",\"contentUrl\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/w-logo-gray.png\",\"width\":80,\"height\":80,\"caption\":\"Sigma-rt\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sigma-rt.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt","description":"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/","og_locale":"en_US","og_type":"article","og_title":"Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt","og_description":"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps","og_url":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/","og_site_name":"Sigma-rt","article_modified_time":"2026-11-13T06:18:55+00:00","og_image":[{"width":1600,"height":900,"url":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/","url":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/","name":"Appium Device Farm Without the Cloud: A Practical Guide - Sigma-rt","isPartOf":{"@id":"https:\/\/www.sigma-rt.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg","datePublished":"2026-10-30T03:06:51+00:00","dateModified":"2026-11-13T06:18:55+00:00","description":"Appium Device Farm Without the Cloud: A Practical Guide for Automation engineers, QA leads, DevOps","breadcrumb":{"@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/#primaryimage","url":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg","contentUrl":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/Appium-Device-Farm-Without-the-Cloud-A-Practical-Guide.jpg","width":1600,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/appium-device-farm-without-the-cloud-a-practical-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sigma-rt.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TC \u6587\u7ae0","item":"https:\/\/www.sigma-rt.com\/blog\/en\/tc\/"},{"@type":"ListItem","position":3,"name":"Appium Device Farm Without the Cloud: A Practical Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.sigma-rt.com\/blog\/#website","url":"https:\/\/www.sigma-rt.com\/blog\/","name":"Sigma-rt","description":"","publisher":{"@id":"https:\/\/www.sigma-rt.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sigma-rt.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.sigma-rt.com\/blog\/#organization","name":"Sigma-rt","url":"https:\/\/www.sigma-rt.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sigma-rt.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/w-logo-gray.png","contentUrl":"https:\/\/www.sigma-rt.com\/blog\/wp-content\/uploads\/2026\/10\/w-logo-gray.png","width":80,"height":80,"caption":"Sigma-rt"},"image":{"@id":"https:\/\/www.sigma-rt.com\/blog\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/sigma_tc\/361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/sigma_tc"}],"about":[{"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/types\/sigma_tc"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"version-history":[{"count":3,"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/sigma_tc\/361\/revisions"}],"predecessor-version":[{"id":546,"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/sigma_tc\/361\/revisions\/546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/media\/410"}],"wp:attachment":[{"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/media?parent=361"}],"wp:term":[{"taxonomy":"sigma_tc_category","embeddable":true,"href":"https:\/\/www.sigma-rt.com\/blog\/wp-json\/wp\/v2\/sigma_tc_category?post=361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}