Databricks presets
Choose one of these two Databricks App bundles to configure a Python node's model provider. Both use the shared worker_entrypoint.py pattern: an outbound graph worker plus an App status page on DATABRICKS_APP_PORT. The model route is the main difference.
Files
examples/databricks/presets/README.mdexamples/databricks/presets/databricks-model-serving.ymlexamples/databricks/presets/openrouter.yml
README
Choose one of these two Databricks App bundles to configure a Python node's model provider. Both use the shared worker_entrypoint.py pattern: an outbound graph worker plus an App status page on DATABRICKS_APP_PORT. The model route is the main difference.
| Preset | File | Model route |
|---|---|---|
| Databricks Model Serving | databricks-model-serving.yml | ATFGRAPH_MODEL_URL=https://<workspace-host>/serving-endpoints, ATFGRAPH_MODEL_NAME=<serving-endpoint> |
| OpenRouter | openrouter.yml | ATFGRAPH_MODEL_URL=https://openrouter.ai/api/v1, ATFGRAPH_MODEL_NAME=<vendor>/<model> |
Build the node bundle, copy the chosen preset to its databricks.yml, review its variables, then validate and deploy with an explicit Databricks profile.
scripts/product/build-databricks-bundle.sh --node-dir path/to/node --package my_node --module my_node.agent:app --label my-node
cp examples/databricks/presets/databricks-model-serving.yml target/dist/databricks/my-node/databricks.yml
.venv/bin/python scripts/product/check_databricks_bundle.py target/dist/databricks/my-node
cd target/dist/databricks/my-node
databricks bundle validate -t dev --profile <PROFILE> --var server_url=https://<graph-server> --var api_key_scope=atfgraph \
--var model_url=https://<workspace-host>/serving-endpoints --var model_name=databricks-claude-sonnet-4 --var model_key_scope=atfgraph
Variables shared by both presets
| Variable | Env it sets | Why |
|---|---|---|
server_url (no default) | ATFGRAPH_SERVER | the graph server the worker connects to, outbound HTTPS |
api_key_scope (no default), api_key_key | ATFGRAPH_API_KEY via value_from: api-key | the graph server API key, bound from a secret; never a literal |
worker_module, node_label | WORKER_MODULE, ATFGRAPH_NODE_LABEL | which module:agent to run and the label the status page waits for |
worker_capacity | ATFGRAPH_WORKER_CAPACITY | concurrent handler permits |
Databricks Apps supplies DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET and DATABRICKS_APP_PORT; leave these to the platform.
Port
The App routes inbound traffic to its assigned DATABRICKS_APP_PORT. The entrypoint uses that port for /health, reporting server reachability, registration and worker phase. Capability calls go through the graph server instead of this status listener.
Preset 1: Databricks Model Serving
Set the model base URL to the workspace's /serving-endpoints route, not the App URL. The SDK posts to its /chat/completions route using the selected serving endpoint as model. Choose an endpoint that supports the request format your node needs; the example names are configuration examples, not an availability guarantee.
This preset binds ATFGRAPH_MODEL_API_KEY from model_key_scope/model_key_key. Use a PAT or OAuth token whose principal has CAN_QUERY on the endpoint. This explicit secret-binding preset does not demonstrate automatic credential refresh.
Preset 2: OpenRouter
For OpenRouter, use https://openrouter.ai/api/v1 and <vendor>/<model> (preset default google/gemini-2.5-flash). Bind the API key from openrouter_key_scope/openrouter_key_key. Allow outbound access to the provider in the workspace egress policy. The SDK adds attribution headers when it recognizes the OpenRouter host.
Local dry run
Before deploying, test the node locally with the same ATFGRAPH_MODEL_* settings and a local graph server. Start python -m atfgraph.worker --module <module:agent>. The package's agentnode.yaml declares corresponding values for installed-node use. Local success does not verify App networking or permissions.
Differences from the original presets, and gaps
- These bundles use SDK model configuration instead of the older litellm variables.
ATFGRAPH_MODEL_PROVIDER=anthropicselects the Messages provider when appropriate. - These particular presets bind graph and model credentials from secrets. They do not exercise every current SDK edge-auth or service-principal authentication option.
- Standard workers have no inbound agent endpoint, so the former node-level principal allowlist is absent. The App listener serves status only.
- These are bundle
databricks.ymlfiles with App resources, variables and secret bindings, rather than standaloneapp.yamlfiles. - Validation evidence is limited to offline bundle checks.
databricks bundle validate, deploy and run were not performed for these presets.