{"id":19828861,"url":"https://github.com/balena-os/leviathan","last_synced_at":"2026-05-20T20:13:03.524Z","repository":{"id":37074245,"uuid":"95004378","full_name":"balena-os/leviathan","owner":"balena-os","description":"A distributed hardware testing framework","archived":false,"fork":false,"pushed_at":"2026-05-20T18:41:16.000Z","size":17047,"stargazers_count":24,"open_issues_count":132,"forks_count":6,"subscribers_count":18,"default_branch":"master","last_synced_at":"2026-05-20T18:41:45.869Z","etag":null,"topics":["automation","testing"],"latest_commit_sha":null,"homepage":"https://balena-os.github.io/leviathan","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/balena-os.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-06-21T13:00:04.000Z","updated_at":"2026-05-20T18:40:30.000Z","dependencies_parsed_at":"2026-01-20T03:14:45.628Z","dependency_job_id":null,"html_url":"https://github.com/balena-os/leviathan","commit_stats":null,"previous_names":[],"tags_count":1063,"template":false,"template_full_name":null,"purl":"pkg:github/balena-os/leviathan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-os%2Fleviathan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-os%2Fleviathan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-os%2Fleviathan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-os%2Fleviathan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/balena-os","download_url":"https://codeload.github.com/balena-os/leviathan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-os%2Fleviathan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33273799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"ssl_error","status_checked_at":"2026-05-20T15:12:42.300Z","response_time":356,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","testing"],"created_at":"2024-11-12T11:17:02.923Z","updated_at":"2026-05-20T20:12:58.503Z","avatar_url":"https://github.com/balena-os.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Leviathan\n\n[![GitHub Issues](https://img.shields.io/github/issues/balena-io/leviathan.svg)](https://github.com/balena-io/leviathan/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/balena-io/leviathan.svg)](https://github.com/balena-io/leviathan/pulls)\n[![node](https://img.shields.io/badge/node-v12.0.0-green.svg)](https://nodejs.org/download/release/v12.0.0/)\n[![License](https://img.shields.io/badge/license-APACHE%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)  [![balena deploy button](https://www.balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/balena-os/leviathan)\n\nLeviathan can be used to automate, test and control real/virtual devices in production or controlled environments. What can you do:\n\n1. Stress testing the provisioning process for reliability, performance \u0026 fault tolerance.\n2. Testing new balenaOS, balenaEngine and balena supervisor on different board revisions, prod/staging environments for managed and unmanaged scenarios.\n3. Automate release deployment for balenaCloud fleets by testing codebase on real/virtual devices under test.\n4. Automate support for new modems, sensors, components and eventually new boards.\n\n\nThe high-level overview of the leviathan architecture can be found [here](./documentation/architecture.md)\n\n## Getting Started\n\nLeviathan allows for running tests on a device controlled by a worker. A worker is a component that provides an interface to a device under test (DUT). The worker can be either real hardware or a virtualised environment. Leviathan is designed to work with multiple workers. At the moment, leviathan supports the following workers: \n\n1. [autokit][quickstart-autokit]\n2. [qemu][quickstart-qemu]\n3. testbot (deprecated)\n\nLearn more about [Leviathan](https://balena-os.github.io/leviathan/pages/Getting-Started/learn-more.html).\n\n### Clone the repository\n\n- Clone this repository with `git clone --recursive` or\n- Run `git clone` and then `git submodule update --init --recursive` to install submodules.\n\n### Prerequisites\n\n- Install Docker, node and npm in your system. We recommend installing [LTS versions from NVM](https://github.com/nvm-sh/nvm#install--update-script).\n- Download the balenaOS image you want to test on your DUT from [balena.io/os](https://balena.io/os#download).\n\n### Worker setup\n\nLeviathan allows for running tests on a device under test (DUT) connected to and controlled by either a testbot worker, or on a virtualized device using the QEMU worker. Check out the following getting started guides to setup and run each type of worker.\n\n1. [Testbot worker][quickstart-testbot]\n2. [QEMU worker][quickstart-qemu]\n3. [Autokit worker][quickstart-autokit]\n\n## Instructions for rig-owners\n\nLeviathan is made up of a client and worker. The client is the test runner while the worker is where tests get executed. For testbot workers, the worker component exists on the testbot device. The testbot devices are part of a [balenaCloud](https://balena.io) fleet. In order to update the worker component for testbot workers, you need to [push a new release](https://www.balena.io/docs/learn/deploy/deployment/) to the testbot fleet.\n\nTo push a new release of leviathan to balenaCloud, use the following command:\n\n```bash\nbalena push \u003cfleetName\u003e\n```\n\nThe `\u003cfleetName\u003e` is the name of the fleet you intend to push a new version of leviathan to. Keep in mind, the client and the test that run are independent of the worker. Hence, updates to the client or the tests don't need to be pushed to the balenaCloud fleet. In order to change the worker component, you need to push a new release to the balenaCloud fleet.\n\n## Documentation for Leviathan Helpers\n\nDocumentation for Leviathan helpers can be found on [https://balena-os.github.io/leviathan](https://balena-os.github.io/leviathan). To generate the documentation, run the following command from either the root of the repository or the `core` directory.\n\n```bash\nnpm install\nnpm run docs\n```\n\nIf the docs are generated successfully, you will be getting the success line as:\n\n```bash\nInfo: Documentation generated at /path/to/documentation\n```\n\n## Support\n\nIf you're having any problem, please [raise an issue][newissue] on GitHub and the balena team will be happy to help.\n\n## License\n\nThe project is licensed under the Apache 2.0 license.\n\n[issues]: https://github.com/balena-io/leviathan/issues\n[newissue]: https://github.com/balena-io/leviathan/issues/new\n[source]: https://github.com/balena-io/leviathan\n[quickstart-qemu]: https://balena-os.github.io/leviathan/pages/Getting-Started/quickstart/quickstart-qemu.html\n[quickstart-testbot]: https://balena-os.github.io/leviathan/pages/Getting-Started/quickstart/quickstart-testbot.html\n[quickstart-autokit]: https://balena-os.github.io/leviathan/pages/Getting-Started/quickstart/quickstart-autokit.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-os%2Fleviathan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbalena-os%2Fleviathan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-os%2Fleviathan/lists"}