Documentation

Using SENDR. with your providers

SENDR. turns a Git push into a deployed build on any traditional host. This guide walks through connecting a repo, configuring environments, wiring up each provider, and shipping your first deploy.

Connect a repository

From a project, open Connect Repository. SENDR. reads repositories from the GitHub or GitLab account you signed in with — no manual owner/repo typing. On connect, SENDR. automatically creates an environment for the repo's default branch and a starter target, so push-to-deploy works immediately.

What gets created automatically:

  • An environment tracking the default branch.
  • A target using the repo name (adapter: ssh, status: provisioning).
  • A webhook secret you paste into your git host.

Environments & branches

An environment maps a git branch to a deploy target. When a push lands on a branch with auto-deploy enabled, SENDR. enqueues a deployment to that environment's target. Edit the environment to track a different branch, or toggle auto-deploy off for branches you only want to build manually.

Provider setup

Each connected repo shows a webhook URL + secret. Register them in your git host so pushes reach SENDR.

GitHub

  1. Go to your project → Connect Repository and pick GitHub.
  2. Choose the repo (owner/name). SENDR lists repos from your connected GitHub account.
  3. SENDR auto-creates an environment tracking the repo's default branch, plus a target.
  4. Copy the generated webhook URL and the secret.
  5. In GitHub: repo → Settings → Webhooks → Add webhook. Paste the URL, choose `application/json`, and send “Pushes”.

GitLab

  1. Connect Repository → pick GitLab and choose the project.
  2. SENDR creates the environment + target for the default branch.
  3. Copy the webhook URL + secret.
  4. In GitLab: project → Settings → Webhooks. Paste the URL, set the secret token, and enable “Push events”.

Target adapters

A target is where files actually land. Pick the adapter that matches your host:

shared_hosting / cPanel

Free/paid cPanel hosts (e.g. InfinityFree, Namecheap, Hostinger).

Host
ftpupload.net (InfinityFree). Do NOT use the site IP.
Port
21 (plain FTP over explicit TLS).
Path
/htdocs (or the host's docroot).

Username + password only. No SSH key needed.

sftp

Any host with SFTP access (VMs, AlwaysData, Railway services).

Host
The server's public IP or hostname.
Port
22.
Path
An absolute deploy path, e.g. /var/www/html.

SSH key or password.

ftp

Hosts that only expose plain FTP (no SFTP).

Host
The FTP host.
Port
21.
Path
Docroot, e.g. /htdocs.

Username + password.

ssh

Full VPS/bare-metal with shell access.

Host
Server IP.
Port
22.
Path
Docroot, e.g. /var/www/html.

Runs pre/post-deploy hooks and symlink swaps.

docker

Container workloads.

Host
Docker host (tcp://host:2375 or a socket).
Port
2375 (or leave default).
Path
Container mount path.

Container name required.

InfinityFree tip: use the FTP host ftpupload.net on port 21 (not the site IP, where port 21 is refused), adapter shared_hosting, docroot /htdocs.

Trigger a deploy

Push a commit to a tracked branch — that's it. SENDR. receives the webhook, builds the artifact, uploads it to the target, and atomically swaps the release. You can also deploy manually from a project's Deployments tab. Watch live logs in the dashboard.

Rollbacks

Each release is kept warm (retention is configurable per project). Roll back from the Deployments tab to instantly point the live directory at the previous release — no rebuild, no downtime.

CLI

The SENDR CLI (@sendr-dev/cli) lets you trigger deploys, check status, and stream logs straight from your terminal or CI — no dashboard required. Install it with your package manager:

install
# install globally
npm install -g @sendr-dev/cli

# or run without installing
npx @sendr-dev/cli login

Commands

After sendr login opens your browser to authenticate, run sendr init to link the CLI to a project. From there you can drive deployments:

commands
sendr login            # sign in via your browser
sendr init             # link the CLI to a project
sendr deploy           # deploy the current git HEAD
sendr deploy --wait    # deploy and block until it finishes
sendr status           # list recent deployments
sendr logs --follow    # stream live deploy logs
sendr whoami           # show the signed-in account
sendr logout           # remove the stored token

deploy

Triggers a deployment. Defaults to the current git HEAD; pass --commit, --target or --environment to override. Add --wait to block until the deploy finishes.

status

Lists recent deployments ( --limit) or shows a single deployment with --deployment <id>.

logs

Fetches deployment logs. Add --follow to tail new lines live (like tail -f).

auth

Manage sessions: sendr login, sendr logout and sendr whoami.

Use --token <token> with login or init for non-interactive CI environments.

Security

Target credentials and environment variables are encrypted with AES-256-GCM before they touch the database — only the worker decrypts them at deploy time. Webhook deliveries are verified against the per-repo secret. Each delivery is recorded once (idempotent) so retries never double-deploy.