--- slug: setup title: Setup description: Install Holos and build the initial structure. sidebar_position: 20 --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import RenderPlatformDiagram from '@site/src/diagrams/render-platform-sequence.mdx'; # Setup ## Overview This tutorial will guide you through the installation of Holos and its dependencies, as well as the initialization of a minimal Platform that you can extend to meet your specific needs. ## Installing Holos Holos is distributed as a single file executable that can be installed in a couple of ways. ### Releases Download `holos` from the [releases] page and place the executable into your shell path. ### Go Install ```shell go install github.com/holos-run/holos/cmd/holos@latest ``` ### Dependencies Holos integrates with the following tools that should be installed to enable their functionality. - [Helm] to fetch and render Helm chart Components. - [Kubectl] to [kustomize] components. ## Generating a Platform Use `holos` to generate a minimal platform using the recommended directory structure. First, create and cd into a blank directory. Then use the `holos generate platform` command to generate a minimal platform. ```shell mkdir holos-tutorial cd holos-tutorial holos init platform v1alpha5 ``` Holos creates a `platform` directory containing a `platform.gen.cue` file serving as the entry point for your new platform configuration. You'll register software components with the platform using the CUE code in this `platform` directory. ## Rendering the Platform We usually make configuration changes with holos in the following loop: 1. Edit some CUE code. 2. Render the whole platform. 3. Review the fully rendered manifests. 4. Repeat Rendering the platform to plain manifest files allows us to see the changes clearly. ```bash holos render platform ./platform ``` ```txt rendered platform in 8.292µs ``` In this initial state `holos` doesn't do anything because no components are registered with the platform. You can inspect the Platform definition to get this insight. ```bash holos cue export --expression holos --out=yaml ./platform ``` ```yaml kind: Platform apiVersion: v1alpha5 metadata: name: default spec: components: [] ``` Note the `spec.components` field is empty. ## Next Steps You've got the structure of your platform configuration in place. Continue on to [Hello Holos] where you'll learn how easy it is to manage a Helm chart with holos. [Helm]: https://github.com/helm/helm/releases [Kubectl]: https://kubernetes.io/docs/tasks/tools/ [kustomize]: https://kustomize.io/ [Local Cluster]: ../topics/local-cluster.mdx [Hello Holos]: ./hello-holos.mdx [releases]: https://github.com/holos-run/holos/releases [k3d]: https://k3d.io/ [OrbStack]: https://docs.orbstack.dev/install [Docker]: https://docs.docker.com/get-started/get-docker/