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

# Compute

> Provision and manage cloud servers for your Kubernetes clusters

CNAP provisions and manages compute resources — the cloud servers that run your workloads. You don't need a separate cloud provider account. Create a cluster, deploy a workload, and CNAP handles server provisioning, Kubernetes setup, scaling, and lifecycle management.

## How it works

CNAP uses <Tooltip headline="Karpenter" tip="Karpenter is an open-source Kubernetes autoscaler that provisions nodes in response to pending pods. CNAP runs a custom Karpenter provider that translates scaling decisions into cloud API calls.">Karpenter</Tooltip> for intelligent auto-scaling. When your workloads need more resources, Karpenter detects unschedulable pods and tells CNAP to provision a new server. When demand drops, idle servers are removed to save costs.

```
Pod needs resources → Karpenter detects → CNAP provisions server → Server joins cluster → Pod scheduled
```

The entire flow takes about 2 minutes from pending pod to running workload.

## Two ways to run compute

### CNAP-managed (default)

CNAP provisions servers using its own cloud accounts. You don't need any cloud credentials. Machines are subject to [plan quotas](/platform/quotas) and [billing](/platform/billing).

| Plan | Machines | CPU     | Memory | Instance types | TTL      |
| ---- | -------- | ------- | ------ | -------------- | -------- |
| Free | 1        | 2 cores | 4 GB   | Small only     | 7 days   |
| Pro  | 3        | 8 cores | 16 GB  | All available  | No limit |

### Bring your own key (BYOM)

Add your own cloud provider API key and CNAP provisions machines in your account. You pay the provider directly — no machine quotas, no TTL limits, any instance type.

<Steps>
  <Step title="Add your API key">
    Go to **Compute** in the dashboard and click **Add Credential**. CNAP validates the token before saving it.
  </Step>

  <Step title="Create a compute config">
    Click **Create Config**, select your credential, choose a region, and name the configuration.
  </Step>

  <Step title="Provision machines">
    Karpenter uses your config to provision machines in your cloud account when your workloads need resources.
  </Step>
</Steps>

Your API token is stored in an external secrets manager — CNAP only keeps a reference, never the token itself. Tokens are re-validated hourly, and you receive a dashboard notification if a token becomes invalid.

## Supported providers

<CardGroup cols={2}>
  <Card title="Hetzner Cloud" icon="cloud" href="/compute/providers/hetzner">
    EU and US regions. Best value for European workloads.
  </Card>

  <Card title="More coming" icon="plus">
    AWS, GCP, Azure, DigitalOcean, Vultr — planned. Karpenter's provider interface makes adding new providers straightforward.
  </Card>
</CardGroup>

## Key features

* **Auto-scaling** — Karpenter provisions and removes machines based on workload demand
* **Suspend and resume** — [Pause machines](/compute/suspend-resume) to stop billing while preserving data
* **Auto-scaling controls** — Pause/resume scaling, set machine limits per cluster
* **Plan-aware** — Instance types and quotas adjust based on your subscription tier
* **Provider-agnostic** — Same API regardless of which cloud provider runs your machines

## What's next?

<CardGroup cols={2}>
  <Card title="Machines" icon="server" href="/compute/machines">
    Lifecycle, provisioning, deletion, and auto-scaling controls
  </Card>

  <Card title="Suspend and resume" icon="pause" href="/compute/suspend-resume">
    Save money by pausing machines when not in use
  </Card>

  <Card title="Hetzner Cloud" icon="cloud" href="/compute/providers/hetzner">
    Regions, instance types, and pricing for our first provider
  </Card>

  <Card title="Quotas" icon="gauge" href="/platform/quotas">
    Understand resource limits per plan
  </Card>
</CardGroup>
