Skip to content

numtide/nits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0765232 · Oct 31, 2024
Sep 13, 2023
Apr 19, 2024
Apr 19, 2024
Oct 31, 2024
Feb 28, 2024
Jan 30, 2024
Jan 29, 2024
Dec 1, 2023
Jan 29, 2024
Feb 28, 2024
Oct 31, 2024
Oct 31, 2024
Mar 14, 2024
Mar 14, 2024

Repository files navigation


logo
Nits — Nix & Nats

Status: highly experimental

Motivation

This project began as a directed learning exercise, taking everyday use cases and functionality from the world of Nix and seeing how to implement and integrate them with NATS.

Over time this has evolved towards a specific use case: pull-based orchestration of NixOS hosts.

Several options are already available for deploying NixOS across a series of hosts (Colmena, deploy-rs et al.). However, these tools are inherently push-based, supporting 'online' deployments that require hosts to be contactable during rollout.

In some cases, it is desirable to have more of a pull-based deployment, in which the system closure for a given host is updated ahead of time and applied when that host subsequently checks in. For example, you may have a series of devices deployed in an area with little network coverage.

We feel that NATS is a logical platform on top of which to build a pull-based deployment mechanism. As such, this project will work towards that goal, developing what is needed to meet it and see what valuable sub-components and side-projects may emerge along the way.

Usage

The project is currently in a state of rapid iteration. We will update this section and add more documentation when it has reached a steady state.

Preview

If an agent is connected, the deployment behaves much like a push-based system. Eventually, if the agent is not connected, we will schedule a deployment for later.

Agent logs are streamed into NATS and captured, allowing you to observe what the agent is doing in real-time or go back and have a look at the logs later.