Skip to main content

App Types

Quave ONE lets you create four customer-facing entity types from the Apps area. They all share the same account, app, environment, region, permissions, billing, logs, metrics, and audit model, but they run with different infrastructure behavior.

TypeUse forRuntime shapePublic API and MCP shape
AppsWeb apps, APIs, long-running workers, and services that should stay available.Long-running Kubernetes workloads with containers, ports, hosts, probes, optional storage, autoscaling, logs, metrics, and deploy history.Default app type. Create with POST /api/public/v1/app and a non-service Docker preset such as CUSTOM, METEOR_JS, NEXT_JS, or EXPRESS.
Databases & ServicesDatabases, caches, queues, and other managed infrastructure components. Examples: MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, and ClickHouse.Quave ONE-managed service infrastructure with generated credentials, internal and external connection URLs, service-specific limits, backups where supported, metrics, logs, and DevOps automation.In the API this still uses the historical appType=db, dockerPreset values such as POSTGRESQL or REDIS, and GET /api/public/v1/database-presets for compatibility.
FunctionsRequest-driven endpoints, webhooks, event-style APIs, and workloads that benefit from scale-to-zero.Knative-powered workloads that scale based on traffic and can scale to zero when idle.Create with dockerPreset: "FUNCTION". Configure runtime behavior with functionConfig.
JobsFinite commands such as Rails migrations, one-off maintenance tasks, imports, exports, and backfills.A customer-visible JobRun creates a Kubernetes Job, records status, logs, timing, command snapshot, and exit-code metadata, then exits.Create with dockerPreset: "JOB". Configure defaults with jobConfig, apply changes, then run with the Job Runs API or MCP.

Naming: Databases & Services

Older API names and some internal code still use Database, DB, or isDatabase because the first managed service type was a database. The user-facing category is broader: Databases & Services.

Use Databases & Services in docs and product explanation when talking about the group that includes:

  • databases, such as MongoDB, PostgreSQL, MySQL, CouchDB, and ClickHouse;
  • caches, such as Redis;
  • queues and brokers, such as RabbitMQ;
  • future service presets that Quave ONE manages for the customer.

Use the exact API names only when documenting a request field, endpoint, or enum value. For example, say "create a Databases & Services app with appType=db" instead of calling Redis only a database.

Choose the right type

Choose an App when

  • the process should keep running;
  • users or systems call it through HTTP, TCP, or a private service URL;
  • you need normal deploys, probes, hosts, persistent storage, or autoscaling;
  • failures should be handled by replacing pods and keeping the service available.

Examples: a Rails app, Meteor app, REST API, internal worker, Next.js app, or custom containerized service.

Choose Databases & Services when

  • Quave ONE should provision and operate the service for you;
  • the service exposes connection URLs and credentials rather than your own HTTP application;
  • you need a database, cache, broker, or similar infrastructure dependency;
  • you want service-specific defaults, resource limits, persistence settings, and backups where supported.

Examples: PostgreSQL for relational data, Redis for cache, RabbitMQ for queues, MongoDB for document data, CouchDB for replication-oriented data, or ClickHouse for analytics.

Choose a Function when

  • traffic is intermittent or event-driven;
  • you want scale-to-zero when idle;
  • the workload is request based and does not need persistent volumes;
  • the deployment region supports Functions.

Examples: webhooks, lightweight APIs, AI callbacks, or endpoints with bursty traffic.

Choose a Job when

  • the command should run to completion and stop;
  • a failed run should be visible as a failed run, not as a repeatedly restarting app pod;
  • you need per-run logs, status, command snapshots, and audit history;
  • operators or customers may rerun, cancel, or inspect the task later.

Examples: bin/rails db:migrate, bundle exec rails db:migrate, data backfills, one-off scripts, import/export tasks, or operational maintenance commands.

How creation maps to API fields

User-facing typeApp creation signalEnvironment creation notes
AppOmit appType, or use the normal app creation flow. Use app Docker presets such as CUSTOM, METEOR_JS, NEXT_JS, EXPRESS, or a pre-built image.Requires the normal app fields, including a port for non-Job apps.
Databases & ServicesUse appType=db in the UI route or choose a service dockerPreset from GET /api/public/v1/database-presets.Use service-specific fields such as dockerPresetVersion, containers, disk, withPersistence, and databaseSettings when supported.
FunctionUse appType=function or dockerPreset: "FUNCTION".Configure scaling and timeout with functionConfig. Functions require a supported deployment region.
JobUse appType=job or dockerPreset: "JOB".Configure command, timeout, TTL, retry, and concurrency with jobConfig. Job config edits follow the Apply Changes flow before default runs use them.