GitOps Seed¶
Self-hosting availability
Self-hosting is available on request. The source repository is not public. Contact hello@wanepia.com to get access.
Wanepia supports declarative configuration via YAML seed files. On startup, cmd/migrate applies any seed files it finds in the seeds/ directory — idempotently, so re-running is safe.
Use seeds to version-control your catalog structure alongside your application code.
Seed file format¶
# seeds/001_services.yaml
blueprints:
- slug: api
name: HTTP API
description: Public-facing REST services
fields:
- name: team
field_type: string
required: true
sort_order: 1
- name: repo_url
field_type: url
required: false
sort_order: 2
- name: on_call
field_type: string
required: false
sort_order: 3
- slug: database
name: Database
fields:
- name: engine
field_type: string
required: true
sort_order: 1
- name: version
field_type: string
required: false
sort_order: 2
entities:
- blueprint: api
slug: payments-api
name: Payments API
fields:
team: platform
repo_url: https://github.com/acme/payments
- blueprint: api
slug: auth-api
name: Auth API
fields:
team: identity
- blueprint: database
slug: postgres-primary
name: Postgres Primary
fields:
engine: postgresql
version: "16"
checks:
- entity: payments-api
type: http
url: https://api.acme.com/payments/health
interval_seconds: 30
expected_status: 200
body_contains: '"status":"ok"'
failure_threshold: 2
- entity: postgres-primary
type: tcp
host: db.internal
port: 5432
interval_seconds: 60
failure_threshold: 3
Applying seeds¶
Seeds are applied automatically when cmd/migrate runs:
Seeds are applied in alphabetical order. Name them with a numeric prefix to control order:
Idempotency¶
Seed application is idempotent: - Blueprints and entities are upserted by slug - Checks are matched by entity + type + target; existing checks are updated - No records are deleted — add a manual deletion step if you need to remove something
Example: monorepo integration¶
Keep your seed files alongside each service:
services/
payments-api/
catalog.yaml # defines the entity and its checks
auth-api/
catalog.yaml
infra/
databases/
catalog.yaml
A CI step merges and applies them:
# .github/workflows/catalog-sync.yml
- name: Apply catalog seeds
run: |
cat services/*/catalog.yaml infra/**/catalog.yaml > seeds/generated.yaml
docker compose run --rm migrate