# Catalog of services

Onyxia ships with a set of **official service catalogs**.

If you don’t configure anything, these are the defaults:

<table data-view="cards"><thead><tr><th></th><th data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td>Interactive services (IDEs)</td><td><a href="https://github.com/inseefrlab/helm-charts-interactive-services">https://github.com/inseefrlab/helm-charts-interactive-services</a></td><td><a href="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2FN9JZKktJAZPOLYRSMRZN%2FScreenshot%202026-01-21%20at%2016.33.24.png?alt=media&#x26;token=0bb128af-e4ab-4000-b470-3e22d18eb990">Screenshot 2026-01-21 at 16.33.24.png</a></td></tr><tr><td>Databases</td><td><a href="https://github.com/inseefrlab/helm-charts-databases">https://github.com/inseefrlab/helm-charts-databases</a></td><td><a href="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2Fjvuca67Xq1x3rWN4JXRh%2Fhero%20(1).webp?alt=media&#x26;token=dee4b016-f029-4b03-be89-77fd2080777b">hero (1).webp</a></td></tr><tr><td>Automation</td><td><a href="https://github.com/InseeFrLab/helm-charts-automation/">https://github.com/InseeFrLab/helm-charts-automation/</a></td><td><a href="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2FhrxI9XwUJ5VFYT3h06VL%2Fmlflow-argo.png?alt=media&#x26;token=c83b4ab1-3627-49e1-a2ac-91e45da45f27">mlflow-argo.png</a></td></tr><tr><td>Data visualization (optional)</td><td><a href="https://github.com/InseeFrLab/helm-charts-datavisualization">https://github.com/InseeFrLab/helm-charts-datavisualization</a></td><td><a href="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2FPHGcvITvKjAGFxm6YEXR%2F65dcd5fadc1df1b15af75c1e_Metabase%20vs%20Redash.png?alt=media&#x26;token=f44e934c-f33d-4f67-ac44-4a4ab7810f60">65dcd5fadc1df1b15af75c1e_Metabase vs Redash.png</a></td></tr></tbody></table>

As an instance admin, you can heavily customize what users see and can do:

* Change defaults for a service (resources, images, features).
* Apply different policies per user group (example: who can request H100).
* Fork our catalogs or build your own.
* Turn any Helm-deployable software into a service.

Example: [Doom launched as an Onyxia service](https://youtu.be/7SuXRfQqdGM?si=2Y_jrQyW-fMfGn6M\&t=731).

## Mental model: Onyxia is a UI for Helm

If you already know Helm, most of this will feel familiar.

### Helm concepts (baseline)

* A **Helm repository** is a collection of Helm charts.
* A **Helm chart** is a recipe to deploy software on Kubernetes.
* Charts expose configuration via **values**.

Defaults live in `values.yaml`.

Example: [`values.yaml` (jupyter-python)](https://github.com/InseeFrLab/helm-charts-interactive-services/blob/main/charts/jupyter-python/values.yaml).

When installing a chart, you can override any default value.

Charts can also ship a `values.schema.json`.

This JSON Schema describes:

* which options exist
* the expected types / formats
* constraints (min/max, enums, patterns, …)

Example: [`values.schema.json` (jupyter-python)](https://github.com/InseeFrLab/helm-charts-interactive-services/blob/main/charts/jupyter-python/values.schema.json).

### How Onyxia uses Helm to build the UX

You configure which Helm repositories Onyxia should load as catalogs.

{% hint style="info" %}
If you don’t configure catalogs, Onyxia loads the defaults from [`catalogs.json`](https://github.com/InseeFrLab/onyxia-api/blob/main/onyxia-api/src/main/resources/catalogs.json).
{% endhint %}

On the “Service catalog” page:

* Each **Helm repo** becomes a **tab** (Interactive services, Databases, Automation, …).
* Each **chart** becomes a **service card** (Jupyter, RStudio, …).

<figure><img src="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2Ffyy9KwqXIuHNhpxuCs0w%2Fimage.png?alt=media&#x26;token=e64850f7-9873-4d4e-88e4-3729ce1b9b46" alt=""><figcaption></figcaption></figure>

When a user opens a service:

* Onyxia reads the chart’s `values.schema.json`.
* It renders a form from the schema.
* It generates a final `values` object that Helm will apply.

Onyxia can also inject user-specific defaults. For example, it can prefill S3 credentials:

<figure><img src="https://1427987393-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx3LIftMZY501x5liXUPV%2Fuploads%2FcTTGUmzqxBCGMZsdImcJ%2Fonyxia-helm.png?alt=media&#x26;token=357ed7f3-6831-4a66-bca2-82700d1c42de" alt=""><figcaption></figcaption></figure>

## Customizing the catalog

You have two main customization paths:

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-type="content-ref"></th></tr></thead><tbody><tr><td>Instance-level overrides (recommended for most setups)</td><td><a href="catalog-of-services/override-schema-for-a-specific-instance">override-schema-for-a-specific-instance</a></td></tr><tr><td>Bring your own catalogs (or a fork of ours)</td><td><a href="catalog-of-services/custom-catalogs">custom-catalogs</a></td></tr></tbody></table>
