dbos-inc/dbos-demo-apps/deploy
Claude Code and agent skill by dbos-inc/dbos-demo-apps
- community
Checking that the SKILL.md file is still in the repository.
Deploy agent to Databricks Apps using DAB (Databricks Asset Bundles). Use when: (1) User says 'deploy', 'push to databricks', or 'bundle deploy', (2) 'App already exists' error occurs, (3) Need to bind/unbind existing apps, (4) Debugging deployed apps, (5) Querying deployed app endpoints.
Install
npx vskill@latest install dbos-inc/dbos-demo-apps/deploySKILL.md
Deploy to Databricks Apps
App Naming Convention
Unless the user specifies a different name, apps should use the prefix agent-*:
agent-data-analystagent-customer-supportagent-code-helper
Update the app name in databricks.yml:
Deploy Commands
IMPORTANT: Always run BOTH commands to deploy and start your app:
Note:bundle deployonly uploads files and configures resources.bundle runis required to actually start/restart the app with the new code. If you only rundeploy, the app will continue running old code!
The resource key agent_openai_agents_sdk matches the app name in databricks.yml under resources.apps.
Handling "App Already Exists" Error
If databricks bundle deploy fails with:
Ask the user: "Would you like to bind the existing app to this bundle, or delete it and create a new one?"
Option 1: Bind Existing App (Recommended)
Step 1: Get the existing app's full configuration:
Step 2: Update databricks.yml to match the existing app's configuration exactly:
Why this matters: Existing apps may have server-side configuration (likebudget_policy_id) that isn't in your bundle. If these don't match, Terraform will fail with "Provider produced inconsistent result after apply". Always sync the app's current config todatabricks.ymlbefore binding.
Step 3: If deploying to a mode: production target, set workspace.root_path:
Why this matters: Production mode requires an explicit root path to ensure only one copy of the bundle is deployed. Without this, the deploy will fail with a recommendation to setworkspace.root_path.
Step 4: Check if already bound, then bind if needed:
Note: If bind fails with "Resource already managed by Terraform", the app is already bound to this bundle. Skip to Step 5 and deploy directly.
Step 5: Deploy:
Option 2: Delete and Recreate
Warning: This permanently deletes the app's URL, OAuth credentials, and service principal.
Unbinding an App
To remove the link between bundle and deployed app:
Use when:
- Switching to a different app
- Letting bundle create a new app
- Switching between deployed instances
Note: Unbinding doesn't delete the deployed app.
Query Deployed App
IMPORTANT: Databricks Apps are only queryable via OAuth token. You cannot use a Personal Access Token (PAT) to query your agent. Attempting to use a PAT will result in a 302 redirect error.
Get OAuth token:
Send request:
If using memory - include user_id to scope memories per user:
On-Behalf-Of (OBO) User Authentication
To authenticate as the requesting user instead of the app service principal:
This is useful when you want the agent to access resources with the user's permissions rather than the app's service principal permissions.
See: OBO authentication documentation
Debug Deployed Apps
Important Notes
- App naming convention: App names must be prefixed with
agent-(e.g.,agent-my-assistant,agent-data-analyst) - Name is immutable: Changing the
namefield indatabricks.ymlforces app replacement (destroy + create) - Remote Terraform state: Databricks stores state remotely; same app detected across directories
- Review the plan: Look for
# forces replacementin Terraform output before confirming
FAQ
Q: I see a 200 OK in the logs, but get an error in the actual stream. What's going on?
This is expected behavior. The initial 200 OK confirms stream setup was successful. Errors that occur during streaming don't affect the initial HTTP status code. Check the stream content for the actual error message.
Q: When querying my agent, I get a 302 redirect error. What's wrong?
You're likely using a Personal Access Token (PAT). Databricks Apps only support OAuth tokens. Generate one with:
Q: How do I add dependencies to my agent?
Use uv add:
Troubleshooting
| Issue | Solution | |
|---|---|---|
| Validation errors | Run databricks bundle validate to see detailed errors before deploying | |
| Permission errors at runtime | Grant resources in databricks.yml (see add-tools skill) | |
| Lakebase access errors | See lakebase-setup skill for permissions (if using memory) | |
| App not starting | Check databricks apps logs <app-name> | |
| Auth token expired | Run databricks auth token again | |
| 302 redirect error | Use OAuth token, not PAT | |
| "Provider produced inconsistent result" | Sync app config to databricks.yml | |
| "should set workspace.root_path" | Add root_path to production target | |
| App running old code after deploy | Run databricks bundle run agent_openai_agents_sdk after deploy | |
| Env var is None in deployed app | Check valueFrom in app.yaml matches resource name in databricks.yml |
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpython/databricks-openai-agent/.claude/skills/deploy/SKILL.md
Popularity
- Repository stars
- 100
- Repository forks
- 39
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dbos-inc/dbos-demo-apps/deploy)