CtrlK
BlogDocsLog inGet started
Tessl Logo

deploy

Deploy TypeScript LangChain agent to Databricks. Use when: (1) User wants to deploy, (2) User says 'deploy', 'push to databricks', 'production', (3) After making changes that need deployment.

64

Quality

76%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./agent-langchain-ts/.claude/skills/deploy/SKILL.md
SKILL.md
Quality
Evals
Security

Deploy to Databricks

Quick Deploy

# Validate configuration
databricks bundle validate -t dev

# Deploy to dev environment
databricks bundle deploy -t dev

# Start the app
databricks bundle run agent_langchain_ts

Deployment Targets

Development (dev)

databricks bundle deploy -t dev

Characteristics:

  • Default target
  • User-scoped naming: db-agent-langchain-ts-<username>
  • Development mode permissions
  • Auto-created resources

Production (prod)

databricks bundle deploy -t prod

Characteristics:

  • Production mode
  • Stricter permissions
  • Fixed naming: db-agent-langchain-ts-prod
  • Requires explicit configuration

Step-by-Step Deployment

1. Prepare Code

Ensure code is committed and tested:

# Test locally first
npm run dev

# Run tests
npm test

# Verify build works
npm run build

2. Validate Bundle

databricks bundle validate -t dev

This checks:

  • databricks.yml syntax
  • app.yaml configuration
  • Resource references
  • Variable interpolation

3. Deploy Bundle

databricks bundle deploy -t dev

This will:

  • Create MLflow experiment if needed
  • Upload source code
  • Configure app environment
  • Grant resource permissions
  • Create app instance

4. Start App

databricks bundle run agent_langchain_ts

Or manually:

databricks apps start db-agent-langchain-ts-<username>

5. Verify Deployment

# Check app status
databricks apps get db-agent-langchain-ts-<username>

# View logs
databricks apps logs db-agent-langchain-ts-<username> --follow

# Test health endpoint
curl https://<workspace-host>/apps/db-agent-langchain-ts-<username>/health

Managing Existing Apps

Bind Existing App

If app already exists:

# Get app details
databricks apps get db-agent-langchain-ts-<username>

# Bind to bundle
databricks bundle deploy -t dev --force-bind

Delete and Recreate

# Delete existing app
databricks apps delete db-agent-langchain-ts-<username>

# Deploy fresh
databricks bundle deploy -t dev

Configuration Files

databricks.yml

Main bundle configuration:

bundle:
  name: agent-langchain-ts

variables:
  serving_endpoint_name:
    default: "databricks-claude-sonnet-4-5"

resources:
  experiments:
    agent_experiment:
      name: /Users/${workspace.current_user.userName}/agent-langchain-ts

  apps:
    agent_langchain_ts:
      name: db-agent-langchain-ts-${var.resource_name_suffix}
      source_code_path: ./
      resources:
        - name: serving-endpoint
          serving_endpoint:
            name: ${var.serving_endpoint_name}
            permission: CAN_QUERY

app.yaml

Runtime configuration:

command:
  - npm
  - start

env:
  - name: DATABRICKS_MODEL
    value: "databricks-claude-sonnet-4-5"
  - name: MLFLOW_TRACKING_URI
    value: "databricks"
  - name: MLFLOW_EXPERIMENT_ID
    value_from: "experiment"

resources:
  - name: serving-endpoint
    serving_endpoint:
      name: ${var.serving_endpoint_name}
      permission: CAN_QUERY

Viewing Deployed App

Get App URL

databricks apps get db-agent-langchain-ts-<username> --output json | jq -r .url

Access App

Navigate to:

https://<workspace-host>/apps/db-agent-langchain-ts-<username>

Test Deployed App

# Health check
curl https://<workspace-host>/apps/db-agent-langchain-ts-<username>/health

# Chat request
curl -X POST https://<workspace-host>/apps/db-agent-langchain-ts-<username>/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <databricks-token>" \
  -d '{
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

Monitoring

View Logs

# Follow logs in real-time
databricks apps logs db-agent-langchain-ts-<username> --follow

# Get last 100 lines
databricks apps logs db-agent-langchain-ts-<username> --tail 100

# Filter logs
databricks apps logs db-agent-langchain-ts-<username> | grep ERROR

View MLflow Traces

See MLflow Tracing Guide for viewing traces in your workspace.

App Metrics

# Get app details
databricks apps get db-agent-langchain-ts-<username> --output json

# Check app state
databricks apps get db-agent-langchain-ts-<username> --output json | jq -r .state

Updating Deployed App

Update Code

# Make changes to code
# Then redeploy
databricks bundle deploy -t dev

# Restart app
databricks apps restart db-agent-langchain-ts-<username>

Update Configuration

Edit app.yaml or databricks.yml, then:

databricks bundle deploy -t dev
databricks apps restart db-agent-langchain-ts-<username>

Adding Resources

Add Serving Endpoint Permission

Edit app.yaml:

resources:
  - name: serving-endpoint
    serving_endpoint:
      name: "your-endpoint-name"
      permission: CAN_QUERY

Then redeploy:

databricks bundle deploy -t dev

Add Unity Catalog Function

Edit databricks.yml:

resources:
  - name: uc-function
    function:
      name: "catalog.schema.function_name"
      permission: EXECUTE

Update app.yaml to pass function config:

env:
  - name: UC_FUNCTION_CATALOG
    value: "catalog"
  - name: UC_FUNCTION_SCHEMA
    value: "schema"
  - name: UC_FUNCTION_NAME
    value: "function_name"

Redeploy:

databricks bundle deploy -t dev

Troubleshooting

"App with same name already exists"

Either bind existing app:

databricks bundle deploy -t dev --force-bind

Or delete and recreate:

databricks apps delete db-agent-langchain-ts-<username>
databricks bundle deploy -t dev

"Permission denied on serving endpoint"

Ensure endpoint is listed in app.yaml resources:

resources:
  - name: serving-endpoint
    serving_endpoint:
      name: "databricks-claude-sonnet-4-5"
      permission: CAN_QUERY

"Experiment not found"

Create experiment:

databricks experiments create \
  --experiment-name "/Users/$(databricks current-user me --output json | jq -r .userName)/agent-langchain-ts"

Or update databricks.yml to auto-create:

resources:
  experiments:
    agent_experiment:
      name: /Users/${workspace.current_user.userName}/agent-langchain-ts

"App failed to start"

Check logs:

databricks apps logs db-agent-langchain-ts-<username>

Common issues:

  • Missing dependencies in package.json
  • Incorrect npm start command in app.yaml
  • Missing environment variables
  • Build errors

"Cannot reach app URL"

Verify:

  1. App is running: databricks apps get <app-name> | jq -r .state
  2. URL is correct: databricks apps get <app-name> | jq -r .url
  3. Authentication token is valid

CI/CD Integration

GitHub Actions Example

name: Deploy to Databricks

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

      - name: Install Databricks CLI
        run: |
          curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh

      - name: Deploy to Databricks
        env:
          DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
          DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
        run: |
          databricks bundle deploy -t prod
          databricks bundle run agent_langchain_ts

Best Practices

  1. Test Locally First: Always test with npm run dev before deploying
  2. Use Dev Environment: Test deployments in dev before prod
  3. Monitor Logs: Check logs after deployment
  4. Version Control: Commit changes before deploying
  5. Resource Permissions: Verify all required resources are granted in app.yaml
  6. MLflow Traces: Monitor traces to debug issues
  7. Incremental Updates: Make small changes and test frequently

Related Skills

  • quickstart: Initial setup and authentication
  • run-locally: Local development and testing
  • modify-agent: Making changes to agent configuration
Repository
databricks/app-templates
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.