---
title: "overlane deploy target add"
description: "Add a deploy target with its provider token"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.overlane.app/llms.txt
> Use this file to discover all available pages before exploring further.

# overlane deploy target add

{/* Generated by apps/docs/scripts/generate.mjs (CLI pages from the command registry in packages/cli). Do not edit; run `pnpm --filter @overlane/docs gen`. */}

Adds a target on a provider this project can use (see `overlane deploy providers`). Kind settings come from --set: workers (Cloudflare, your account) needs scriptName and accountId; vercel needs projectRef (teamId optional); netlify needs siteId; fly needs app (machineId optional); aws needs region and functionName (its token is ACCESS_KEY_ID:SECRET_ACCESS_KEY); container (an image on Fly Machines) needs app and image, with port, machineId, channel.\<environment\>=\<tag\>, and database=postgres with databaseVersion, migrationCommand and migrationPath; overlane-hosting (Overlane Hosting) takes no settings and no token. The provider token comes from an environment variable or standard input and goes to the encrypted vault. Storing the provider token is a safety class: it needs an approval from an independent agent (evidence and a reason) or a person first.

## Usage

```sh
overlane deploy target add name --kind KIND [--set KEY=VALUE...] [--credential-env VAR] [--stdin] [--dry-run]
```

## Arguments

| Argument | Required | Description |
| --- | --- | --- |
| `name` | yes | A name for the target, lowercase letters, digits and dashes |

## Flags

| Flag | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `--kind` | one of `workers`, `overlane-hosting`, `vercel`, `netlify`, `fly`, `aws`, `container` | yes |  | The provider |
| `--set` | string (repeatable) | no |  | A setting for the kind; repeat for more |
| `--credential-env` | string | no |  | Read the provider token from this environment variable |
| `--stdin` | boolean | no |  | Read the provider token from standard input |
| `--dry-run` | boolean | no |  | Print the requests and file changes this command would make, then stop. Needs no credentials. |

## Examples

```sh
overlane deploy target add site --kind workers --set scriptName=site --set accountId=abc123 --credential-env CF_API_TOKEN
overlane deploy target add web --kind netlify --set siteId=my-site --stdin --dry-run
overlane deploy target add shop --kind container --set app=shop --set image=registry.fly.io/shop --set channel.production=stable --set database=postgres --set migrationCommand='npm run migrate' --credential-env FLY_API_TOKEN
overlane deploy target add app --kind overlane-hosting
```

## Behavior

- Effect: `write` (changes local or hosted state).
- Needs credentials: yes. Uses the network: yes.
- Supports `--dry-run`: yes. Accepts `--force`: no.
- Machine-readable description: `overlane schema deploy target add`.

## Result

With `--json` (the default when stdout is not a terminal) the command prints this JSON Schema's shape on stdout.

```json
{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "tenantId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
          "description": "tenant identifier"
        },
        "target": {
          "type": "object",
          "properties": {
            "schemaVersion": {
              "type": "string",
              "const": "1"
            },
            "tenantId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "tenant identifier"
            },
            "projectId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "project identifier"
            },
            "targetId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "name": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,40}$"
            },
            "config": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "workers"
                    },
                    "scriptName": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    },
                    "accountId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    }
                  },
                  "required": [
                    "kind",
                    "scriptName",
                    "accountId"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "vercel"
                    },
                    "projectRef": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    },
                    "teamId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    }
                  },
                  "required": [
                    "kind",
                    "projectRef"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "netlify"
                    },
                    "siteId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    }
                  },
                  "required": [
                    "kind",
                    "siteId"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "fly"
                    },
                    "app": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    },
                    "machineId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    }
                  },
                  "required": [
                    "kind",
                    "app"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "overlane-hosting"
                    },
                    "scriptName": {
                      "type": "string",
                      "pattern": "^olh-[0-9a-f]{16}$"
                    }
                  },
                  "required": [
                    "kind",
                    "scriptName"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "aws"
                    },
                    "region": {
                      "type": "string",
                      "pattern": "^[a-z]{2}(?:-[a-z]+)+-[0-9]$"
                    },
                    "functionName": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    }
                  },
                  "required": [
                    "kind",
                    "region",
                    "functionName"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "container"
                    },
                    "app": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    },
                    "machineId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                    },
                    "image": {
                      "type": "string",
                      "pattern": "^[a-z0-9][a-z0-9._\\-/:]{0,254}$"
                    },
                    "channels": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9-]{0,40}$"
                      },
                      "additionalProperties": {
                        "type": "string",
                        "pattern": "^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$"
                      }
                    },
                    "port": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 65535
                    },
                    "database": {
                      "type": "object",
                      "properties": {
                        "engine": {
                          "type": "string",
                          "const": "postgres"
                        },
                        "version": {
                          "type": "string",
                          "pattern": "^[0-9]{1,2}$"
                        },
                        "migrations": {
                          "type": "object",
                          "properties": {
                            "command": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 500
                            },
                            "path": {
                              "type": "string",
                              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$"
                            }
                          },
                          "required": [
                            "command"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "engine"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "kind",
                    "app",
                    "image",
                    "channels"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "vaultRef": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ]
            },
            "createdAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            }
          },
          "required": [
            "schemaVersion",
            "tenantId",
            "projectId",
            "targetId",
            "name",
            "config",
            "vaultRef",
            "createdAt"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "tenantId",
        "target"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "dryRun": {
          "type": "boolean",
          "const": true
        },
        "service": {
          "type": "string"
        },
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "body": {},
              "note": {
                "type": "string"
              }
            },
            "required": [
              "method",
              "path"
            ],
            "additionalProperties": false
          }
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "writes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "action": {
                "type": "string",
                "enum": [
                  "write",
                  "append",
                  "delete"
                ]
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "path",
              "action",
              "description"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "dryRun",
        "requests",
        "commands",
        "writes",
        "notes"
      ],
      "additionalProperties": false
    }
  ]
}
```

See [exit codes](/cli/#exit-codes) for the status the process returns.

Source: https://docs.overlane.app/cli/deploy-target-add/index.mdx
