GibilGibil

.gibil.yml Reference

Complete reference for the .gibil.yml configuration file

Full example

name: my-app
image: node:20
server_type: cpx21
location: ash

services:
  - name: db
    image: postgres:16
    port: 5432
    env:
      POSTGRES_PASSWORD: devpass
      POSTGRES_DB: myapp
  - name: cache
    image: redis:7
    port: 6379

tasks:
  - name: install
    command: pnpm install --frozen-lockfile
  - name: check
    command: pnpm check
  - name: build
    command: pnpm build
  - name: test
    command: pnpm test

env:
  DATABASE_URL: postgres://postgres:devpass@localhost:5432/myapp
  REDIS_URL: redis://localhost:6379
  NODE_ENV: development

Fields

name

Project name. Optional, used for labeling.

image

Runtime to install on the VM. Gibil installs the specified runtime and its package manager.

ValueInstalls
node:20Node.js 20 + pnpm
node:22Node.js 22 + pnpm
python:3.12Python 3.12 + pip
go:1.22Go 1.22

server_type

Hetzner VM size. Default: cpx11.

TypevCPURAMCost/hr
cpx1124 GB~€0.011
cpx2148 GB~€0.019
cpx31416 GB~€0.036

location

Hetzner datacenter. Default: fsn1.

CodeCity
fsn1Falkenstein, Germany
nbg1Nuremberg, Germany
hel1Helsinki, Finland
ashAshburn, Virginia

services

Docker containers to start before tasks. Docker is automatically installed when services are defined.

services:
  - name: db
    image: postgres:16
    port: 5432
    env:
      POSTGRES_PASSWORD: devpass

Each service has:

  • name — identifier for the service
  • image — Docker image to run
  • port — port to expose
  • env — environment variables passed to the container

tasks

Commands to run in order after the repo is cloned. If one fails, the rest still run.

tasks:
  - name: install
    command: pnpm install
  - name: test
    command: pnpm test

env

Environment variables set on the VM (persisted in /root/.bashrc).

env:
  DATABASE_URL: postgres://localhost/myapp
  NODE_ENV: development

Discovery order

Gibil looks for the config file in this order:

  1. --config ./path/to/config.yml — explicit CLI flag
  2. --repo URL — fetched from the repo's GitHub raw URL
  3. Current working directory — .gibil.yml in $PWD

On this page