GitHub
The Woven GitHub App is what enables silent observability — it watches your repositories for schema and model changes without interrupting developers.
Once installed, it automatically detects migrations, dbt models, and schema files, and sends non-intrusive alerts to Slack whenever changes are merged.
To accomplish this, Woven needs to be integrated in all the GitHub repo(s) where data schemas (e.g. ORMs, Proto/Avro, dbt, etc.) are defined.
How to Install
Go to app.woven.dev/github to initiate the installation. You will be asked to login to Woven.
Choose "All repositories", or just the ones where data schemas are defined.
Complete installation or send to admin for approval.
What to Expect
After installation:
Woven will set a few Actions Variables and Secret for your CI to communicate to Woven's servers.
You’ll see an auto-generated configuration PR with detected projects and dialects
Once merged, Woven silently tracks schema evolution in every pull request
You’ll start receiving digest notifications in Slack (after Slack setup)
If your project uses nonstandard frameworks (like SQLAlchemy), you may need to setup your application runtime to extract schemas. Reach out to us for help.
What's in the configuration PR?
The PR has 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.
Last updated
Was this helpful?