Skip to content

GitHub Actions

  1. Create a deploy token in the dashboard with the account or organization selected that owns the app.

  2. Store it in the repository (or organization) as the secret VIBE_TOKEN:

    Terminal window
    gh secret set VIBE_TOKEN
  3. Add .github/workflows/deploy.yml:

    name: Deploy
    on:
    push:
    branches: [main]
    concurrency: deploy
    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - id: vibe
    uses: vibe-deploy/deploy-action@v1
    with:
    token: ${{ secrets.VIBE_TOKEN }}
    - run: echo "Live at ${{ steps.vibe.outputs.url }}"

The action installs the vibe CLI and runs vibe deploy exactly as you would. A failed deploy fails the job and adds vibe status to the log. The deploy history shows these deploys as coming from github-actions, with the commit.

Input Default
token required the deploy token
path . folder to deploy, for monorepos
name from vibe.json app name
env KEY=VALUE lines, set before the deploy

Output: url, the app’s address.

  • Commit vibe.json, so CI deploys to the same app name you use locally.
  • A token of a different account gets 403 belongs to another user: the token’s account or organization must own the app.
  • concurrency: deploy stops two pushes from deploying at the same time.

The action’s repository is private for now, so it works only in repositories of the vibe-deploy organization. Anywhere else, run the CLI directly:

- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm install -g https://dashboard.tja.nrw/vibedeploy-cli.tgz
- run: vibe deploy
env:
VIBE_TOKEN: ${{ secrets.VIBE_TOKEN }}