# Create an App

> How to create and deploy a new application on Tarout

# Create an App

## From the Dashboard

1. Go to **Applications** in the sidebar and start a new application.
2. Choose a plan for the app (Free, or a slot from your paid plan).
3. Enter a name (optional; Tarout generates one if you leave it blank) and an optional description.
4. Click **Create Application**. Nothing is deployed yet: Tarout opens the new app's page.
5. On the app's **General** tab, choose where the code comes from:
   - **GitHub** - Pick a repository and branch from your connected GitHub account.
   - **GitLab** - Pick a repository and branch from your connected GitLab account.
   - **Upload** - Upload your project files.
   - **Docker Hub** - A public image pinned to a `sha256` digest (see [Docker Hub](#docker-hub) below).
6. Click **Deploy** to start the first deployment.

If your app is not at the repository root (for example in a monorepo), set **Root Directory** under **Settings → Build & Output Settings** before deploying.

## From the CLI

```bash
# Navigate to your project directory
cd my-app

# Inspect, create or link the app, connect its GitHub repo (or upload this folder), and deploy
tarout deploy --wait
```

When the current folder contains database, file storage, or Git signals, `tarout deploy` shows what it found and prompts before creating resources. GitHub is optional: if a user does not have a GitHub account, keep the default local upload source.

## Build Configuration

Tarout auto-detects your framework and sets the build configuration. To override it, open the app's **Settings** tab and use the **Build & Output Settings** card (framework preset, root directory, output directory, and install, build, and start commands), then redeploy.

### Build Environment Variables

Variables are set on the app's **Variables** tab. Only variables with a public or build-tool prefix, such as `NEXT_PUBLIC_`, `VITE_`, `REACT_APP_`, `PUBLIC_`, or `RAILPACK_`, reach the build. Every other variable is available only at runtime. See [Environment Variables](https://tarout.sa/docs/applications/environment-variables#build-time-variables) for the full list.

## Deployment Sources

### GitHub

Connect your GitHub account in **Settings → Git Providers**. Tarout uses a GitHub App for secure access - you choose exactly which repositories to share.

### GitLab

Connect your GitLab account in **Settings → Git Providers**. Tarout receives webhook events for automatic deployments.

### Docker Hub

Deploy a public Docker Hub image pinned to an immutable digest, for example `nginx@sha256:<digest>`. Tags such as `nginx:latest` are rejected because they can change under you, and private registries are not supported yet. Set the port your container listens on (the default is `3000`).

## Resource Limits

Applications on the shared pool have default resource limits. Contact support if you need higher limits or consider a dedicated server.

---

## Every Tarout agent guide

- [Start Here (Agents)](https://tarout.sa/docs/for-ai/start.md)
- [Overview](https://tarout.sa/docs/for-ai.md)
- [Deploying an app](https://tarout.sa/docs/for-ai/deploy.md)
- [Databases](https://tarout.sa/docs/for-ai/database.md)
- [Object storage](https://tarout.sa/docs/for-ai/storage.md)
- [Custom domains](https://tarout.sa/docs/for-ai/domains.md)
- [Plans and upgrades](https://tarout.sa/docs/for-ai/billing.md)
- [Troubleshooting](https://tarout.sa/docs/for-ai/troubleshoot.md)
- [Agent Onboarding](https://tarout.sa/docs/for-ai/onboarding.md)
- [CLI Reference](https://tarout.sa/docs/for-ai/cli-reference.md)
- [CLI JSON Schema](https://tarout.sa/docs/for-ai/cli-json-schema.md)

Whole corpus in one file: https://tarout.sa/llms-full.txt · index: https://tarout.sa/llms.txt
Any docs page is raw markdown at the same URL + `.md`. Short link to the entry point: https://tarout.sa/deploy.md
