{"owner":"Helicone","repo":"helicone","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker/docker-compose.yml","servicesCount":18,"services":[{"name":"db","image":"postgres:17.4","ports":["54388:5432"],"environment":["POSTGRES_DB=helicone_test","POSTGRES_USER=postgres","POSTGRES_PASSWORD=testpassword"],"volumes":["postgres_flyway_data:/var/lib/postgresql/data"]},{"name":"clickhouse","image":"clickhouse/clickhouse-server:24.3.13.40","restart":"unless-stopped","ports":["18123:8123","19000:9000"],"environment":["CLICKHOUSE_DEFAULT_USER=default"],"volumes":["clickhouse_data:/var/lib/clickhouse"]},{"name":"minio","image":"pgsty/minio:RELEASE.2026-08-04T00-00-00Z","command":"server /data --console-address \":9001\"","ports":["9000:9000","9001:9001"],"environment":["MINIO_ROOT_USER=minioadmin","MINIO_ROOT_PASSWORD=minioadmin"],"volumes":["minio_data:/data"]},{"name":"minio-setup","image":"pgsty/mc:RELEASE.2026-09-16T00-00-00Z","depends_on":["minio"]},{"name":"mailhog","image":"mailhog/mailhog","ports":["1025:1025","8025:8025"]},{"name":"redis","image":"redis:8.0.2-alpine","restart":"unless-stopped","ports":["6379:6379"],"environment":["REDIS_PASSWORD=helicone-redis-pw","REDIS_PORT=6379"]},{"name":"migrations","build":{"context":"../","dockerfile":"docker/dockerfiles/dockerfile_migrations"},"environment":["FLYWAY_URL=jdbc:postgresql://db:5432/helicone_test","FLYWAY_USER=postgres","FLYWAY_PASSWORD=testpassword","CLICKHOUSE_HOST=http://clickhouse:8123","CLICKHOUSE_USER=default"],"volumes":["../supabase:/app/supabase","../clickhouse:/app/clickhouse"],"depends_on":["db","clickhouse"]},{"name":"jawn","build":{"context":"../","dockerfile":"valhalla/dockerfile"},"restart":"unless-stopped","ports":["${JAWN_PORT:-8585}:${JAWN_PORT:-8585}"],"environment":["PORT=${JAWN_PORT:-8585}","NEXT_PUBLIC_BETTER_AUTH=true","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin","S3_BUCKET_NAME=request-response-storage","S3_PROMPT_BUCKET_NAME=prompt-body-storage","S3_ENDPOINT_PUBLIC=http://localhost:9000","CLICKHOUSE_CREDS={\n  \"CLICKHOUSE_HOST\": \"http://clickhouse:8123\",\n  \"CLICKHOUSE_USER\": \"default\",\n  \"CLICKHOUSE_PASSWORD\": \"\",\n  \"CLICKHOUSE_HQL_USER\": \"hql_user\",\n  \"CLICKHOUSE_HQL_PASSWORD\": \"\"\n}\n","VERCEL_ENV=${VERCEL_ENV:-development}","BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your-secret-key}","SUPABASE_DATABASE_URL=postgres://postgres:testpassword@db:5432/helicone_test","HELICONE_MANUAL_ACCESS_KEY=${HELICONE_MANUAL_ACCESS_KEY:-sk-helicone-rrrrrrr-xxxxxxx-vvvvvvv-wwwwwww}"],"depends_on":["db","clickhouse","minio","migrations"]},{"name":"web","build":{"context":"../","dockerfile":"docker/dockerfiles/dockerfile_web"},"ports":["3000:3000"],"environment":["NEXT_PUBLIC_HELICONE_JAWN_SERVICE=${JAWN_PUBLIC_URL:-http://localhost:8585}","DATABASE_URL=postgres://postgres:testpassword@db:5432/helicone_test","CLICKHOUSE_HOST=http://clickhouse:8123","CLICKHOUSE_USER=default","CLICKHOUSE_PASSWORD=","VERCEL_ENV=${VERCEL_ENV:-development}","SMTP_HOST=mailhog","SMTP_PORT=1025","NEXT_PUBLIC_BETTER_AUTH=true","BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your-secret-key}","SMTP_SECURE=false","NODE_ENV=development"],"depends_on":["jawn","db"]},{"name":"jawn-dev","build":{"context":"../","dockerfile":"valhalla/dockerfile_dev"},"restart":"unless-stopped","command":"yarn dev","ports":["${JAWN_PORT:-8585}:${JAWN_PORT:-8585}"],"environment":["PORT=${JAWN_PORT:-8585}","NEXT_PUBLIC_BETTER_AUTH=true","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin","S3_BUCKET_NAME=request-response-storage","S3_PROMPT_BUCKET_NAME=prompt-body-storage","S3_ENDPOINT_PUBLIC=http://localhost:9000","CLICKHOUSE_CREDS={\n  \"CLICKHOUSE_HOST\": \"http://clickhouse:8123\",\n  \"CLICKHOUSE_USER\": \"default\",\n  \"CLICKHOUSE_PASSWORD\": \"\",\n  \"CLICKHOUSE_HQL_USER\": \"hql_user\",\n  \"CLICKHOUSE_HQL_PASSWORD\": \"\"\n}\n","VERCEL_ENV=${VERCEL_ENV:-development}","BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your-secret-key}","SUPABASE_DATABASE_URL=postgres://postgres:testpassword@db:5432/helicone_test"],"volumes":["../valhalla:/app/valhalla","../shared:/app/shared","/app/valhalla/node_modules"],"depends_on":["db","clickhouse","minio","migrations"]},{"name":"web-dev","build":{"context":"../web","dockerfile":"docker/dockerfiles/dockerfile_web_dev"},"command":"yarn dev:local -p 3000","ports":["3000:3000"],"environment":["NEXT_PUBLIC_HELICONE_JAWN_SERVICE=${JAWN_PUBLIC_URL:-http://localhost:8585}","DATABASE_URL=postgres://postgres:testpassword@db:5432/helicone_test","CLICKHOUSE_HOST=http://clickhouse:8123","CLICKHOUSE_USER=default","CLICKHOUSE_PASSWORD=","VERCEL_ENV=${VERCEL_ENV:-development}","SMTP_HOST=mailhog","SMTP_PORT=1025","NEXT_PUBLIC_BETTER_AUTH=true","BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your-secret-key}","SMTP_SECURE=false","NODE_ENV=development"],"volumes":["../web:/app/web","/app/web/node_modules","/app/web/.next"],"depends_on":["jawn-dev","db"]},{"name":"worker-openai-proxy","image":"worker-local","build":{"context":"../worker","dockerfile":"docker/dockerfiles/dockerfile_worker"},"ports":["8787:8787"],"environment":["PORT=8787","WORKER_TYPE=OPENAI_PROXY","WORKER_PORT=8787","CLICKHOUSE_HOST=http://clickhouse:8123","VALHALLA_URL=http://jawn:${JAWN_PORT:-8585}","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin","S3_BUCKET_NAME=request-response-storage","S3_PROMPT_BUCKET_NAME=prompt-body-storage"],"depends_on":["clickhouse","minio","db"]},{"name":"worker-helicone-api","image":"worker-local","build":{"context":"../worker","dockerfile":"docker/dockerfiles/dockerfile_worker"},"ports":["8788:8788"],"environment":["PORT=8788","WORKER_TYPE=HELICONE_API","WORKER_PORT=8788","CLICKHOUSE_HOST=http://clickhouse:8123","VALHALLA_URL=http://jawn:${JAWN_PORT:-8585}","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin"],"depends_on":["clickhouse","minio","db"]},{"name":"worker-gateway-api","image":"worker-local","build":{"context":"../worker","dockerfile":"docker/dockerfiles/dockerfile_worker"},"ports":["8789:8789"],"environment":["PORT=8789","WORKER_TYPE=GATEWAY_API","WORKER_PORT=8789","GATEWAY_TARGET=https://openrouter.ai","CLICKHOUSE_HOST=http://clickhouse:8123","VALHALLA_URL=http://jawn:${JAWN_PORT:-8585}","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin"],"depends_on":["clickhouse","minio","db"]},{"name":"worker-anthropic-proxy","image":"worker-local","build":{"context":"../worker","dockerfile":"docker/dockerfiles/dockerfile_worker"},"ports":["8790:8790"],"environment":["PORT=8790","WORKER_TYPE=ANTHROPIC_PROXY","WORKER_PORT=8790","CLICKHOUSE_HOST=http://clickhouse:8123","VALHALLA_URL=http://jawn:${JAWN_PORT:-8585}","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin"],"depends_on":["clickhouse","minio","db"]},{"name":"worker-generate-api","image":"worker-local","build":{"context":"../worker","dockerfile":"docker/dockerfiles/dockerfile_worker"},"ports":["8791:8791"],"environment":["PORT=8791","WORKER_TYPE=GENERATE_API","WORKER_PORT=8791","CLICKHOUSE_HOST=http://clickhouse:8123","VALHALLA_URL=http://jawn:${JAWN_PORT:-8585}","S3_ENDPOINT=http://minio:9000","S3_ACCESS_KEY=minioadmin","S3_SECRET_KEY=minioadmin"],"depends_on":["clickhouse","minio","db"]},{"name":"zookeeper","image":"confluentinc/cp-zookeeper:7.8.0","ports":["2181:2181"],"environment":["ZOOKEEPER_CLIENT_PORT=2181","ZOOKEEPER_SERVER_ID=1","ZOOKEEPER_SERVERS=zookeeper:2888:3888"]},{"name":"kafka","image":"confluentinc/cp-kafka:7.8.0","ports":["9092:9092","29092:29092","9999:9999"],"environment":["KAFKA_ADVERTISED_LISTENERS=INTERNAL://kafka:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092,DOCKER://host.docker.internal:29092","KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT","KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL","KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181","KAFKA_BROKER_ID=1","KAFKA_LOG4J_LOGGERS=kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO","KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1","KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1","KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1","KAFKA_JMX_PORT=9999","KAFKA_JMX_HOSTNAME=${DOCKER_HOST_IP:-127.0.0.1}","KAFKA_AUTHORIZER_CLASS_NAME=kafka.security.authorizer.AclAuthorizer","KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND=true"],"depends_on":["zookeeper"]}],"exposedPorts":["54388","18123","19000","9000","9001","1025","8025","6379","3000","8787","8788","8789","8790","8791","2181","9092","29092","9999"],"dockerRunCommand":"docker run -d --name helicone -p 54388:54388 --restart always postgres:17.4","podmanRunCommand":"podman run -d --name helicone -p 54388:54388 --restart always postgres:17.4","skopeoInspectCommand":"skopeo inspect docker://docker.io/library/postgres:17.4","orasPullCommand":"oras pull postgres:17.4","registryMeta":{"provider":"dockerhub","image":"library/postgres","canonicalImage":"docker.io/library/postgres:17.4","latestTag":"17.4","cliCommands":{"dockerRun":"docker run -d --name helicone -p 54388:54388 --restart always postgres:17.4","dockerPull":"docker pull postgres:17.4","podmanRun":"podman run -d --name helicone -p 54388:54388 --restart always postgres:17.4","skopeoInspect":"skopeo inspect docker://docker.io/library/postgres:17.4","orasPull":"oras pull postgres:17.4","composeYaml":"services:\n  helicone:\n    image: postgres:17.4\n    restart: unless-stopped\n    ports:\n      - \"54388:54388\""}}}