1 unstable release

0.0.28 Aug 15, 2024

#724 in HTTP server

AGPL-3.0-or-later

240KB
3K SLoC

Nirvati

Nirvati is a modern server management software built on top of Kubernetes. This repository contains Nirvati's backend components, which are built in Rust.

The Nirvati frontend, which interacts with this repo's GraphQL API, is maintained separately and built using Nuxt.

Shared Components

  • Common: Code shared between various components of Nirvati, could also be useful for plugin developers.
  • Apps Core: Types & shared code for our app system. Especially useful for plugin developers.
  • Database definitions: Prisma client for our database system. Not intended to be used outside Nirvati.
  • Audit logs module: Utils for Nirvati's audit logs (WIP)
  • SaaS module: Utils for SaaS products utilizing Nirvati (WIP)

Services

  • Agent: Microservice responsible for performing various administrative tasks, as well as parsing & installing apps and managing their domains. Only intended to be used by the GraphQL API.
  • GraphQL API: Interface the dashboard uses to interact with Nirvati. Keeps track of system state, users and permissions in the database, and interacts with the various system components on behalf of the user.
  • Background updater: Regularly downloads new apps added to the various app stores, and keeps the definitions for apps that aren't yet installed up-to-date.
  • Init: Container used to bootstrap new Nirvati installations on an existing Kubernetes cluster.
  • Migrations: Performs post-update changes.
  • OS Init: A minimal init system for Nirvati OS. (WIP)

Plugins

Dependencies

~56MB
~897K SLoC