Quickly provision, configure, and manage devices using NixOS.
Thymis 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.
The documentation is available at docs.thymis.io.
Screenshot of the Control Panel |
thymis2.webm |
---|
Video of a Kiosk Deployment to 3 Devices changing the URL to https://thymis.io/ |
Key features of Thymis include:
- Device Provisioning: Easily provision new devices with pre-configured system images.
- Device Configuration: Configure devices using a web-based interface.
- Device Management: Monitor device status, manage device modules, and deploy updated configurations to devices.
- REST API: Expose a REST API for CRUD operations on device and configuration data.
- NixOS Integration: Leverage the power of NixOS for declarative system configuration.
- nixpkgs: According to Repology, 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.
- Deployments without wasted bandwidth: Only changed paths are sent to the device, reducing the amount of data sent over the network.
- Deployments without downtime: The device is updated atomically, ensuring that the device is always in a consistent state.
- Rollbacks: If the device fails to boot after an update, the device can be rolled back to the previous state.
- Reproducible builds: The same configuration will always produce the same result, ensuring that the device is always in a consistent state.
- 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.
- Device tagging: Tag devices to group them together for easier management.
The 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.
Requirements
Ensure you have the following dependencies installed on your system:
- Nix (with Flakes support)
- Clone the thymis repository:
git clone https://github.com/Thymis-io/thymis
- Change to the project directory:
cd thymis
- Enter an environment with the required dependencies:
nix develop
- Install the frontend and controller dependencies:
cd frontend
npm install
cd ../controller
poetry install
Use the following command to run thymis:
cd controller
poetry run uvicorn thymis_controller.main:app --reload
The controller takes care of running the frontend for you. You can access thymis at http://localhost:8000
.
-
Release 0.1.0
- Initial release of the project
- Including basic device management features
- See GitHub Release
-
Release 0.1.1
- Bug fixes and minor improvements
- See GitHub Release
-
Release 0.2.0
- New features and bug fixes, possibly containing breaking changes.
- See GitHub Release
-
Release 0.3.0
- Task persistence using the database
- Update to nixpkgs/NixOS 24.11
- New features and bug fixes, possibly containing breaking changes.
This project is protected under the GNU Affero General Public License v3.0 License. For more details, refer to the LICENSE file.
We love using these technologies and tools: