A Declarative Automation Bundle (DAB) template + coding-assistant plugin for production-ready multi-agent LangGraph projects on Databricks. Scaffolds the production envelope — per-agent Databricks Apps, shared components (Vector Search, Lakebase, UC functions), dev/staging/prod targets, Unity Catalog conventions, CI/CD wiring for four platforms — and adds production patterns (evaluation gates, governance posture, monitoring, feedback loops) as the project matures.
agentops-stacks generates the production envelope for a multi-agent LangGraph project on Databricks. The scaffold includes:
- Three-environment Declarative Automation Bundle (dev / staging / prod) with
directdeployment engine - Per-agent LangGraph graph served as a Databricks App via MLflow AgentServer — one App resource per agent
- Shared components scaffolded on demand: Vector Search (RAG retrieval), Lakebase (Postgres conversation memory), UC function tools
- One Unity Catalog catalog per environment, plus schemas, volumes, and per-agent MLflow experiments
- CI/CD wiring for one of four platforms — GitHub Actions, GitHub Actions for GHES, GitLab, or Azure DevOps — with PR validation, staging deploy on merge to
main, and prod deploy onv*tag - Cloud auth (Azure service principal; AWS and GCP tokens) wired into the CI/CD workflows
- Per-agent evaluation harness:
eval/gates.yml,eval/create_dataset.py,eval/evaluate_agent.py AGENTS.mdwith conventions for coding assistantsdocs/setup.mdcovering UC catalogs, CLI profiles, and CI/CD credentials
Agent code lives under src/agents/<name>/. Shared components live under src/components/. New DAB resources go in resources/. Familiarity with Declarative Automation Bundles and CI/CD pipelines is assumed.
- Databricks CLI — recent enough to support the direct deployment engine (any release from the past 6 months is safe)
- uv package manager
- Node.js >=20.19 — for the chat UI frontend bundled with each agent App
- A Databricks workspace with Unity Catalog enabled (one catalog per environment — see
docs/setup.mdin the rendered project) - ai-dev-kit plugin — required for the post-scaffold workflow (eval gates, monitoring, governance). Install before the plugin's post-scaffold skills land
There's one engine — databricks bundle init — and two ways to drive it.
Works anywhere databricks runs — local terminal, CI, or Genie Code.
databricks bundle init https://github.com/databricks-solutions/agentops-stacksThe CLI prompts for all inputs interactively. For non-interactive runs, supply the values via --config-file <path>:
cat > inputs.json <<'EOF'
{
"input_project_name": "my_agentops_project",
"input_initial_agent_name": "default",
"input_cloud": "aws",
"input_cicd_platform": "github_actions",
"input_use_vector_search": "no",
"input_use_lakebase": "no",
"input_use_uc_functions": "no",
"input_eval_dataset_source": "synthetic"
}
EOF
databricks bundle init https://github.com/databricks-solutions/agentops-stacks --config-file inputs.jsonSee databricks_template_schema.json for the full set of inputs and their allowed values (cloud, CI/CD platform, Vector Search, Lakebase memory type, UC functions, eval dataset source).
The agentops-stacks plugin is a conversational UX layer over bundle init. It collects inputs through the assistant, writes the config file, runs the CLI, and surfaces the result. Use it when you want a guided scaffold and follow-up help from the assistant.
See plugin/README.md for install and usage. Two install flavors:
- Genie Code install — open
plugin/skills/install_genie_code_skills.pyas a notebook in your workspace and run all cells. The skill is then available in Genie Code. - Local install — clone this repo, run
./plugin/skills/install_skills.shfrom your project root. The skill is then available in Claude Code or Cursor.
Once installed, the plugin is invoked by your coding assistant. There's nothing to call directly — describe what you want and the assistant runs the skill.
-
Open your coding assistant in the target directory:
- Genie Code — pre-create the destination via the workspace UI (Workspace → Add → Git folder for a repo-backed project, or just create an empty folder under
/Workspace/Users/<you>/), then open Genie Code from inside that directory. - Claude Code / Cursor — open the assistant in the directory where you want the scaffold to land.
- Genie Code — pre-create the destination via the workspace UI (Workspace → Add → Git folder for a repo-backed project, or just create an empty folder under
-
Ask the assistant to scaffold a project. Either:
- Type
/init-agentops-stacks(Claude Code / Cursor only), or - Say "scaffold a new agentops-stacks project" — the assistant matches the skill's description and starts the flow.
- Type
-
Answer the prompts. The skill collects inputs in five phases: infrastructure (project name, agent name, cloud, CI/CD platform, destination), data sources (Vector Search, Lakebase memory), tools (local Python tools, UC functions), evaluation (dataset source), then confirms and runs the scaffold. Defaults are sensible — confirm or adjust.
-
Follow the next-steps message. The CLI prints the post-scaffold sequence —
uv sync, fill indatabricks.ymlworkspace hosts, validate, deploy. The assistant relays it unchanged.
cd <project_name>/src/agents/<agent_name>
uv sync # generates uv.lock — commit it
cp .env.example .env # configure Databricks auth
uv run python app/start_server.py # run the agent locally
uv run agent-evaluate # run the evaluation harness
databricks bundle deploy -t dev # deploy to DatabricksSet workspace hosts and Unity Catalog grants per docs/setup.md in the rendered project before deploying to staging or prod.
Once the first scaffold is in place, use the /add-agent command (or say "add a new agent") to wire a second agent into the same bundle:
# In your coding assistant:
/add-agent
# or: "add a support agent to this project"If the bundle was scaffolded inside a Databricks Git folder in the workspace (the recommended path for Genie Code users), the workspace UI also surfaces a Deployments panel on the bundle that lets you pick a target and deploy with one click — no terminal required. This matches the layout produced by the workspace UI's native "Create → Bundle" flow.
The scaffold generates the envelope. The AgentOps Lifecycle skill guides the project through the complete Single-Account Single-Agent lifecycle — from first data ingestion to production monitoring — across three phases and 10 steps:
| Phase | Steps | What happens |
|---|---|---|
| Dev | 1–5 | Data prep + Vector Search indexing, agent implementation with MLflow tracing, offline eval gate, SME calibration |
| Staging | 6–7 | CI gate (unit tests + bundle validate + eval gate on PR), staging deploy + integration tests |
| Production | 8–10 | CD deploy, batch inferencing baseline, real-time monitoring + SME feedback loop |
MLflow is the operational spine at every level: experiment tracking in dev,
eval gate in CI, trace logging in prod, user feedback via mlflow.log_feedback().
The evaluation/gate.py pattern (generated by the scaffold) runs at three
points — locally in dev, in CI on every PR, and against production data before
users are admitted — so quality regressions are caught before they reach users.
Install the plugin, then ask your coding assistant to continue from where the scaffold left off:
# Install (Claude Code / Cursor)
./plugin/skills/install_skills.sh
# Then in the assistant:
/agentops-lifecycle
# or: "walk me through the agentops lifecycle"In Genie Code, run install_genie_code_skills.py as a notebook to install,
then say "walk me through the agentops lifecycle."
The skill provides step-by-step agent actions, copy-paste code examples grounded in the generated project files, validation criteria, and common issue resolutions for each of the 10 steps.
workflows/single-account-single-agent.json is a structured definition of the
10-step lifecycle with all actions, validations, escalation hints, and phase
metadata. It can be consumed programmatically by workflow engines (e.g.,
/innovate) or used as a reference when building custom automation on top of
the scaffold.
template/{{.input_root_dir}}/README.md.tmpl— what a rendered project looks liketemplate/{{.input_root_dir}}/AGENTS.md.tmpl— conventions and guidance for coding agentstemplate/{{.input_root_dir}}/docs/setup.md.tmpl— end-to-end configuration guide- Declarative Automation Bundles
- MLflow 3 + Unity Catalog