Skip to main content
This page takes an application from a Git repository to a running service, using only the terminal. Every step is a command you can copy, so a script or a coding agent can follow it from start to end. The agent skills do the same work for you; this page shows what they run. Qovery has no repository manifest: there is no qovery.yml to write. Everything below is created in Qovery through the API, and qovery api handles authentication for you.

Before you start

A Qovery account. The first qovery auth creates one, and the Free plan needs no credit card.
A cluster in your organization: your own Kubernetes cluster (install it), a cluster managed by Qovery, or a local one from qovery demo up (local demo).
A repository on GitHub, GitLab or Bitbucket with a Dockerfile, and the port your app listens on.
jq to read IDs from the JSON responses.
Some steps need a person, once per organization: Everything else on this page can run unattended.

1. Install the CLI and sign in

qovery auth --headless prints a link to open in a browser. qovery auth status shows whether you are signed in, without printing the token. Other install methods (Homebrew, Windows, pinned releases) are on the CLI page.
qovery context set is interactive. In scripts and agents, pass IDs in the API paths and names with --organization, --project and --environment instead.

2. Find your organization and cluster

The examples use jq to read the JSON responses, and shell variables for the IDs, so every command can be pasted as is.

3. Give Qovery read access to the repository

Skip this step if your organization already has Git access set up (a Git token or the Git provider connected in the Console). Create a token on your Git provider with read access to the repository (see Git repository access for the permissions per provider), put it in an environment variable, then register it in Qovery:
type is GITHUB, GITLAB or BITBUCKET. Bitbucket also needs a workspace field. Keep the id from the response in GIT_TOKEN_ID: it is the git_token_id used in step 5.

4. Create a project and an environment

mode is DEVELOPMENT, STAGING or PRODUCTION.

5. Create the application

Save this as application.json and change the values to match your repository:
  • git_repository.url must end in .git. owner and name are the repository owner and name from that URL.
  • root_path is the folder that holds the Dockerfile, for example /backend in a monorepo.
  • internal_port is the port your app listens on. Use an http probe instead of tcp if the app has a health endpoint.
  • Set git_token_id to the id from step 3, or remove the line if your organization uses the Git provider connected in the Console.
  • cpu is in millicores and memory in MiB.
The full schema, with every optional field, is in the API reference. qovery api spec prints the same OpenAPI file in the terminal.

6. Deploy

--commit-id latest deploys the newest commit of the branch. --watch follows the deployment until it succeeds or fails. To deploy several services of the environment at once, use qovery environment deploy with --applications, --containers or --services. See the environment commands.

7. Check it worked

The list shows the application and its status. The link call returns the public URL of each exposed port. Open it to reach your app. If the deployment failed, read the logs:
Build and runtime errors and their fixes are in Troubleshooting.

Commands and files that do not exist

Agents often guess these. None of them exist:

Next steps

Give an agent a scoped token

Let a coding agent deploy to staging and nothing else.

Add a database

Create a database or a Blueprint and connect it to your app.

Manage it with Terraform

Keep the same setup as code.

Preview environments

One environment per pull request.