# Pods

A pod is a container that runs a ready-made app for you, such as an AI agent or a workflow tool, on kenari infrastructure. You pick an app from a catalog, kenari starts it, and you reach it at its own address. There is no server to manage. Each pod is billed every 30 days from your kenari balance. Open **Pods** in the dashboard menu to start.

## Choose an app

The catalog lists the apps kenari has tested, for example Hermes Agent, WhatsApp Gateway, n8n and OpenClaw. Each app has a description, a minimum tier and its own settings. If the app you need is not listed, use **Request it via Help** on the create page.

## Create a pod

1. Press **Create Pod**.
2. Under **1. Choose an app**, pick an app.
3. Under **2. Choose a tier**, pick the CPU, memory and disk you need. Each tier shows its monthly price. A tier below the app's minimum is marked **Minimum** with the tier name, and a tier the servers have no room for is marked **Not enough server capacity right now**.
4. Under **3. Configuration**, fill in the app's settings. Required settings must be filled. For a setting that takes a kenari key, **Create kenari key** makes one for you, saves it under **API Keys** and deletes it when you delete the pod. For a setting that takes a model, pick one from the kenari catalog or type an id.
5. Press **Create Pod** and confirm.

The first month's price is taken from your balance when the pod is created. If your balance is too low, the page asks you to top up and then try again.

When the pod is ready, a banner shows its **Address:** and a pod password. Copy the password now, because it is shown only once. You can always get in with **Open Console** instead.

If the pod fails to start, it shows **Failed** and the first month's charge is refunded.

## How a pod is billed

A pod moves through these states. Its current state is shown on the pod page.

| State | What it means |
| --- | --- |
| **Provisioning** | The container is being prepared. |
| **Trial** | The first 5 minutes after creation. The first month is already paid. Delete the pod in this window and you get it back in full, together with any tier upgrade you paid for in the same window. |
| **Active** | The pod is running. Every 30 days, counted from creation, the monthly price is taken from your balance. The date is shown as **Next renewal**. |
| **Grace period** | A renewal failed because the balance was insufficient. The pod keeps running for 1 day. |
| **Suspended** | The grace period ended unpaid. The container is stopped and the data is kept for 2 days. |

You get a notification at each step. Topping up your balance brings the pod back automatically. In **Grace period** or **Suspended**, the next billing check takes the monthly price, starts a new 30-day period and returns the pod to **Active**. A suspended pod's container is started again.

If the pod stays suspended for 2 days, kenari deletes it. The data cannot be recovered, and the kenari key made for the pod is deleted with it. In total that is 3 days between a missed renewal and deletion.

Deleting a pod yourself is permanent and the remaining paid time is forfeited, except in the first 5 minutes when you get a full refund.

## Open your pod

Each pod has its own address, `https://pod-<name>.kenari.id`, where `<name>` is two words kenari picks, such as `gesit-kancil`. The name is fixed. Renaming a pod only changes the label in your list, which can be up to 40 characters.

Press **Open Console** on the pod page to go straight in. To sign in without the dashboard, open the address and enter the **Pod password**. Press **Reset password** to get a new one. It is shown only once, and anyone signed in with the old password is signed out.

Some apps have their own login behind the kenari password. After the kenari sign-in, sign in with the app's own account.

## Edit environment variables

Open the pod page and find **Environment**. You can change the variables the app declares, the same ones you filled in when you created the pod. Press **Save changes** to apply them. Editing is free.

- The container is recreated with the new values. It restarts and is briefly unavailable. The `/data` folder, the pod's persistent storage, is kept, so no data is lost.
- For a secret such as an API key, leave the field blank to keep the stored value. Type a new value only to replace it. A stored secret is never shown again. A badge shows **Already set** when one is stored.
- Required variables must stay filled.
- `POD_DOMAIN`, `POD_URL` and `POD_SCHEME` are set by kenari and cannot be changed.
- If the app fails to start with the new values, the pod goes back to the previous working configuration.

You can edit the environment while the pod is **Active** or in **Grace period**. It cannot be edited during **Trial**, while **Suspended**, or while the pod is being updated or moved.

## Manage a pod

| Action | Where | What happens |
| --- | --- | --- |
| Upgrade the tier | **Upgrade Tier** | Applies at once. The cost for the rest of the current 30 days is taken from your balance. During **Trial** the whole 30 days run on the new tier, so the full price difference is taken. Not available while the pod is **Provisioning**. Tiers cannot be downgraded, and the server must have room. |
| Update the app | **App Version** | Shown when a newer version exists. kenari snapshots the data first, restarts the pod and rolls back to the old version if the new one fails to run. |
| Restart | **Restart** | Restarts the container with a short interruption. Only while **Active**, and not while the pod is being updated or moved. |
| Delete | **Delete pod** | Type the pod name to confirm. Permanent. |

If the pod shows **Pod ran out of memory**, the container was stopped because it used all its RAM. Use **Upgrade tier** to add memory. The **Resources** section shows the latest CPU, RAM and disk use.

## Limits and pitfalls

- Pods are paid from balance only. Keep enough balance for the next renewal. See [How a pod is billed](#how-a-pod-is-billed).
- Back up anything you need from the app before you delete a pod. Deletion removes the container and all its data.

## See also

- [How billing works](/en/docs/billing)
- [Domains](/en/docs/domains)
