2026-04-05 22:44:45 -05:00
|
|
|
# TrustGraph TypeScript — Full Stack
|
|
|
|
|
# Usage: docker compose up -d
|
2026-04-06 00:41:01 -05:00
|
|
|
# Observability UI: http://localhost:3030 (Grafana)
|
2026-04-05 22:44:45 -05:00
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
trustgraph:
|
|
|
|
|
driver: bridge
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
nats-data:
|
|
|
|
|
falkordb-data:
|
|
|
|
|
qdrant-data:
|
|
|
|
|
ollama-models:
|
|
|
|
|
prometheus-data:
|
|
|
|
|
loki-data:
|
|
|
|
|
tempo-data:
|
|
|
|
|
grafana-data:
|
2026-04-06 00:41:01 -05:00
|
|
|
librarian-data:
|
2026-04-05 22:44:45 -05:00
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Infrastructure
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
nats:
|
|
|
|
|
image: nats:2.10-alpine
|
|
|
|
|
command: ["--jetstream", "--http_port", "8222", "--store_dir", "/data"]
|
|
|
|
|
ports:
|
|
|
|
|
- "4222:4222" # Client connections
|
|
|
|
|
- "8222:8222" # Monitoring / metrics
|
|
|
|
|
volumes:
|
|
|
|
|
- nats-data:/data
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8222/healthz"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 5s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
falkordb:
|
|
|
|
|
image: falkordb/falkordb:latest
|
|
|
|
|
ports:
|
fix: NATS pipeline bugs, add integration tests and service runners
Fix three critical bugs preventing the NATS message pipeline from working:
- FlowProcessor now subscribes to config-push topic (was missing entirely),
using DeliverPolicy.All to replay config on service restart
- NATS streams use wildcard subjects (tg.flow.>) instead of per-topic
narrow filters that caused 503 errors on publish
- Subscriber dispatch loop has exponential backoff on errors to prevent
tight error loops
Add service runner scripts (gateway, config, LLM) and a 7-test
integration suite that verifies config CRUD, WebSocket round-trip,
and full LLM text-completion through the NATS pipeline.
Fix Docker Compose infra: pin Tempo to v2.6.1, remove deprecated Loki
config fields, add user:0 for volume permissions, remap conflicting
ports (FalkorDB 6380, OTLP 4327/4328).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:41:39 -05:00
|
|
|
- "6380:6379"
|
2026-04-05 22:44:45 -05:00
|
|
|
volumes:
|
|
|
|
|
- falkordb-data:/data
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 5s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
qdrant:
|
|
|
|
|
image: qdrant/qdrant:latest
|
|
|
|
|
ports:
|
|
|
|
|
- "6333:6333" # REST API
|
|
|
|
|
- "6334:6334" # gRPC
|
|
|
|
|
volumes:
|
|
|
|
|
- qdrant-data:/qdrant/storage
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
fix: comprehensive QA — resolve 13 bugs, add UX improvements across all services
Client SDK: add .catch() to graphRagStreaming/documentRagStreaming (silent timeout),
null-guard JSON.parse in getPrompts/getSystemPrompt/getPrompt.
Backend: implement "getvalues" config operation for token costs, null-check
createTerm() in FalkorDB triples query, add knowledge-cores service entrypoint
and Docker entry, return proper HTTP 400/404 for gateway error responses.
Workbench: cancel button + elapsed timer for chat, clear agent spinner on error,
flow dialog inline validation, responsive header wrapping, knowledge cores
loading timeout, sidebar/page naming consistency, theme toggle indicator.
Infrastructure: enable Grafana Explore for viewers, add gateway Prometheus
scrape target, fix RAG pipeline dashboard layout (6 panels visible),
filter Service Health to configured targets only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 05:20:10 -05:00
|
|
|
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/localhost/6333'"]
|
2026-04-05 22:44:45 -05:00
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 5s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
ollama:
|
|
|
|
|
image: ollama/ollama:latest
|
|
|
|
|
ports:
|
|
|
|
|
- "11434:11434"
|
|
|
|
|
volumes:
|
|
|
|
|
- ollama-models:/root/.ollama
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Observability
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
prometheus:
|
|
|
|
|
image: prom/prometheus:latest
|
|
|
|
|
ports:
|
|
|
|
|
- "9090:9090"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
|
|
|
- prometheus-data:/prometheus
|
|
|
|
|
command:
|
|
|
|
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
|
|
|
|
- "--storage.tsdb.path=/prometheus"
|
|
|
|
|
- "--storage.tsdb.retention.time=7d"
|
|
|
|
|
- "--web.enable-remote-write-receiver"
|
|
|
|
|
- "--enable-feature=exemplar-storage"
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9090/-/healthy"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 10s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
loki:
|
|
|
|
|
image: grafana/loki:3.0.0
|
fix: NATS pipeline bugs, add integration tests and service runners
Fix three critical bugs preventing the NATS message pipeline from working:
- FlowProcessor now subscribes to config-push topic (was missing entirely),
using DeliverPolicy.All to replay config on service restart
- NATS streams use wildcard subjects (tg.flow.>) instead of per-topic
narrow filters that caused 503 errors on publish
- Subscriber dispatch loop has exponential backoff on errors to prevent
tight error loops
Add service runner scripts (gateway, config, LLM) and a 7-test
integration suite that verifies config CRUD, WebSocket round-trip,
and full LLM text-completion through the NATS pipeline.
Fix Docker Compose infra: pin Tempo to v2.6.1, remove deprecated Loki
config fields, add user:0 for volume permissions, remap conflicting
ports (FalkorDB 6380, OTLP 4327/4328).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:41:39 -05:00
|
|
|
user: "0"
|
2026-04-05 22:44:45 -05:00
|
|
|
ports:
|
|
|
|
|
- "3100:3100"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./loki/loki-config.yml:/etc/loki/local-config.yaml:ro
|
|
|
|
|
- loki-data:/tmp/loki
|
|
|
|
|
command: ["-config.file=/etc/loki/local-config.yaml"]
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3100/ready"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 15s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
tempo:
|
fix: NATS pipeline bugs, add integration tests and service runners
Fix three critical bugs preventing the NATS message pipeline from working:
- FlowProcessor now subscribes to config-push topic (was missing entirely),
using DeliverPolicy.All to replay config on service restart
- NATS streams use wildcard subjects (tg.flow.>) instead of per-topic
narrow filters that caused 503 errors on publish
- Subscriber dispatch loop has exponential backoff on errors to prevent
tight error loops
Add service runner scripts (gateway, config, LLM) and a 7-test
integration suite that verifies config CRUD, WebSocket round-trip,
and full LLM text-completion through the NATS pipeline.
Fix Docker Compose infra: pin Tempo to v2.6.1, remove deprecated Loki
config fields, add user:0 for volume permissions, remap conflicting
ports (FalkorDB 6380, OTLP 4327/4328).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:41:39 -05:00
|
|
|
image: grafana/tempo:2.6.1
|
|
|
|
|
user: "0"
|
2026-04-05 22:44:45 -05:00
|
|
|
ports:
|
|
|
|
|
- "3200:3200" # Tempo API
|
|
|
|
|
volumes:
|
|
|
|
|
- ./tempo/tempo-config.yml:/etc/tempo/config.yml:ro
|
fix: NATS pipeline bugs, add integration tests and service runners
Fix three critical bugs preventing the NATS message pipeline from working:
- FlowProcessor now subscribes to config-push topic (was missing entirely),
using DeliverPolicy.All to replay config on service restart
- NATS streams use wildcard subjects (tg.flow.>) instead of per-topic
narrow filters that caused 503 errors on publish
- Subscriber dispatch loop has exponential backoff on errors to prevent
tight error loops
Add service runner scripts (gateway, config, LLM) and a 7-test
integration suite that verifies config CRUD, WebSocket round-trip,
and full LLM text-completion through the NATS pipeline.
Fix Docker Compose infra: pin Tempo to v2.6.1, remove deprecated Loki
config fields, add user:0 for volume permissions, remap conflicting
ports (FalkorDB 6380, OTLP 4327/4328).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:41:39 -05:00
|
|
|
- tempo-data:/var/tempo
|
2026-04-05 22:44:45 -05:00
|
|
|
command: ["-config.file=/etc/tempo/config.yml"]
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3200/ready"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 15s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
otel-collector:
|
|
|
|
|
image: otel/opentelemetry-collector-contrib:latest
|
|
|
|
|
ports:
|
fix: NATS pipeline bugs, add integration tests and service runners
Fix three critical bugs preventing the NATS message pipeline from working:
- FlowProcessor now subscribes to config-push topic (was missing entirely),
using DeliverPolicy.All to replay config on service restart
- NATS streams use wildcard subjects (tg.flow.>) instead of per-topic
narrow filters that caused 503 errors on publish
- Subscriber dispatch loop has exponential backoff on errors to prevent
tight error loops
Add service runner scripts (gateway, config, LLM) and a 7-test
integration suite that verifies config CRUD, WebSocket round-trip,
and full LLM text-completion through the NATS pipeline.
Fix Docker Compose infra: pin Tempo to v2.6.1, remove deprecated Loki
config fields, add user:0 for volume permissions, remap conflicting
ports (FalkorDB 6380, OTLP 4327/4328).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:41:39 -05:00
|
|
|
- "4327:4317" # OTLP gRPC (apps send traces/metrics here)
|
|
|
|
|
- "4328:4318" # OTLP HTTP
|
2026-04-05 22:44:45 -05:00
|
|
|
- "8889:8889" # Prometheus exporter (scraped by Prometheus)
|
|
|
|
|
volumes:
|
|
|
|
|
- ./otel-collector/config.yml:/etc/otelcol-contrib/config.yaml:ro
|
|
|
|
|
depends_on:
|
|
|
|
|
tempo:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
grafana:
|
|
|
|
|
image: grafana/grafana:latest
|
|
|
|
|
ports:
|
2026-04-06 00:41:01 -05:00
|
|
|
- "3030:3000"
|
2026-04-05 22:44:45 -05:00
|
|
|
volumes:
|
|
|
|
|
- ./grafana/provisioning/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro
|
|
|
|
|
- ./grafana/provisioning/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml:ro
|
|
|
|
|
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
|
|
|
|
|
- grafana-data:/var/lib/grafana
|
|
|
|
|
environment:
|
|
|
|
|
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD:-admin}
|
|
|
|
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
|
|
|
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
|
|
|
|
|
- GF_AUTH_DISABLE_LOGIN_FORM=false
|
|
|
|
|
- GF_USERS_DEFAULT_THEME=dark
|
|
|
|
|
- GF_EXPLORE_ENABLED=true
|
fix: comprehensive QA — resolve 13 bugs, add UX improvements across all services
Client SDK: add .catch() to graphRagStreaming/documentRagStreaming (silent timeout),
null-guard JSON.parse in getPrompts/getSystemPrompt/getPrompt.
Backend: implement "getvalues" config operation for token costs, null-check
createTerm() in FalkorDB triples query, add knowledge-cores service entrypoint
and Docker entry, return proper HTTP 400/404 for gateway error responses.
Workbench: cancel button + elapsed timer for chat, clear agent spinner on error,
flow dialog inline validation, responsive header wrapping, knowledge cores
loading timeout, sidebar/page naming consistency, theme toggle indicator.
Infrastructure: enable Grafana Explore for viewers, add gateway Prometheus
scrape target, fix RAG pipeline dashboard layout (6 panels visible),
filter Service Health to configured targets only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 05:20:10 -05:00
|
|
|
- GF_USERS_VIEWERS_CAN_EDIT=true
|
2026-04-05 22:44:45 -05:00
|
|
|
- GF_FEATURE_TOGGLES_ENABLE=traceqlEditor tempoSearch tempoServiceGraph
|
|
|
|
|
depends_on:
|
|
|
|
|
prometheus:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
loki:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
tempo:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 15s
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
feat: add Docker deployment with Containerfile, entrypoints, and nginx
Multi-stage Containerfile for all Node.js services (single image,
different CMD per docker-compose service). ESM entrypoints for gateway,
config, text-completion, prompt, embeddings, agent, and librarian.
Workbench gets a separate Containerfile (nginx:alpine) with SPA routing
and API/WebSocket proxy to gateway.
Docker Compose updated with 6 app services (gateway, config-service,
text-completion, prompt, embeddings, workbench) using shared
trustgraph-ts:local image.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 00:21:00 -05:00
|
|
|
# TrustGraph Application Services
|
2026-04-05 22:44:45 -05:00
|
|
|
# ---------------------------------------------------------------------------
|
feat: add Docker deployment with Containerfile, entrypoints, and nginx
Multi-stage Containerfile for all Node.js services (single image,
different CMD per docker-compose service). ESM entrypoints for gateway,
config, text-completion, prompt, embeddings, agent, and librarian.
Workbench gets a separate Containerfile (nginx:alpine) with SPA routing
and API/WebSocket proxy to gateway.
Docker Compose updated with 6 app services (gateway, config-service,
text-completion, prompt, embeddings, workbench) using shared
trustgraph-ts:local image.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 00:21:00 -05:00
|
|
|
|
|
|
|
|
gateway:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
build:
|
|
|
|
|
context: ../
|
|
|
|
|
dockerfile: Containerfile
|
|
|
|
|
command: ["node", "entrypoints/gateway.mjs"]
|
|
|
|
|
ports:
|
|
|
|
|
- "${GATEWAY_PORT:-8088}:8088"
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- GATEWAY_PORT=8088
|
|
|
|
|
- GATEWAY_SECRET=${GATEWAY_SECRET:-}
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
config-service:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/config.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
text-completion:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/text-completion-openai.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- OPENAI_TOKEN=${OPENAI_TOKEN:-}
|
|
|
|
|
- OPENAI_BASE_URL=${OPENAI_BASE_URL:-}
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
prompt:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/prompt.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
embeddings:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/embeddings.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- OLLAMA_URL=http://ollama:11434
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
ollama:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
workbench:
|
|
|
|
|
build:
|
|
|
|
|
context: ../
|
|
|
|
|
dockerfile: packages/workbench/Containerfile
|
|
|
|
|
ports:
|
|
|
|
|
- "${WORKBENCH_PORT:-3001}:80"
|
|
|
|
|
depends_on:
|
|
|
|
|
- gateway
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
2026-04-06 00:41:01 -05:00
|
|
|
|
|
|
|
|
agent:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/agent.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
librarian:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/librarian.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
volumes:
|
|
|
|
|
- librarian-data:/app/data
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
flow-manager:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/flow-manager.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
2026-04-07 01:05:54 -05:00
|
|
|
|
fix: comprehensive QA — resolve 13 bugs, add UX improvements across all services
Client SDK: add .catch() to graphRagStreaming/documentRagStreaming (silent timeout),
null-guard JSON.parse in getPrompts/getSystemPrompt/getPrompt.
Backend: implement "getvalues" config operation for token costs, null-check
createTerm() in FalkorDB triples query, add knowledge-cores service entrypoint
and Docker entry, return proper HTTP 400/404 for gateway error responses.
Workbench: cancel button + elapsed timer for chat, clear agent spinner on error,
flow dialog inline validation, responsive header wrapping, knowledge cores
loading timeout, sidebar/page naming consistency, theme toggle indicator.
Infrastructure: enable Grafana Explore for viewers, add gateway Prometheus
scrape target, fix RAG pipeline dashboard layout (6 panels visible),
filter Service Health to configured targets only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 05:20:10 -05:00
|
|
|
knowledge-cores:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/cores.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
2026-04-07 01:05:54 -05:00
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Document Processing Pipeline
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
pdf-decoder:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/pdf-decoder.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
chunker:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/chunker.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
extractor:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/extractor.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
triples-store:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/triples-store.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- FALKORDB_URL=redis://falkordb:6379
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
falkordb:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
graph-embeddings-store:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/graph-embeddings-store.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- QDRANT_URL=http://qdrant:6333
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
qdrant:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Query Services
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
triples-query:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/triples-query.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- FALKORDB_URL=redis://falkordb:6379
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
falkordb:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
graph-embeddings-query:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/graph-embeddings-query.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- QDRANT_URL=http://qdrant:6333
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
qdrant:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
doc-embeddings-query:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/doc-embeddings-query.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
- QDRANT_URL=http://qdrant:6333
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
qdrant:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Retrieval Services
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
graph-rag:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/graph-rag.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
document-rag:
|
|
|
|
|
image: trustgraph-ts:local
|
|
|
|
|
command: ["node", "entrypoints/document-rag.mjs"]
|
|
|
|
|
environment:
|
|
|
|
|
- NATS_URL=nats://nats:4222
|
|
|
|
|
depends_on:
|
|
|
|
|
nats:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- trustgraph
|
|
|
|
|
restart: unless-stopped
|
2026-04-07 03:51:29 -05:00
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Alternative LLM Providers (uncomment one to use instead of text-completion)
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
# text-completion-ollama:
|
|
|
|
|
# image: trustgraph-ts:local
|
|
|
|
|
# command: ["node", "entrypoints/text-completion-ollama.mjs"]
|
|
|
|
|
# environment:
|
|
|
|
|
# - NATS_URL=nats://nats:4222
|
|
|
|
|
# - OLLAMA_URL=http://ollama:11434
|
|
|
|
|
# - OLLAMA_MODEL=${OLLAMA_MODEL:-gemma3:4b}
|
|
|
|
|
# depends_on:
|
|
|
|
|
# nats:
|
|
|
|
|
# condition: service_healthy
|
|
|
|
|
# ollama:
|
|
|
|
|
# condition: service_started
|
|
|
|
|
# networks:
|
|
|
|
|
# - trustgraph
|
|
|
|
|
# restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# text-completion-claude:
|
|
|
|
|
# image: trustgraph-ts:local
|
|
|
|
|
# command: ["node", "entrypoints/text-completion-claude.mjs"]
|
|
|
|
|
# environment:
|
|
|
|
|
# - NATS_URL=nats://nats:4222
|
|
|
|
|
# - CLAUDE_KEY=${CLAUDE_KEY:-}
|
|
|
|
|
# depends_on:
|
|
|
|
|
# nats:
|
|
|
|
|
# condition: service_healthy
|
|
|
|
|
# networks:
|
|
|
|
|
# - trustgraph
|
|
|
|
|
# restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# text-completion-azure-openai:
|
|
|
|
|
# image: trustgraph-ts:local
|
|
|
|
|
# command: ["node", "entrypoints/text-completion-azure-openai.mjs"]
|
|
|
|
|
# environment:
|
|
|
|
|
# - NATS_URL=nats://nats:4222
|
|
|
|
|
# - AZURE_TOKEN=${AZURE_TOKEN:-}
|
|
|
|
|
# - AZURE_ENDPOINT=${AZURE_ENDPOINT:-}
|
|
|
|
|
# - AZURE_MODEL=${AZURE_MODEL:-gpt-4o}
|
|
|
|
|
# - AZURE_API_VERSION=${AZURE_API_VERSION:-2024-02-15-preview}
|
|
|
|
|
# depends_on:
|
|
|
|
|
# nats:
|
|
|
|
|
# condition: service_healthy
|
|
|
|
|
# networks:
|
|
|
|
|
# - trustgraph
|
|
|
|
|
# restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# text-completion-openai-compatible:
|
|
|
|
|
# image: trustgraph-ts:local
|
|
|
|
|
# command: ["node", "entrypoints/text-completion-openai-compatible.mjs"]
|
|
|
|
|
# environment:
|
|
|
|
|
# - NATS_URL=nats://nats:4222
|
|
|
|
|
# - OPENAI_COMPAT_URL=${OPENAI_COMPAT_URL:-http://localhost:1234/v1}
|
|
|
|
|
# - OPENAI_COMPAT_MODEL=${OPENAI_COMPAT_MODEL:-default}
|
|
|
|
|
# - OPENAI_COMPAT_KEY=${OPENAI_COMPAT_KEY:-}
|
|
|
|
|
# depends_on:
|
|
|
|
|
# nats:
|
|
|
|
|
# condition: service_healthy
|
|
|
|
|
# networks:
|
|
|
|
|
# - trustgraph
|
|
|
|
|
# restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
# text-completion-mistral:
|
|
|
|
|
# image: trustgraph-ts:local
|
|
|
|
|
# command: ["node", "entrypoints/text-completion-mistral.mjs"]
|
|
|
|
|
# environment:
|
|
|
|
|
# - NATS_URL=nats://nats:4222
|
|
|
|
|
# - MISTRAL_TOKEN=${MISTRAL_TOKEN:-}
|
|
|
|
|
# - MISTRAL_MODEL=${MISTRAL_MODEL:-ministral-8b-latest}
|
|
|
|
|
# depends_on:
|
|
|
|
|
# nats:
|
|
|
|
|
# condition: service_healthy
|
|
|
|
|
# networks:
|
|
|
|
|
# - trustgraph
|
|
|
|
|
# restart: unless-stopped
|