OpenMetadata
Column-level lineage, data catalog, glossary. Auto-ingests from Airbyte, dbt, and PostgreSQL to show how data flows end to end.
Tier
Cold. OpenMetadata is a three-container stack (server + Elasticsearch + ingestion) totalling ~6 GB of images and ~3 GB of RAM when running. Stakeholders rarely open it; engineers open it when they need to understand lineage. OrcheStack pulls its images during deploy so first Open from the dashboard is instant, then spins the stack up on demand and stops it when idle.
Role
OpenMetadata pulls metadata from every stage (Airbyte sources, PostgreSQL schemas, dbt models, Metabase dashboards) to produce column-level lineage graphs. It answers the question: "if I change this column, what breaks downstream?"
First start
Even with images pre-pulled, the first start of OpenMetadata takes 5–10 minutes on a typical laptop because:
- Elasticsearch boots and waits to report healthy (~60–90 s).
- The OpenMetadata server then runs schema migrations against its application DB on the shared
orchestack-postgres(~2–3 min on first install,~5 son warm starts). - The server starts and waits for ES to index its system catalogue.
- The
openmetadata-ingestionsidecar comes up last (it bundles OpenMetadata's own Airflow for metadata ingestion — distinct from the Apache Airflow service you configured for business DAGs).
While this is happening, the dashboard tile reports Starting. If it sits there beyond 30 minutes, check the audit log for session_autostart_failed events; the orchestrator caps OpenMetadata's start at 1800 s (30 min) before reporting failure.
Signing in
OpenMetadata has its own login screen at /signin. OrcheStack can't auto-sign-in to OpenMetadata in v0.1.x because OpenMetadata is served on a different origin from the OrcheStack dashboard — same-origin restrictions prevent us from writing its session token into your browser. We'll fix this in a later milestone (it requires running OpenMetadata behind a reverse-proxy that rewrites its SPA asset paths, and we've deferred that work to v0.2).
For now, OrcheStack gives you one-click access to the credentials from the dashboard:
- From the dashboard grid, open OpenMetadata's Details · pin · activity page (link at the bottom of the tile).
- In the Connection card on the right, click Reveal. Admin email and password appear with Copy buttons next to each.
- Copy the email → click Open → paste into OpenMetadata's email field. Repeat for password.
Only admins can reveal credentials (the orchestrator enforces this server-side). Every reveal is captured in the audit log.
Configuration
| .env key | What it controls |
|---|---|
OPENMETADATA_ADMIN_EMAIL | Email you sign in with at the OpenMetadata UI. |
OPENMETADATA_ADMIN_PASSWORD | Matching password. Captured by the wizard; revealable from the Connection card. |
OPENMETADATA_DB_USER / _PASSWORD | Credentials for OpenMetadata's own application database (openmetadata_db in the shared orchestack-postgres). OpenMetadata uses these to read/write its entity records, lineage, and glossary terms. Separate from your warehouse DB. |
OPENMETADATA_JWT_SECRET | 32+ characters. Signs the JWTs OpenMetadata issues to its React UI. Auto-generated by the wizard. |
OPENMETADATA_FERNET_KEY | Auto-generated. Encrypts secrets that OpenMetadata's bundled ingestion Airflow stores in its own metadata DB. Lose this key and your ingestion connection passwords become unrecoverable. |
All of these are editable later from Edit config on the OpenMetadata tile.
When to open it
Typical triggers: before a schema change (to check downstream impact), after a pipeline failure (to see which models are affected), during an audit (to document data provenance).
Troubleshooting
- "Pulling…" forever on the dashboard, then "Failed to start"
- Combined image size is ~6 GB. On residential broadband the default 60-minute pull cap can be exceeded. Check the audit log for
service_pull_failed; the underlying images can be pulled manually withdocker compose -f services/openmetadata.yml -p orchestack-service-openmetadata pullfrom the install directory (no orchestrator timeout that way). - Sign-in fails with "invalid credentials"
- OpenMetadata 1.6.x validates passwords against its own rules at first-start (min length, no common patterns). If your wizard password was rejected the bootstrap hook auto-generates a strong replacement and writes it to
OPENMETADATA_ADMIN_PASSWORDin.env. Use the Reveal flow above to read the actual current password. - Dashboard shows "Stopped" but the OpenMetadata UI still loads
- Polling lag — the orchestrator reconciles state every 30 s. The UI you're seeing is the running container; the dashboard will catch up on the next tick.