Klarety

Run settings and app keys

Choose how each part of your app runs, and rotate the key your live app uses.

Each part of a deployed app (for example, a website and an API) has its own run settings: how it runs, its memory and CPU, and how many instances run at once. They decide how fast it answers and what it costs.

The three ways to run

SettingWhat it doesGood for
Sleeps when idleStarts when someone visits and costs nothing while idle. The first visit after a quiet spell takes a few seconds.Internal tools, demos, apps used now and then
Always on, lower priceKeeps running at a lower price, and may restart now and then.Apps that should answer at once but can handle an occasional restart
Always onKeeps running and is never interrupted.Busy apps and anything that must not restart

The AI picks the cheapest way for each part at setup. You can change it any time.

Before you start

  • The must be set up to deploy (see Deploy an app).
  • To change a setting, you need to be able to change the project.

See the current settings

Open the project on Deploy and go to Settings. Each part of the app shows:

  • How it runs (one of the three settings above).
  • Memory and CPU.
  • Most instances at once, with what your plan allows (Plan allows).
  • The most it can cost: "At most X credits an hour, at full load".

A ceiling, not a bill

The hourly figure is reached only when every instance is busy. Your real spend is in SettingsUsage & limits (see Credits).

The section says where the settings come from: the linked repository's production branch, or the .

from klarety import Nexus

nx = Nexus.connect()
print(nx.projects.deploy_settings("PROJECT_ID"))

Each service lists its mode (on-demand for Sleeps when idle, spot for Always on, lower price, always-on for Always on), its size, its most instances at once, the plan's ceiling for each, and the most it can cost an hour.

Change a setting

Ask the project's AI. It edits the deploy setup and pushes it, and the push deploys the change, so the setup stays reviewed and versioned in your code.

Open Settings

On the project's Deploy page, go to Settings and find the part.

Ask AI to change it

Select Ask AI to change and fill in What should change?, for example: "Keep the API always on, and let the website sleep when idle." Select Send.

Watch it work

The app says "Sent to your AI. Watch it work in the Studio." If the Studio is closed, the AI starts when it next opens.

The Settings section of a project's Deploy page, one row per part of the app
nx.projects.ask_ai_to_deploy(
    "PROJECT_ID",
    "Keep this service always on, with at most 2 instances",
    service="api",
)

Leave out service to ask about the whole app, for example to set up deploying for the first time.

What you see when it worked

A push from the Studio to the production branch waits for a person to approve it (see Approvals). Once deployed, Settings shows the new setting and cost ceiling.

Read how each part is doing

Under each part, Last X days shows Calls, Errors, Average response, Busiest moment (instances at once, of the most allowed), Wake-up after idle for a part that sleeps, and Memory at start. Use them to decide:

  • Wake-up after idle is too long for your visitors: switch to Always on, lower price or Always on.
  • Busiest moment reaches the most instances allowed: allow more instances, up to what your plan allows.
  • Memory at start is close to the part's memory: give it more memory before it runs out.

Rotate the app key

Your live app reaches the project's data with its own App key. Only the live app holds it; it is never shown.

Rotating stops the old key at once

The old key and anything it opened stop working now. The app goes out again with a new key, nothing rebuilt, and may show errors for about a minute.

Open the App key section

Open the project on Deploy and find App key.

Rotate it

Select Rotate key and confirm. The app shows Key rotated; the live app gets the new key within a minute.

The App key section on the Deploy page with the Rotate key button
nx.projects.rotate_app_key("PROJECT_ID")

Rotate it whenever you think it leaked. You never copy it anywhere: the app receives it by itself.

If something goes wrong

  • "Not priced on your plan yet": this setting is not available on your plan yet. Contact us to turn it on.
  • The app ran out of memory: the deploy explains it. Raise the memory for that part, or make the app use less as it starts.
  • The app did not start answering in time: if it is slow to start (for example, it loads a large model), load that on first use, or run it always on so it starts once and stays up.

Where to go next

On this page