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.
Go to app.woven.dev/github
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?