> ## Documentation Index
> Fetch the complete documentation index at: https://docs.niro.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Connect your first k3s cluster, confirm live health, and deploy an app through Niro in under 5 minutes.

## Connect your first cluster

Start with a real cluster and a safe default: the Niro agent enrolls read-only, calls home over outbound HTTPS, and begins sending live fleet context without opening public ports.

<Frame caption="After enrollment, the dashboard shows live cluster health, workload status, incidents, and recent changes.">
  <img src="https://mintcdn.com/niro/ujAs6O33ScMqRsAr/images/dashboard.png?fit=max&auto=format&n=ujAs6O33ScMqRsAr&q=85&s=d274b339a9b8eca214503269e9061c2a" alt="Niro dashboard showing connected cluster health and workload incident context" width="3424" height="1730" data-path="images/dashboard.png" />
</Frame>

<CardGroup cols={3}>
  <Card title="k3s cluster" icon="server" color="#7C3CFF">
    Any k3s installation works. A single-node homelab cluster is enough.
  </Card>

  <Card title="kubectl access" icon="terminal" color="#8F5CFF">
    Run the installer from a machine that can apply resources to the cluster.
  </Card>

  <Card title="Niro account" icon="user" color="#9A6BFF">
    [Start free](https://app.niro.cx/signup). No credit card required for the first cluster.
  </Card>
</CardGroup>

## Enroll the agent

<Steps>
  <Step title="Create a cluster in Niro">
    Sign in to [app.niro.cx](https://app.niro.cx) and choose **Add cluster** from the fleet view.

    Give the cluster a name like `homelab`, `edge-site-01`, or `customer-prod-1`, then choose its [environment](/concepts/environments). Niro generates a single-use enrollment token.
  </Step>

  <Step title="Run the install command">
    Copy the command from the dashboard and run it with `kubectl` access to the target cluster:

    ```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
    curl -fsSL https://get.niro.cx/install.sh | NIRO_TOKEN=<your-token> sh
    ```

    The installer creates the `niro-system` namespace, applies read-only RBAC, deploys the agent, and stores the long-lived cluster key inside the cluster.

    <Warning>
      The enrollment token is single-use and expires in 1 hour. Regenerate it from cluster settings if the install window expires.
    </Warning>
  </Step>

  <Step title="Confirm the heartbeat">
    Return to the dashboard. Within about 15 seconds, your cluster should show a fresh heartbeat, node count, pod inventory, and health state.

    <Check>
      The cluster is connected when it shows a green **Healthy** badge and a recent **last heartbeat** timestamp.
    </Check>
  </Step>
</Steps>

## Deploy your first app

Niro gives you two delivery paths. Use the visual builder for a fast first deploy, then move production remediation through Git when your workflow needs review gates.

<Tabs>
  <Tab title="Visual builder">
    The visual builder turns application settings into Kubernetes manifests and shows policy findings before you apply.

    <Steps>
      <Step title="Enable apply capability">
        The agent starts read-only. Re-run the installer with apply enabled before deploying workloads:

        ```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
        curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_APPLY=1 sh
        ```
      </Step>

      <Step title="Open the builder">
        In the dashboard, go to **Apps** → **Deploy app**, then select your cluster.
      </Step>

      <Step title="Fill in the workload form">
        Enter the container image, ports, environment variables, resource limits, and private registry settings if needed.
      </Step>

      <Step title="Apply to cluster">
        Click **Apply to cluster**. Niro sends the generated manifests to the agent and shows per-object results within seconds.
      </Step>
    </Steps>

    Continue with [Deploy an App](/guides/deploy-app) for the full walkthrough.
  </Tab>

  <Tab title="GitOps remediation">
    GitOps keeps fixes reviewable. Niro reviews manifest risk, comments on pull requests, and applies the approved state after merge.

    <Steps>
      <Step title="Connect GitHub">
        Go to **Integrations** → **GitHub** and create the Niro GitHub App.
      </Step>

      <Step title="Link a repo">
        Choose the repo, branch, and folder path that owns the cluster manifests.
      </Step>

      <Step title="Open a pull request">
        Push manifest changes and open a PR. Niro reviews the diff, surfaces policy findings, and applies the merged state automatically.
      </Step>
    </Steps>

    Continue with [Set Up GitOps](/guides/gitops) for the full workflow.
  </Tab>
</Tabs>

## Enable optional capabilities

Capabilities are explicit so cluster owners decide exactly what Niro can do.

<CodeGroup>
  ```bash Live logs theme={"theme":{"light":"github-light","dark":"vesper"}}
  curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_LOGS=1 sh
  ```

  ```bash Apply manifests theme={"theme":{"light":"github-light","dark":"vesper"}}
  curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_APPLY=1 sh
  ```

  ```bash Logs and apply theme={"theme":{"light":"github-light","dark":"vesper"}}
  curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_LOGS=1 NIRO_ENABLE_APPLY=1 sh
  ```
</CodeGroup>

Each capability appears in the dashboard after the next heartbeat. See [Agent Capabilities](/reference/agent-capabilities) for the complete matrix.

## What's next?

<CardGroup cols={2}>
  <Card title="Monitor your fleet" icon="gauge" href="/guides/fleet-monitoring" color="#7C3CFF">
    Use cluster health, pod inventory, and timelines to understand operations across environments.
  </Card>

  <Card title="Stream pod logs" icon="terminal" href="/guides/pod-logs" color="#8F5CFF">
    View live logs from any enabled cluster directly in the browser.
  </Card>

  <Card title="Set up alerts" icon="bell" href="/features/alerts" color="#9A6BFF">
    Get notified when incidents fire and trigger AI investigations on Pro.
  </Card>

  <Card title="Add private registries" icon="lock" href="/guides/private-registries" color="#7C3CFF">
    Pull private images with scoped registry credentials and image pull secret injection.
  </Card>
</CardGroup>
