Sign inSign up

charlietran1407/camel-dashboard

By charlietran1407

•Updated 4 months ago

Deploy and manage Apache Camel YAML routes live with monitoring and AI MCP integration

Image
Integration & delivery
API management
Web servers
0

999

charlietran1407/camel-dashboard repository overview

⁠🐪 Camel Dashboard

Docker Pulls Docker Image Size Apache Camel Spring Boot

Deploy and manage Apache Camel routes live without writing Java or rebuilding containers.

Camel Dashboard is a modern, lightweight management dashboard and runtime for Apache Camel. It allows you to upload Camel YAML routes, run them on a live cluster, monitor routes across all nodes in real time, and integrate native Model Context Protocol (MCP) to let your AI assistant build and deploy integrations via natural language.


⁠✨ Key Features

  • Live YAML DSL Deployment: Write Apache Camel YAML DSL routes, validate them, and deploy them live with zero application downtime.
  • Version Control & Rollbacks: Keep an infinite history of route deployments, track version history, and roll back instantly with one click.
  • Cluster Support: Coordinates across multiple instances using Redis Streams + Pub/Sub. See live status of routes on every node and synchronize deployments cluster-wide.
  • Observability Built-in: Monitor latency, throughput, and error rates via Micrometer, OpenTelemetry, and Jaeger integration.
  • Native MCP Server: Connect AI coding assistants (Claude Desktop, Cursor, Google Antigravity IDE) directly to your running Camel cluster for conversational, low-code integration building.

⁠🚀 Quick Start (Single Node)

To run Camel Dashboard, you will need a PostgreSQL database.

⁠1. Create a Docker Network
docker network create cameldash-net
⁠2. Start PostgreSQL
docker run -d \
  --name cameldash-db \
  --network cameldash-net \
  -e POSTGRES_DB=cameldash \
  -e POSTGRES_USER=cameldash \
  -e POSTGRES_PASSWORD=mysecretpassword \
  postgres:16-alpine
⁠3. Run Camel Dashboard
docker run -d \
  --name camel-dashboard \
  --network cameldash-net \
  -p 8080:8080 \
  -e DATASOURCE_URL=jdbc:postgresql://cameldash-db:5432/cameldash \
  -e DATASOURCE_USERNAME=cameldash \
  -e DATASOURCE_PASSWORD=mysecretpassword \
  -e CAMEL_DASHBOARD_ENCRYPT_KEY=my32charactersecretkey123456789 \
  charlietran1407/camel-dashboard:latest

Open http://localhost:8080⁠ in your browser to access the dashboard.


⁠📦 Cluster Setup (Docker Compose)

For production or clustered environments with multiple Camel Dashboard nodes coordinating via Redis, use this docker-compose.yaml:

version: '3.8'

services:
  # Database
  postgres:
    image: postgres:16-alpine
    container_name: cameldash-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: cameldash
      POSTGRES_USER: cameldash
      POSTGRES_PASSWORD: securepassword123
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  # Redis for Cluster Coordination
  redis:
    image: redis:7-alpine
    container_name: cameldash-redis
    restart: unless-stopped
    command: redis-server --notify-keyspace-events Ex
    ports:
      - "6379:6379"

  # Camel Dashboard Node 1
  camel-dashboard-1:
    image: charlietran1407/camel-dashboard:latest
    container_name: cameldash-node-1
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      INSTANCE_ID: node-1
      DATASOURCE_URL: jdbc:postgresql://postgres:5432/cameldash
      DATASOURCE_USERNAME: cameldash
      DATASOURCE_PASSWORD: securepassword123
      CAMEL_DASHBOARD_ENCRYPT_KEY: local32charsecretkey1234567890123
      CAMEL_DASHBOARD_CLUSTER_ENABLED: "true"
      REDIS_HOST: redis
      REDIS_PORT: 6379
    volumes:
      - routes-storage-1:/app/camel-routes-storage
      - libs-storage-1:/app/libs
    depends_on:
      - postgres
      - redis

  # Camel Dashboard Node 2
  camel-dashboard-2:
    image: charlietran1407/camel-dashboard:latest
    container_name: cameldash-node-2
    restart: unless-stopped
    ports:
      - "8081:8080"
    environment:
      INSTANCE_ID: node-2
      DATASOURCE_URL: jdbc:postgresql://postgres:5432/cameldash
      DATASOURCE_USERNAME: cameldash
      DATASOURCE_PASSWORD: securepassword123
      CAMEL_DASHBOARD_ENCRYPT_KEY: local32charsecretkey1234567890123
      CAMEL_DASHBOARD_CLUSTER_ENABLED: "true"
      REDIS_HOST: redis
      REDIS_PORT: 6379
    volumes:
      - routes-storage-2:/app/camel-routes-storage
      - libs-storage-2:/app/libs
    depends_on:
      - postgres
      - redis

volumes:
  pgdata:
  routes-storage-1:
  routes-storage-2:
  libs-storage-1:
  libs-storage-2:

⁠⚙️ Configuration Environment Variables

VariableRequiredDefaultDescription
DATASOURCE_URLYes-PostgreSQL JDBC URL (e.g. jdbc:postgresql://db:5432/cameldash)
DATASOURCE_USERNAMEYes-Database username
DATASOURCE_PASSWORDYes-Database password
CAMEL_DASHBOARD_ENCRYPT_KEYYes-32-character AES secret key for encrypting stored route secrets
INSTANCE_IDNorandom uuidUnique identifier for the dashboard instance
SERVER_PORTNo8080Port on which the Spring Boot server runs
CAMEL_CONTEXT_PATHNo/cameldashBase path for Camel endpoints (e.g. endpoints exposed by your deployed routes)
CAMEL_DASHBOARD_STORAGE_DIRNo./camel-routes-storagePath inside the container where YAML route configurations are stored
CAMEL_DASHBOARD_LOADER_PATHNo./libsDirectory path containing external libraries (e.g., custom JDBC drivers or extra Camel component JARs)
CAMEL_DASHBOARD_CLUSTER_ENABLEDNofalseEnable Redis cluster synchronization and coordination
REDIS_HOSTNo-Redis hostname (required if CAMEL_DASHBOARD_CLUSTER_ENABLED is true)
REDIS_PORTNo6379Redis port
REDIS_PASSWORDNo-Redis password
CAMEL_DASHBOARD_MCP_API_KEYNo-API Key to protect the /mcp endpoints
OTEL_LOGS_EXPORTERNononeOTel logs exporter (e.g. otlp or none)
OTEL_EXPORTER_OTLP_ENDPOINTNo-OpenTelemetry Collector endpoint (e.g. http://otel-collector:4317)

⁠💾 Volume Mounts

  • /app/camel-routes-storage: Mount this volume to persist your deployed route files across container restarts.
  • /app/libs: Mount this to load custom Java libraries or JDBC drivers (e.g. Oracle, SQL Server, MySQL, etc.) or extra Apache Camel component JARs. They will be loaded into the classpath of the Camel engine dynamically.

⁠🤖 MCP Integration for AI Vibe-Coding

Camel Dashboard exposes a native Model Context Protocol (MCP) server over SSE at /mcp. This allows any MCP-compatible AI Assistant to inspect routes, validate YAML syntax, and deploy integrations live on your behalf.

⁠Connecting Your AI Client
⁠1. Claude Desktop / Cursor (claude_desktop_config.json)
{
  "mcpServers": {
    "camel-dashboard": {
      "type": "sse",
      "url": "http://localhost:8080/mcp"
    }
  }
}
⁠2. Google Antigravity IDE (mcp_config.json)
{
  "mcpServers": {
    "camel-dashboard": {
      "serverUrl": "http://localhost:8080/mcp",
      "headers": {
        "X-MCP-API-KEY": "your-mcp-api-key"
      }
    }
  }
}

(Ensure CAMEL_DASHBOARD_MCP_API_KEY is set in the container environment if using an API key.)


⁠🤝 Contributing & Support


⁠📝 License & Disclaimer

  • This project is licensed under the MIT License.
  • Disclaimer: This product is independent and is not affiliated with, endorsed by, or sponsored by the Apache Software Foundation. "Apache", "Camel", and "Apache Camel" are trademarks of the Apache Software Foundation.

Tag summary

Content type

Image

Digest

sha256:245ec218b…

Size

273.8 MB

Last updated

4 months ago

docker pull charlietran1407/camel-dashboard