---
name: deploy
description: "Build and push to remote deployment targets"
version: "0.1.0"
entry: ./adapter.ts
npm_deps:
  required: []
  optional: []
fields: []
health_check: null
keywords:
  - service
  - deploy
  - build
  - fly
  - vercel
---

Build at a git ref and push to remote deployment targets. Supports mock, fly,
vercel, docker-push, and rsync providers (only mock is fully implemented).

## Operations

| Operation | Access | Description |
|-----------|--------|-------------|
| `push` | write | Build and deploy |
| `status` | read | Get deployment status |
| `list` | read | List all deployments |
| `teardown` | write | Remove a deployment |
| `logs` | read | Fetch remote logs |

## Configuration

```yaml
connectors:
  - id: deploy
    adapter: deploy
    access: read-write
    options:
      provider: mock
      repo_root: /workspace/app   # optional — see below
```

### Options

| Option | Default | Description |
|--------|---------|-------------|
| `provider` | `mock` | Deployment provider: `mock`, `fly`, `vercel`, `docker-push`, `rsync`. Only `mock` is fully implemented. |
| `repo_root` | `process.cwd()` | Directory used as the `cwd` for the `git rev-parse --show-toplevel` probe in `connect()`, and as the worktree dir for deployments. |

Any other string option is kept as a per-deployment default and merged into
`target_overrides` on `push`.

`repo_root` exists because the git probe previously inherited the process
working directory implicitly — wherever `skaile serve` happened to be started,
possibly inside a network mount, silently became git's search root. The default
is unchanged; it is now stated rather than inherited. Point it at the checkout
you actually deploy from, and keep it off the workspace mount: the probe is
bounded by a 15 s timeout, so a `repo_root` on a wedged mount costs a
`repoRoot: null` handle rather than a hung session.
