Metadata-Version: 2.4
Name: renelick
Version: 0.25.2rc2
Summary: Data-Driven Task Orchestration
Project-URL: homepage, https://renelick.org
Project-URL: repository, https://gitlab.com/gtucker.io/renelick
Author-email: Guillaume Tucker <gtucker@gtucker.io>
License-Expression: LGPL-2.1-or-later AND MIT AND CC-BY-SA-4.0
License-File: COPYING
License-File: docs/LICENSE
License-File: frontend/LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: FastAPI
Classifier: Framework :: Pydantic
Classifier: Framework :: Pydantic :: 2
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.10
Requires-Dist: click==8.1.8
Requires-Dist: cloudevents==1.11.0
Requires-Dist: httpx==0.28.1
Requires-Dist: jinja2==3.1.6
Requires-Dist: jsonschema[format]==4.24.0
Requires-Dist: openapi-python-client==0.25.3
Requires-Dist: pydantic==2.10.6
Requires-Dist: pyjwt==2.10.1
Requires-Dist: pyyaml==6.0.2
Requires-Dist: requests==2.32.3
Requires-Dist: toml==0.10.2
Requires-Dist: typer-shell==0.2.2
Requires-Dist: typer==0.16.0
Provides-Extra: dev
Requires-Dist: flake8==7.3.0; extra == 'dev'
Requires-Dist: pylint==3.3.3; extra == 'dev'
Requires-Dist: pytest==8.3.4; extra == 'dev'
Provides-Extra: storage
Requires-Dist: paramiko==4.0.0; extra == 'storage'
Requires-Dist: scp==0.15.0; extra == 'storage'
Description-Content-Type: text/markdown

<!--
    SPDX-License-Identifier: CC-BY-SA-4.0
    Copyright (C) 2024 Guillaume Tucker
-->

Renelick
========

This project is to provide low-level distributed task orchestration.  It was
forked from the [KernelCI API](https://github.com/kernelci/kernelci-api) code
base to evolve into a more generic implementation than the particular use-case
of automated Linux kernel builds and runtime tests on devboards.

Renelick's key features are:

* **Data tree and pub/sub events**

  All the data is stored in a tree of Nodes objects which can hold any
  application-specific attributes.<br />
  Whenever some data gets added, a pub/sub event is generated which can be used
  as a trigger for automation.

* **Orchestration and message queues**

  Independently from the data, tasks can be scheduled via a distributed
  orchestration mechanism.<br />
  Orchestrators can schedule tasks following particular triggers using message
  queues for load balancing.

* **User management**

  Users can register with email verification, authenticate with OAuth2, get
  temporary JWT tokens and persistent API keys.

* **Runtime abstraction**

  Runtime environments can be deployed anywhere, from standard Kubernetes to
  private instances with specific hardware.

* **Modular web dashboard**

  The provided dashboard covers the common parts and can be extended with React
  elements for specific applications.

While the design principles are now well established, it is still under active
development.  The approach is to iterate over the whole stack, alternating
between design decisions and implementation.  Each iteration or "sprint" has a
version number and an associated
[milestone](https://gitlab.com/gtucker.io/renelick/-/milestones?sort=due_date_desc&state=all).

Please see the
[documentation](https://renelick-gtucker-7b1c5d7d50ce51f57b4ff6327302e38a0a8f8c72d652a5.gitlab.io/)
for full details, and the [quick-start
guide](https://renelick-gtucker-7b1c5d7d50ce51f57b4ff6327302e38a0a8f8c72d652a5.gitlab.io/quickstart/)
for setting up a local development instance.
