Observability

Get started with silent schema observability

Woven gives your team visibility into every schema and model change — without interrupting developers. Once installed, it quietly watches your application repositories, logs schema changes, and posts updates to your Slack channel.

Follow these 3 steps to get started:


1️⃣ Install the GitHub App

Install the Woven GitHub App on the organization or repositories you want to monitor.

  • Select the repos you want Woven to observe

  • Once installed, Woven will automatically scan for migration, model, and schema sources

You’ll see an initial configuration pull request created by Woven.


2️⃣ Review and Merge the Configuration PR

Woven automatically creates a PR with two configuration files:

🧩 opendapi.config.yaml

Defines what projects and integrations to include in observability.

  • Woven auto-detects your schema source integrations in the repositories and configures them. Supported integrations include Activerecord, Prisma, Protobuf, SqlAlchemy, Alembic, and Liquibase. Some integrations like SqlAlchemy may expect your application runtime to be setup to extract schema

  • By default, Woven includes all projects in your repositories. You can include/exclude specfic projects or specific models.

Here is an example.

# opendapi.config.yaml

schema: https://opendapi.org/spec/0-0-3/opendapi.config.json

organization:
  name: Woven
  email_domain: woven.dev

repository:
  urn: woven.hood-ski-shop
  mainline_branch: main

dapis:
  runtimes:
    DEFAULT:
      integrations:
        - type: activerecord
          projects:
            # Automatically include all rails applications with schema.rb files
            include_all: true
            include_projects:
              - prefix:ecommerce-rails
              - exclude:regex:^admin-rails$
            artifact_path: db/structure.sql
            dialect: mysql
    
        - type: prisma
          projects:
            # Automatically include all schema.prisma files
            include_all: true
            artifact_path: prisma/schema.prisma

🗂️ .github/workflows/opendapi_ci.yaml

Creates GitHub Actions workflow to extract schemas from the application code. Only metadata is sent to Woven's servers.

  • Runs on GitHub actions in your GitHub account.

  • You can modify this file as needed to update runners, etc.

# .github/workflows/opendapi_ci.yml
name: metadata-extraction/woven-ai
on:
  # Invoke for every Pull Request and push to main branch
  pull_request:
    branches:
      - 'main'

  push:
    branches:
      - 'main'

env:
  GITHUB_BRANCH: ${{ github.event.pull_request.head.ref || github.ref }}
  PYPI_INDEX_URL: ${{ vars.OPENDAPI_PINNED_VERSION && 'https://test.pypi.org/simple/' || 'https://pypi.org/simple/' }}
  OPENDAPI_VERSION: ${{ vars.OPENDAPI_PINNED_VERSION || 'opendapi' }}
  WOVEN_INTEGRATION_MODE: ${{ vars.WOVEN_INTEGRATION_MODE || 'active' }}
  WOVEN_CONFIGURATION: ${{ vars.WOVEN_CONFIGURATION }}

jobs:
  run:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
      with:
        # Fetch all branches and history to help create a suggestion PR
        fetch-depth: 0
        # Checkout the working branch for PRs instead of merge branch
        ref: ${{ env.GITHUB_BRANCH }}

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.10'

    - name: OpenDAPI CI
      shell: bash
      run: |
        pip install --index-url ${{ env.PYPI_INDEX_URL }}                   \
                    --extra-index-url https://pypi.org/simple               \
                    ${{ env.OPENDAPI_VERSION }}
        opendapi github github run

      env:
        DAPI_SERVER_HOST: '${{ vars.DAPI_SERVER_HOST }}'
        MAINLINE_BRANCH_NAME: "main"
        # Store credentials in Github as a secret
        DAPI_SERVER_API_KEY: ${{ secrets.DAPI_SERVER_API_KEY }}
        # Configure when DAPIs should be registered.
        # PRs do not register but only validate and provide suggestions
        REGISTER_ON_MERGE_TO_MAINLINE: True
        # Other github environment variables needed for opendapi
        GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }}

After review, merge the PR — this activates silent observability for the selected projects.

➡️ Check out GitHub installation page for details and advanced configuration.


3️⃣ Install the Slack App

Next, connect Slack to receive schema alerts.

  • Visit app.woven.dev/slack and authorize your workspace

  • Choose a channel (e.g., #data-observability)

  • You’ll start receiving automatic summaries whenever schema or model changes are detected


That’s it

No code changes. No manual tagging.

From here on, every schema or model change will be tracked quietly — and surfaced in Slack for awareness.


Next Steps

Last updated

Was this helpful?