Skip to content

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.

License

Notifications You must be signed in to change notification settings

Thymis-io/thymis

Repository files navigation

THYMIS

Quickly provision, configure, and manage devices using NixOS.

license last-commit NixOS svelte FastAPI

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 & Demo

Screenshot
Screenshot of the Control Panel
thymis2.webm
Video of a Kiosk Deployment to 3 Devices changing the URL to https://thymis.io/

Overview

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.

Architecture

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.

Thymis Architecture Diagram


Getting Started (Development)

Requirements

Ensure you have the following dependencies installed on your system:

  • Nix (with Flakes support)

Installation

  1. Clone the thymis repository:
git clone https://github.com/Thymis-io/thymis
  1. Change to the project directory:
cd thymis
  1. Enter an environment with the required dependencies:
nix develop
  1. Install the frontend and controller dependencies:
cd frontend
npm install
cd ../controller
poetry install

Running thymis

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.


Project Roadmap

  • Release 0.1.0

    • Initial release of the project
    • Including basic device management features
    • See GitHub Release
  • Release 0.1.1

  • 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.

License

This project is protected under the GNU Affero General Public License v3.0 License. For more details, refer to the LICENSE file.


Acknowledgments

We love using these technologies and tools:

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages