Skip to main content

Open Koyeb deploy

Deploy-button guide for Koyeb using the public Docker image, manual Postgres URL, and runtime secrets.

Overview

Koyeb can deploy Manifest from the public Docker image with a Deploy to Koyeb button. The button pre-fills the image, HTTP port, and runtime settings, but you must create PostgreSQL separately and replace the placeholder secrets before deploying.

Prerequisites

  • A Koyeb account on a paid plan (Pro or higher) with a valid payment method. Since Koyeb joined Mistral AI, deploying requires a paid plan: on an account without one, the deploy link shows an announcement banner instead of the form.
  • A Koyeb PostgreSQL Database Service.
  • Two random 32+ character secrets for Manifest.
  • A private S3-compatible bucket and an access key for it. Koyeb instances have no persistent disk, so request logs need external storage.
This deployment creates paid resources.

Create PostgreSQL

In Koyeb, create a PostgreSQL Database Service in the same region you plan to use for Manifest. After it is ready, open the database connection details and copy the connection string. Manifest uses TLS to connect to Koyeb Postgres, so include sslmode=require in the connection string. If the copied URL has no query string, append ?sslmode=require. If it already has query parameters, append &sslmode=require.

Generate secrets

Generate separate values for session signing and at-rest provider credential encryption:

Deploy Manifest

  1. Open the Koyeb deploy link.
  2. Replace DATABASE_URL with your Koyeb Postgres connection string.
  3. Replace BETTER_AUTH_SECRET with the first generated secret.
  4. Replace MANIFEST_ENCRYPTION_KEY with the second generated secret.
  5. Replace the REQUEST_RECORDING_S3_* placeholder values with your bucket, region, endpoint, and access keys. Leave the endpoint blank only for AWS S3.
  6. Leave BETTER_AUTH_URL as https://{{ KOYEB_PUBLIC_DOMAIN }}.
  7. Leave PORT, MANIFEST_MODE, BIND_ADDRESS, DB_POOL_MAX, AUTH_DB_POOL_MAX, and REQUEST_RECORDING_STORAGE unchanged for a single-instance deploy. Set REQUEST_RECORDING_S3_FORCE_PATH_STYLE to true only if your object-storage provider requires path-style URLs.
  8. Deploy the service.
The button deploys docker.io/manifestdotbuild/manifest:6 and exposes port 2099 over HTTP.

Open Manifest

After the deployment is live, open the public Koyeb domain and create the first account. Fresh installs redirect to /setup; the first account you create becomes the admin. Verify the deployment:

Notes

  • Koyeb instances have an ephemeral filesystem, which is why the deploy link collects S3-compatible storage for request logs. Recordings live in your bucket, not on the instance.

Tearing it down

Delete both resources when you are done:
  • The Manifest Koyeb Web Service.
  • The Koyeb PostgreSQL Database Service.
Deleting only the web service leaves the database running. Relevant Koyeb docs: