# Configuration reference

> Every field you can set on an Ownkube deployment, by resource type: web app, worker, job, database and cache. Defaults, ranges, and what each one does.

Every deployment is configured from one form, with different fields by **resource type**. This page is the exhaustive reference. For the tour, see [Deployments](/docs/deployments); for the walkthrough, [Create a deployment](/docs/deployments/create).

Every field is editable after creation from the deployment's **Settings** tab (variables on **Variables**, build settings on **Builder**). Saving creates a revision and rolls it out.

<img src="/docs/screenshots/deployment-settings.webp" alt="Screenshot of a web app's Settings tab with source, port, resources, scaling and health check sections" />

## Fields shared by every resource type

| Field | Type | Default | Rules |
|---|---|---|---|
| **Name** | text | none | Lowercase letters, numbers and dashes; starts with a letter; up to 63 characters. Unique within the environment. Required. |
| **Project** | select | the default project | A [project](/docs/organizations/projects) in the organization. Movable later with **Move**. |
| **Environment** | select | none | An [environment](/docs/deployments/environments) such as Development or Production. Required. |
| **Region** | select | none | Asia (Mumbai) or Europe (Germany). Fixed after creation. See [Regions](/docs/deployments/regions). |

**Running in your own cloud?** On the [own-cloud path](/docs/own-cloud) the form shows a **Cluster** field instead of a region, and the uniqueness rule becomes the cluster plus environment pair.

## Source

Web apps, workers and jobs run a container image from one of two sources. See [Builds and source](/docs/deployments/builds).

#### Build from a repository

| Field | Type | Default | Notes |
|---|---|---|---|
| **Repository** | picker | none | From the repositories on your connected GitHub or GitLab account. |
| **Branch** | text | repository default | Every push to this branch builds and deploys. |
| **Root directory** | text | repository root | Folder to build from, for monorepos. On the **Builder** tab. |
| **Build arguments** | list | none | `KEY=value` pairs passed to the build. On the **Builder** tab. |
| **Builder size** | select | Standard | Small (0.25 vCPU, 1 GB), Standard (0.5 vCPU, 2 GB), Large (Team). On the **Builder** tab. |

#### Use an existing image

| Field | Type | Default | Notes |
|---|---|---|---|
| **Image** | text | none | A public image reference such as `ghcr.io/owner/app`. |
| **Tag** | text | none | Pin a version or commit SHA rather than `latest`. |

## Web app and worker

Web apps and workers share the same fields. A web app is reached over HTTP, usually through a public hostname; a worker runs in the background and stays private.

### Container

| Field | Type | Default | Range |
|---|---|---|---|
| **Port** | number | none | 1 to 65535. Required. The port the container listens on. |
| **Replicas** | number | 1 | 0 to 20. `0` pauses the deployment without deleting it. Ignored when autoscaling is on. |

### Public hostname

| Field | Type | Default | Notes |
|---|---|---|---|
| **Public hostname** | toggle | on for web apps, off for workers | Allocates a `<name>.ownkube.app` hostname with a managed TLS certificate. See [Public hostnames and TLS](/docs/networking/public-hostnames). |
| **Subdomain** | text | derived from the name | The label under `ownkube.app`. Change it with **Edit** next to the hostname or `okctl deploy subdomain set`. |

### Resources

| Field | Type | Default | Notes |
|---|---|---|---|
| **Billing mode** | select | Metered | **Metered** bills CPU and memory actually used, per minute. **Reserved box** bills a flat monthly rate for a Spark or Core box. See [Plans and pricing](/docs/billing/plans#reserved-boxes). |
| **CPU request** | quantity | `15m` | Set by Ownkube on Ownkube Compute. On your own cloud, the guaranteed floor and the baseline autoscaling measures against. `1000m` is one vCPU. |
| **Memory request** | quantity | `128Mi` | Set by Ownkube on Ownkube Compute. On your own cloud, guaranteed memory. |
| **CPU limit** | quantity | `500m` | The ceiling the container cannot exceed. On Ownkube Compute, the baseline autoscaling measures against. |
| **Memory limit** | quantity | `512Mi` | The container is restarted if it exceeds this. |
| **Box** | select | Spark 1 | With **Reserved box**: Spark 1 to 3, or Core 2 to 8 and the memory variants on Personal and Team. |

Tier caps apply across the organization: 2 vCPU and 4 GiB on Pay as you go, 8 vCPU and 16 GiB on Personal, 32 vCPU and 64 GiB on Team. Services that can sleep count once, at the largest one's size; see [how the limits count](/docs/billing/plans#how-the-limits-count).

On Ownkube Compute, **Settings → Resources** sets the CPU and memory limits on sliders, up to your plan's cap, for metered web apps, workers and jobs. You pay for what the service uses, up to those limits. A reserved box sets its own size instead. Requests are set by Ownkube. Autoscaling is set with the `update_deployment` [MCP tool](/docs/mcp) or the API.

### Scaling

| Field | Type | Default | Range |
|---|---|---|---|
| **Enable autoscaling** | toggle | off | |
| **Min replicas** | number | 1 | 1 to 100, at most Max replicas |
| **Max replicas** | number | 3 | 1 to 100, at least Min replicas |
| **Target CPU utilization** | percent | 80 | 1 to 100. Of the CPU limit on Ownkube Compute, of the CPU request on your own cloud. |
| **Target memory utilization** | percent | 80 | 1 to 100, of the memory request. Own cloud only: Ownkube Compute sizes memory automatically. |

See [Autoscaling](/docs/deployments/autoscaling).

### Sleep (web apps on Ownkube Compute)

| Field | Type | Default | Range |
|---|---|---|---|
| **Sleep when idle** | toggle | off | Needs a public hostname and a single replica without autoscaling. |
| **Idle before sleep** | minutes | 5 | 1 to 60 |

See [Sleep and wake](/docs/deployments/sleep).

### Health checks

Three independent probes, each off by default. When on, each takes the same fields.

| Field | Type | Default | Range |
|---|---|---|---|
| **Path** | text | `/health` | non-empty |
| **Period** | seconds | 10 | 1 to 300 |
| **Timeout** | seconds | 5 | 1 to 60 |
| **Failure threshold** | count | 3 | 1 to 30 |
| **Initial delay** | seconds | 0 | 0 to 300 |

**Startup** gates how long a container has to boot, **liveness** restarts it when it fails, **readiness** holds traffic until it passes. See [Health checks](/docs/deployments/health-checks).

### Access protection

Shown only when the deployment is public, and only on an own-cloud Starter cluster. See [Access protection](/docs/own-cloud/access-protection).

| Field | Type | Default | Notes |
|---|---|---|---|
| **Require a password** | toggle | off | HTTP basic auth with a **Username** (no spaces or colons) and **Password**. |

## Job

A job runs a container to completion and exits. It has no port, replicas, hostname, autoscaling, sleep or access protection. Jobs share **Source**, **Resources** and **Variables** with web apps and add the fields below. See [Scheduled jobs](/docs/deployments/jobs).

### Command

| Field | Type | Default | Range |
|---|---|---|---|
| **Command** | list | image entrypoint | up to 64 entries |
| **Arguments** | list | image default | up to 64 entries |

### Schedule

| Field | Type | Default | Notes |
|---|---|---|---|
| **Active** | toggle | on | Off suspends the schedule; **Run now** still works. |
| **Cron expression** | text | none | Standard five-field [cron](https://en.wikipedia.org/wiki/Cron#Cron_expression) or an `@macro` such as `@daily`. Empty makes the job one-off. |
| **Overlapping runs** | select | Forbid | **Allow**, **Forbid** (skip while the previous run is going) or **Replace** (cancel it). |
| **Time zone** | text | UTC | An IANA zone such as `Asia/Kolkata`. |
| **Start deadline** | seconds | none | 0 to 86400. How late a run may start before it is skipped. |
| **Keep successful runs** | count | none | 0 to 100 |
| **Keep failed runs** | count | none | 0 to 100 |

### Execution

| Field | Type | Default | Range |
|---|---|---|---|
| **On failure** | select | Never | **Never** (keep the failed container for inspection) or **OnFailure** (retry in place). |
| **Retry limit** | number | none | 0 to 20 |
| **Run timeout** | seconds | none | 1 to 86400 |
| **Clean up after** | seconds | none | 0 to 604800 |
| **Parallel tasks** | number | 1 | 1 to 20 |
| **Completions** | number | 1 | 1 to 20 |

## Database

A managed Postgres deployment. Databases have no port, replicas, autoscaling, probes or variables of their own; apps get the connection string by [linking](/docs/data/postgres#connect-an-app). See [Postgres](/docs/data/postgres).

| Field | Type | Default | Notes |
|---|---|---|---|
| **Version** | select | 18 | Postgres 17 or 18. Set at creation. |
| **Box** | select | DB 0.5 | DB 0.5 to DB 16, or DB 4 to DB 16 Dedicated (Team). Pay as you go goes up to DB 2. |
| **Storage** | select | 10 GiB | 1, 5, 10, 20, 50 or 100 GiB. Can grow, never shrink. |
| **Standby replicas** | number | 0 | Up to 2 on Team. Each standby bills as another database box. |
| **Backups** | toggle | off | Daily backups with 7-day point-in-time recovery on Personal and Team. Toggling restarts the database. |
| **Public access** | toggle | off | A stable public hostname with its own TLS certificate. Needed for the [data console](/docs/data/console) and external clients. |
| **Sleep when idle** | toggle | off | Needs public access on. Storage still bills while asleep. |
| **Database name** | text | from the deployment name | A valid Postgres identifier. Set at creation. |
| **Owner role** | text | from the deployment name | Set at creation. |

## Cache

A managed Valkey deployment. See [Valkey cache](/docs/data/valkey).

| Field | Type | Default | Notes |
|---|---|---|---|
| **Version** | select | latest | The Valkey version. |
| **Box** | select | Cache 0.25 | Cache 0.25 to Cache 4, by memory. Pay as you go goes up to Cache 1. |
| **Max memory** | quantity | the box size | The limit Valkey evicts against. |
| **Eviction policy** | select | `allkeys-lru` | Any standard Valkey policy such as `volatile-lru` or `noeviction`. |
| **Public access** | toggle | off | A public `rediss://` endpoint with TLS. Needed for the data console. |
| **Sleep when idle** | toggle | off | A sleeping cache bills nothing. |

The cache password is generated and cannot be changed.

## Cross-cutting behavior

- **Revisions.** Every change is a revision with a field-level diff on the **Activity** tab. See [Rollbacks and activity](/docs/deployments/rollbacks).
- **Secrets.** A variable marked **Secret** is masked in the UI and redacted from the activity diff. Saving a secret with a blank value keeps the stored value.
- **Rolling updates.** New containers pass health checks before old ones stop.
- **Roles.** Members can edit configuration, variables and scaling. Deleting, changing billing mode and revealing credentials need an owner or admin. See [Organizations and roles](/docs/organizations).

- [Deployments](/docs/deployments)
- [Variables](/docs/deployments/variables)
- [Plans and pricing](/docs/billing/plans)

---

**Don't see a feature you need?** Email [support@ownkube.io](mailto:support@ownkube.io?subject=Feature%20request). Ownkube is shaped by the teams using it and we ship what our users ask for.

## Search

This site has a search endpoint: https://context7.com/api/v2/ask?siteKey=ask_c64dfe8ffaa8d3ad19576838&query=<URL-encoded question>. It returns documentation that answers the question, with a source link for each part. No API key is needed. If nothing matches, it says so.
