{"id":22488463,"url":"https://github.com/Thymis-io/thymis","last_synced_at":"2025-08-02T21:31:02.753Z","repository":{"id":206824056,"uuid":"699034779","full_name":"Thymis-io/thymis","owner":"Thymis-io","description":"Thymis is an open-source project that aims to provide a seamless and secure IoT device management solution. With Thymis, users can easily configure and manage their devices running on the NixOS operating system.","archived":false,"fork":false,"pushed_at":"2024-10-29T13:18:41.000Z","size":3508,"stargazers_count":62,"open_issues_count":2,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-29T16:01:49.891Z","etag":null,"topics":["device-management","iot","nixos"],"latest_commit_sha":null,"homepage":"https://thymis.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Thymis-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-10-01T18:16:39.000Z","updated_at":"2024-10-28T23:03:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"36ffe403-7930-4375-bcf6-094773b3667d","html_url":"https://github.com/Thymis-io/thymis","commit_stats":null,"previous_names":["thymis-io/thymis"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thymis-io%2Fthymis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thymis-io%2Fthymis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thymis-io%2Fthymis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thymis-io%2Fthymis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thymis-io","download_url":"https://codeload.github.com/Thymis-io/thymis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228500216,"owners_count":17930015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["device-management","iot","nixos"],"created_at":"2024-12-06T17:17:44.598Z","updated_at":"2024-12-06T17:20:10.866Z","avatar_url":"https://github.com/Thymis-io.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003ca href=\"https://thymis.io\"\u003e\n  \u003cimg src=\"./thymis.png\" width=\"100\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e\n    \u003ca href=\"https://thymis.io\"\u003e\n    \u003ch1\u003eTHYMIS\u003c/h1\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e\n    \u003cem\u003eQuickly provision, configure, and manage devices using NixOS.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\t\u003cimg src=\"https://img.shields.io/github/license/Thymis-io/thymis?style=flat\u0026color=0080ff\" alt=\"license\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/last-commit/Thymis-io/thymis?style=flat\u0026logo=git\u0026logoColor=white\u0026color=0080ff\" alt=\"last-commit\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/NixOS-2AA2E0?style=flat\u0026logo=NixOS\u0026logoColor=white\" alt=\"NixOS\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Svelte-FF3E00?style=flat\u0026logo=Svelte\u0026logoColor=white\" alt=\"svelte\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/FastAPI-009688?style=flat\u0026logo=FastAPI\u0026logoColor=white\" alt=\"FastAPI\"\u003e\n\u003c/p\u003e\n\nThymis is an open-source platform designed for managing and configuring IoT devices. Built on the robust NixOS operating system, Thymis ensures consistency, reliability, and ease of management across diverse IoT landscapes. Whether you're managing a few devices or a large-scale deployment, Thymis provides the tools needed to streamline your operations.\n\nThe documentation is available at [docs.thymis.io](https://docs.thymis.io).\n\n---\n\n## Screenshot \u0026 Demo\n\n|![Screenshot](https://github.com/user-attachments/assets/9da1a2c0-18bc-4f33-83a9-cf2d6b7fc24f)|\n|-|\n|Screenshot of the Control Panel|\n\n|\u003cvideo src=\"https://github.com/user-attachments/assets/c4f240d8-8fde-4987-989d-c598d4cba487\" width=\"300\" /\u003e|\n|-|\n|Video of a Kiosk Deployment to 3 Devices changing the URL to [https://thymis.io/](https://thymis.io/)\n\n##  Overview\n\nKey features of Thymis include:\n\n- **Device Provisioning**: Easily provision new devices with pre-configured system images.\n- **Device Configuration**: Configure devices using a web-based interface.\n- **Device Management**: Monitor device status, manage device modules, and deploy updated configurations to devices.\n- **REST API**: Expose a REST API for CRUD operations on device and configuration data.\n- **[NixOS](https://nixos.org/) Integration**: Leverage the power of NixOS for declarative system configuration.\n    - **[nixpkgs](https://github.com/NixOS/nixpkgs)**: According to [Repology](https://repology.org/repositories/statistics/newest), nixpkgs has over 60000 packages with the latest version available. This makes it the largest collection of up-to-date software packages available for any Linux distribution. You can use any of these packages in your Thymis project.\n    - Deployments without wasted bandwidth: Only changed paths are sent to the device, reducing the amount of data sent over the network.\n    - Deployments without downtime: The device is updated atomically, ensuring that the device is always in a consistent state.\n    - Rollbacks: If the device fails to boot after an update, the device can be rolled back to the previous state.\n    - Reproducible builds: The same configuration will always produce the same result, ensuring that the device is always in a consistent state.\n    - Air-gapped deployments: Devices can be updated without needing to connect to the internet. Only a connection to the Thymis controller is required. Deployments using Mass Storage is possible but not yet implemented.\n- **Device tagging**: Tag devices to group them together for easier management.\n\n---\n\n## Architecture\n\nThe project uses SvelteKit for the frontend and FastAPI for a device controller. The frontend communicates with the controller using a REST API. The controller is responsible for managing device and module data.\n\n![Thymis Architecture Diagram](./docs/src/architecture.jpg)\n\n---\n\n## Getting Started (Development)\n\n***Requirements***\n\nEnsure you have the following dependencies installed on your system:\n\n* **Nix** (with Flakes support)\n\n\n###  Installation\n\n1. Clone the thymis repository:\n\n```sh\ngit clone https://github.com/Thymis-io/thymis\n```\n\n2. Change to the project directory:\n\n```sh\ncd thymis\n```\n\n3. Enter an environment with the required dependencies:\n\n```sh\nnix develop\n```\n\n4. Install the frontend and controller dependencies:\n\n```sh\ncd frontend\nnpm install\ncd ../controller\npoetry install\n```\n\n###  Running `thymis`\n\nUse the following command to run thymis:\n\n```sh\ncd controller\npoetry run uvicorn thymis_controller.main:app --reload\n```\n\nThe controller takes care of running the frontend for you. You can access thymis at `http://localhost:8000`.\n\n---\n\n## Project Roadmap\n\n- [x] `Release 0.1.0`\n  - Initial release of the project\n  - Including basic device management features\n\n- [ ] `Release 0.2.0`\n   - New features and bug fixes, possibly containing breaking changes.\n\n---\n\n## License\n\nThis project is protected under the [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) License. For more details, refer to the [LICENSE](./LICENSE) file.\n\n---\n\n## Acknowledgments\n\nWe love using these technologies and tools:\n\n- [NixOS](https://nixos.org/)\n- [Svelte](https://svelte.dev/)\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [Python](https://www.python.org/)\n- [Node.js](https://nodejs.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FThymis-io%2Fthymis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FThymis-io%2Fthymis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FThymis-io%2Fthymis/lists"}