From dominodatalab
Deploys web apps (React/Vite, Streamlit, Dash) to Domino Data Lab with app.sh, port binding, base path, and CI/CD setup.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dominodatalab:appsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides comprehensive knowledge for deploying web applications to Domino Data Lab, with special focus on React applications using Vite.
This skill provides comprehensive knowledge for deploying web applications to Domino Data Lab, with special focus on React applications using Vite.
Domino apps run in containers behind a reverse proxy that:
Note: Port selection is flexible; port 8888 is no longer required. You can use any port your application prefers.
0.0.0.0 (not localhost) so Domino can reach your appbase: './' in Vite config for React apps// vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
base: './', // CRITICAL for Domino proxy
server: { host: '0.0.0.0', port: 8888, strictPort: true },
preview: { host: '0.0.0.0', port: 8888, strictPort: true },
})
# app.sh
#!/bin/bash
set -e
cd /mnt/code
npm ci
npm run build
npx serve -s dist -l 8888 --no-clipboard
# app.sh
#!/bin/bash
streamlit run app.py --server.port 8888 --server.address 0.0.0.0
# app.sh
#!/bin/bash
python app.py # Must bind to 0.0.0.0:8888
Domino provides these environment variables to your app:
| Variable | Description |
|---|---|
DOMINO_PROJECT_NAME | Current project name |
DOMINO_PROJECT_OWNER | Project owner username |
DOMINO_RUN_ID | Current run identifier |
DOMINO_STARTING_USERNAME | User who started the app |
Domino apps can communicate with each other using bearer token authentication. This is useful for:
Domino provides an access token service at localhost:8899:
import requests
# Get bearer token for inter-app communication
API_TOKEN = requests.get("http://localhost:8899/access-token").text
import requests
# 1. Get access token from Domino's token service
API_TOKEN = requests.get("http://localhost:8899/access-token").text
# 2. Set up headers with bearer token
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
# 3. Make request to another Domino app or service
payload = {
"query": "Your request data here"
}
try:
resp = requests.post(
"https://your-domino-instance/apps-internal/APP_ID/endpoint",
json=payload,
headers=headers,
timeout=100
)
resp.raise_for_status()
data = resp.json()
print(data)
except requests.exceptions.RequestException as err:
print("API call failed:", err)
http://localhost:8899/access-token (only accessible from within Domino)Before writing or verifying any API call, use the cluster swagger to confirm current endpoint paths and field names. Use public docs for workflow context and field explanations.
/api/apps/v1) for all apps creation, update, preview, publication, start and stop workflows./api/apps/beta) is deprecated and maintained solely for backward compatibility. Do not build new functionality against beta endpoints if a v1 equivalent exists.realTimeLogs, views, listing active running instances, or issuing an instance-level DELETE) were not migrated to the v1 spec. They remain active exclusively under the /api/apps/beta path.Rule of Thumb: Use v1 for automating write or publish actions. Fall back to beta for streaming runtime telemetry like logs or views.
Get the cluster base URL: $DOMINO_API_HOST (injected by Domino into every workspace, job, and app).
Fetch the swagger spec:
# No authentication required for the public API spec
curl "$DOMINO_API_HOST/assets/public-api.json"
# Browser UI: $DOMINO_API_HOST/assets/lib/swagger-ui/index.html?url=/assets/public-api.json#/
Public docs (workflow context and field explanations):
Blueprint Reference:
npx claudepluginhub anthropics/claude-plugins-official --plugin dominodatalabOffers UI/UX design guidance for web and mobile with 50+ styles, 161 color palettes, 57 font pairings, and 99 UX guidelines across 10 stacks. Use for designing pages, components, color systems, or reviewing UI code.
Mines projects and conversations into a searchable memory palace. Activates on queries about MemPalace, memory palace, mining, searching, palace setup, wings, rooms, drawers, or recalling past work.