Skip to content

gblock-arango/arango-workflow-app

Repository files navigation

arango-workflow-app

Credit: Arthur Keen - this dashboard UI is based on Arthur's onto-extractor repo. I added components for workflows associated with event recognition and GraphML (graphlet detetection and visualization), Genie Chat integration, querying Unity Catalog metadata and enriching it with graph semantics, and a framework for deploying on Databricks with the gateway and other apps.

Unified Databricks App: FastAPI BFF + static Next.js. Genie chat is proxied to arango-mcp-app; Arango data via arango-gateway-app only.

Deploy (primary path)

Config: app.yaml — env vars, UC table names, peer app resources. Not .env (.env is gitignored and only for optional local overrides).

Order: gateway → mcp-arango-agent → this app.

# 1. Edit app.yaml (DATABRICKS_SQL_WAREHOUSE_ID, registry tables; keep OPENAI_API_KEY value empty in git)
# 2. export OPENAI_API_KEY=...  (or put in .env) before ./deploy_app.sh — injected at deploy only

../arango-gateway-app/deploy_app.sh
../arango-mcp-app/deploy_app.sh
./deploy_app.sh
./scripts/read_uc_peer_registry.sh

deploy_app.sh will:

  • Declare Model Serving resources in app.yaml (autograph-llm-serving, autograph-embedding-serving with CAN_QUERY) and run scripts/grant_autograph_serving_permissions.py as a fallback ACL repair
  • Read warehouse id and UC table names from app.yaml (shell env still overrides)
  • Inject OPENAI_API_KEY (and optional ANTHROPIC_API_KEY, OPENAI_BASE_URL) from env/.env into app.yaml for sync only, then restore the empty value locally
  • Build the Next.js static export (src/frontend/out)
  • databricks sync + apps deploy
  • Grant UC SELECT to the app service principal
  • Publish this app’s URL to ARANGO_WORKFLOW_REGISTRY_TABLE

Runtime: scripts/start-databricks-app.sh — single uvicorn process serves API + static UI (no separate frontend process in Databricks).

Makefile

Not required for deployment. Optional helpers:

Target Purpose
make build-static Same frontend build as deploy_app.sh
make test Unit tests
make lint ruff / mypy

There is no make dev, make infra, or make backend — local two-process dev was removed in favor of Databricks-only delivery.

Layout

arango-workflow-app/
  app.yaml              # Databricks Apps config (source of truth)
  deploy_app.sh         # sync + deploy + UC grants (reads app.yaml)
  scripts/start-databricks-app.sh
  src/app/              # FastAPI
  src/frontend/         # Next.js → static export at deploy time
  tests/

Routes (deployed)

Path Description
/, /dashboard, … OntoExtract UI (static export)
/api/v1/* OntoExtract REST API
/api/workflow/* BFF: gateway embed, Genie → mcp-app, /ontoextract/v1 peer API

Related repos

Considerations

Consider implementing the Open Source Unity Catalog library https://github.com/unitycatalog/unitycatalog

About

Databricks App: a custom Databricks Dashboard component that supports Workflows (Ontology Extraction, GraphML, Event Recognition), Graph Visualization, and Arango+Genie Chat.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors