---
slug: overview
title: Overview
description: Learn how Holos integrates software into a holistic platform.
sidebar_position: 10
---

import RenderingOverview from '@site/src/diagrams/rendering-overview.mdx';

# Tutorial

## Overview

Holos is a configuration management tool for Kubernetes resources.  It provides
the building blocks needed for implementing the [rendered manifests pattern].
It gives the flexibility to manage a wide range of configurations, from large
software delivery platforms spanning multiple clusters and regions to generating
a single resource on your local device.

{/* truncate */}

At a high level, Holos provides a few major components:

- A Platform schema for specifying how components integrate together into a platform.
- Component building blocks for Helm, Kustomize, and Kubernetes to unify configuration with CUE.
- A BuildPlan orchestrating generators, transformers, and validators to produce manifest files.

<RenderingOverview />

{/* TODO: Replace this with the Advantages diagram we talked about. */}

## Holos' role in your organization

Platform engineers run the `holos render platform` command locally and in CI to
produce Kubernetes manifests which are committed to version control.  GitOps
tools like ArgoCD or Flux deploy the manifests produced by Holos.

Holos works well with your existing Helm charts, kustomize bases, and any other
configuration data you currently store in version control.

## Advantages of Holos

### Safe

Holos uses [CUE] to provide strong typing and constraints to configuration data.
Additionally, holos adds strong validation to verify the output produced by Helm
and other tools.

### Consistent

Holos offers a consistent way to incorporate a wide variety of tools into a well
defined data pipeline.  Configuration produced from CUE, Helm, and Kustomize are
all handled with the same consistent process.

### Flexible

Holos is designed to be flexible.  Holos offers flexible building blocks for
data generation, transformation, validation, and integration.  Find the perfect
fit for your team by assembling these building blocks to your unique needs.

Holos does not have an opinion on many common aspects of platform configuration.
For example, environments and clusters are explicitly kept out of the core and
instead are provided as flexible, user-customizable [topics] organized as a
recipes.

## Getting Help

If you get stuck, you can get help on [Discord] or [GitHub discussions].  Don't
worry about asking "beginner" questions, configuration is often complex even for
the most experienced among us.  We all start somewhere and are happy to help.

[rendered manifests pattern]: https://akuity.io/blog/the-rendered-manifests-pattern
[CUE]: https://cuelang.org/
[Discord]: https://discord.gg/JgDVbNpye7
[GitHub discussions]: https://github.com/holos-run/holos/discussions
[Why CUE for Configuration]: https://holos.run/blog/why-cue-for-configuration/
[topics]: ../topics.mdx
