https://github.com/numtide/nits
Nix & NATS
https://github.com/numtide/nits
buildbot-numtide
Last synced: 7 months ago
JSON representation
Nix & NATS
- Host: GitHub
- URL: https://github.com/numtide/nits
- Owner: numtide
- License: mit
- Created: 2023-05-12T09:52:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-31T11:36:01.000Z (12 months ago)
- Last Synced: 2025-03-31T10:05:53.570Z (7 months ago)
- Topics: buildbot-numtide
- Language: Go
- Homepage: https://matrix.to/#/!YviWcpsjDGPidlhVRO:bmcgee.ie?via=bmcgee.ie&via=matrix.org
- Size: 16.4 MB
- Stars: 97
- Watchers: 12
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
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](https://nixos.org) and seeing how to implement and integrate them with [NATS](https://nats.io).
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](https://github.com/zhaofengli/colmena), [deploy-rs](https://github.com/serokell/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.
