Skip to main content

App Types

Quave ONE lets you create five 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 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.
SolutionsCurated one-step setups that may create one or more connected components, such as Headscale Stack or Metabase.A guided Solution flow creates standard Apps/AppEnvs and records their shared solution installation identity for retry and follow-up.List with GET /api/public/v1/solutions, create with POST /api/public/v1/solutions, and use appType=solution in the UI route. MCP uses list-solutions and create-solution.
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 infrastructure 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 Solution when

  • you want Quave ONE to create a curated setup rather than pick one Docker preset;
  • the setup may include multiple connected components with generated credentials;
  • you want the dashboard, REST API, and MCP to run the same guided installer;
  • partial creation should be resumable without duplicating components.

Examples: Headscale Stack, Metabase, or future curated application stacks. See the Solutions section for the catalog and per-Solution guides.

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.
SolutionUse appType=solution in the UI route, or create through POST /api/public/v1/solutions / MCP create-solution with a solutionSlug returned by GET /api/public/v1/solutions.Components are created as normal Apps/AppEnvs and linked by a solution installation ID for retry and follow-up.
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.