MCPcopy Index your code
hub / github.com/Thymis-io/thymis

github.com/Thymis-io/thymis @0.9.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.9.0 ↗ · + Follow
1,126 symbols 4,108 edges 243 files 77 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

<a href="https://thymis.io">
<h1>THYMIS</h1>
</a>






<em>Quickly provision, configure, and manage devices using NixOS.</em>






<img src="https://img.shields.io/github/license/Thymis-io/thymis?style=flat&color=0080ff" alt="license">
<img src="https://img.shields.io/github/last-commit/Thymis-io/thymis?style=flat&logo=git&logoColor=white&color=0080ff" alt="last-commit">
<img src="https://img.shields.io/badge/NixOS-2AA2E0?style=flat&logo=NixOS&logoColor=white" alt="NixOS">
<img src="https://img.shields.io/badge/Svelte-FF3E00?style=flat&logo=Svelte&logoColor=white" alt="svelte">
<img src="https://img.shields.io/badge/FastAPI-009688?style=flat&logo=FastAPI&logoColor=white" alt="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 thymis.io/docs.


Screenshot & Demo

Screenshot
Screenshot of the Control Panel
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.


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
uv sync

Running thymis

Use the following command to run thymis:

cd controller
uv 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

  • [x] Release 0.1.0
  • Initial release of the project
  • Basic device management features

  • [x] Release 0.2.0

  • Various bug fixes and improvements

  • [x] Release 0.3.0

  • Task persistence using the database
  • Update to nixpkgs/NixOS 24.11

  • [x] Release 0.4.0

  • Automatic rollback if OTA update fails or condition is met

  • [x] Release 0.5.0

  • Added secrets management
  • Fixed unresponsive navigation when the page invalidates data at the same time, see sveltejs/kit#9354

  • [x] Release 0.6.0

  • Added artifact management
  • Logs are now collected into the database

  • [x] Release 0.7.0

  • Improved External Repository UI
  • Added Bash + Python Module
  • Update to nixpkgs/NixOS 25.05

  • [x] Release 0.8.0

  • Added device details page, auto updates and reworked overview page
  • Update to nixpkgs/NixOS 25.11

  • [x] Release 0.9.0

  • UI Redesign & performance fixes

  • [ ] Release 0.10.0

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

Core symbols most depended-on inside this repo

filter
called by 117
controller/thymis_controller/lib.py
commit
called by 82
controller/thymis_controller/repo.py
expectScreenshot
called by 54
frontend/tests/utils.ts
add
called by 40
controller/thymis_controller/repo.py
report_task_finished
called by 33
controller/thymis_controller/task/worker.py
parse_flake_reference
called by 28
controller/thymis_controller/nix/flake_reference.py
run
called by 28
controller/thymis_controller/routers/frontend.py
fetchWithNotify
called by 28
frontend/src/lib/fetchWithNotify.ts

Shape

Function 583
Method 268
Class 197
Route 78

Languages

Python90%
TypeScript10%

Modules by API surface

agent/thymis_agent/agent.py49 symbols
controller/tests/scheduler/test_auto_update_scheduler.py41 symbols
controller/thymis_controller/models/task.py39 symbols
controller/thymis_controller/project.py31 symbols
controller/thymis_controller/modules/modules.py28 symbols
controller/tests/routes/test_switch_config_api.py26 symbols
controller/thymis_controller/repo.py25 symbols
controller/thymis_controller/task/worker.py24 symbols
controller/thymis_controller/nix/log_parse.py24 symbols
controller/thymis_controller/routers/api_deployment_info.py21 symbols
controller/thymis_controller/notifications.py21 symbols
controller/thymis_controller/task/subscribe_ui.py19 symbols

For agents

$ claude mcp add thymis \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact