Output Services Health Check
Overview
This skill verifies that all required Output SDK development services are running and healthy. The Output SDK requires three services for local development: Docker containers, the API server, and the Temporal server with its UI.
When to Use This Skill
- •Starting a debugging session
- •Encountering connection refused errors (ECONNREFUSED)
- •Workflows failing to start or connect
- •Timeout errors when running workflows
- •Before running any workflow commands
- •When the development environment seems unresponsive
Instructions
Step 1: Check Docker Containers
docker ps | grep output
Expected: You should see containers related to output running. If no containers appear, Docker may not be running or the services haven't been started.
Step 2: Check API Server Health
curl -s http://localhost:3001/health
Expected: Returns a health status response. If this fails with "Connection refused", the API server is not running.
Step 3: Check Temporal UI Accessibility
curl -s http://localhost:8080 > /dev/null && echo "Temporal UI accessible" || echo "Temporal UI not accessible"
Expected: "Temporal UI accessible". If not accessible, Temporal server may not be running.
Remediation Steps
If Docker is not running:
- •Start Docker Desktop (macOS/Windows) or the Docker daemon (Linux)
- •Wait for Docker to fully initialize
- •Re-run the checks
If services are not running:
# Start all development services npx output dev
Wait 30-60 seconds for all services to initialize, then re-run the checks.
If only some services are down:
# Restart all services using Docker Compose docker compose down docker compose up -d
If services fail to start:
- •Check for port conflicts:
lsof -i :3001andlsof -i :8080 - •Check Docker logs:
docker compose logs - •Ensure you have sufficient system resources (memory, disk space)
Decision Tree
IF docker_not_running: ACTION: Start Docker Desktop/daemon WAIT: for Docker to initialize IF no_output_containers: RUN: npx output dev WAIT: 30-60 seconds for services IF api_not_responding: CHECK: port 3001 for conflicts RUN: output dev (if not already running) IF temporal_not_accessible: CHECK: port 8080 for conflicts CHECK: docker compose logs for Temporal errors IF all_services_healthy: PROCEED: with workflow debugging
Examples
Scenario: User reports "connection refused" when running a workflow
# First, check if services are running
docker ps | grep output
# Output: (empty - no containers)
# Start services
npx output dev
# Wait and verify
sleep 60
curl -s http://localhost:3001/health
# Output: {"status":"healthy"}
Scenario: Partial service failure
# API responds but Temporal doesn't curl -s http://localhost:3001/health # Works curl -s http://localhost:8080 # Fails # Check Temporal logs docker compose logs temporal # Restart just Temporal docker compose restart temporal