@duckmind/deepquark-darwin-arm64 0.9.83 → 0.9.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.deepquark/skills/bundled/knowledge-graph/SKILL.md +385 -0
- package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -0
- package/bin/deepquark +0 -0
- package/package.json +1 -1
- package/.deepquark/skills/bundled/ge-payroll/SKILL.md +0 -153
- package/.deepquark/skills/bundled/ge-payroll/evals/evals.json +0 -23
- package/.deepquark/skills/bundled/ge-payroll/references/pain-points-improvements.md +0 -106
- package/.deepquark/skills/bundled/ge-payroll/references/process-detail.md +0 -217
- package/.deepquark/skills/bundled/ge-payroll/references/raci-stakeholders.md +0 -85
- package/.deepquark/skills/bundled/ge-payroll/references/timeline-mandays.md +0 -64
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Docker Compose configuration for Madeinoz Knowledge System with FalkorDB backend
|
|
2
|
+
# Uses a shared public network for both services
|
|
3
|
+
|
|
4
|
+
name: madeinoz-knowledge-system
|
|
5
|
+
#
|
|
6
|
+
# Services:
|
|
7
|
+
# - falkordb: Redis-based graph database
|
|
8
|
+
# - graphiti-mcp: MCP server (exposed to host)
|
|
9
|
+
# - prometheus: Metrics server (optional, via --profile monitoring)
|
|
10
|
+
# - grafana: Dashboard (optional, via --profile monitoring)
|
|
11
|
+
#
|
|
12
|
+
# Madeinoz Patches APPLIED:
|
|
13
|
+
# 1. entrypoint.sh - Maps MADEINOZ_KNOWLEDGE_* prefixed variables to unprefixed
|
|
14
|
+
# container variables. This keeps .env clean while providing what container expects.
|
|
15
|
+
#
|
|
16
|
+
# IMPORTANT NOTE - Docker Compose v2.14 Bug on macOS:
|
|
17
|
+
# If you get "key cannot contain a space" error, use the workaround:
|
|
18
|
+
# 1. Create file in /tmp: git show HEAD:src/server/docker-compose-falkordb.yml > /tmp/docker-compose-falkordb.yml
|
|
19
|
+
# 2. Run: docker compose -f /tmp/docker-compose-falkordb.yml up -d
|
|
20
|
+
#
|
|
21
|
+
# Usage from pack directory:
|
|
22
|
+
# 1. Configure MADEINOZ_KNOWLEDGE_* variables in $PAI_DIR/.env (or ~/.claude/.env)
|
|
23
|
+
# 2. Build custom image: docker build -t madeinoz-knowledge-system:fixed .
|
|
24
|
+
# 3. Run: bun run server start (PREFERRED - auto-generates env files)
|
|
25
|
+
# Or legacy: bun run src/server/run.ts OR ./src/server/start.sh
|
|
26
|
+
# 4. MCP server uses HTTP transport at: http://localhost:8000/mcp
|
|
27
|
+
# 5. Access FalkorDB web UI at: http://localhost:3000
|
|
28
|
+
#
|
|
29
|
+
# Monitoring (optional):
|
|
30
|
+
# docker compose -f src/skills/server/docker-compose-falkordb.yml --profile monitoring up -d
|
|
31
|
+
# Access:
|
|
32
|
+
# - Prometheus UI: http://localhost:9092
|
|
33
|
+
# - Grafana: http://localhost:3002 (admin/admin)
|
|
34
|
+
#
|
|
35
|
+
# NOTE: The preferred 'bun run server start' command auto-generates the required
|
|
36
|
+
# /tmp/madeinoz-knowledge-*.env files from your PAI configuration.
|
|
37
|
+
|
|
38
|
+
networks:
|
|
39
|
+
madeinoz-knowledge-net:
|
|
40
|
+
driver: bridge
|
|
41
|
+
|
|
42
|
+
volumes:
|
|
43
|
+
falkordb-data:
|
|
44
|
+
driver: local
|
|
45
|
+
prometheus-data:
|
|
46
|
+
driver: local
|
|
47
|
+
grafana-data:
|
|
48
|
+
driver: local
|
|
49
|
+
|
|
50
|
+
services:
|
|
51
|
+
# FalkorDB Graph Database
|
|
52
|
+
# Redis-based graph database
|
|
53
|
+
falkordb:
|
|
54
|
+
image: falkordb/falkordb:latest
|
|
55
|
+
container_name: madeinoz-knowledge-falkordb
|
|
56
|
+
restart: unless-stopped
|
|
57
|
+
networks:
|
|
58
|
+
- madeinoz-knowledge-net
|
|
59
|
+
ports:
|
|
60
|
+
- "3000:3000" # FalkorDB web UI
|
|
61
|
+
volumes:
|
|
62
|
+
- falkordb-data:/data
|
|
63
|
+
environment:
|
|
64
|
+
- FALKORDB_PASSWORD=
|
|
65
|
+
healthcheck:
|
|
66
|
+
test: ["CMD", "redis-cli", "ping"]
|
|
67
|
+
interval: 10s
|
|
68
|
+
timeout: 5s
|
|
69
|
+
retries: 5
|
|
70
|
+
start_period: 20s
|
|
71
|
+
|
|
72
|
+
# Graphiti MCP Server (FalkorDB backend)
|
|
73
|
+
# Environment variables provided via env_file generated by start.sh
|
|
74
|
+
graphiti-mcp:
|
|
75
|
+
image: ghcr.io/madeinoz67/madeinoz-knowledge-system:latest
|
|
76
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
77
|
+
restart: unless-stopped
|
|
78
|
+
networks:
|
|
79
|
+
- madeinoz-knowledge-net
|
|
80
|
+
ports:
|
|
81
|
+
- "8000:8000" # MCP HTTP endpoint
|
|
82
|
+
- "9090:9090" # Prometheus metrics endpoint
|
|
83
|
+
env_file:
|
|
84
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
85
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
86
|
+
environment:
|
|
87
|
+
# Logging: INFO for production (set DEBUG manually for troubleshooting)
|
|
88
|
+
- LOG_LEVEL=INFO
|
|
89
|
+
depends_on:
|
|
90
|
+
falkordb:
|
|
91
|
+
condition: service_healthy
|
|
92
|
+
healthcheck:
|
|
93
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
94
|
+
interval: 30s
|
|
95
|
+
timeout: 10s
|
|
96
|
+
retries: 3
|
|
97
|
+
start_period: 40s
|
|
98
|
+
|
|
99
|
+
# Prometheus Metrics Server (Production)
|
|
100
|
+
# Only started when --profile monitoring is specified
|
|
101
|
+
prometheus:
|
|
102
|
+
image: prom/prometheus:latest
|
|
103
|
+
container_name: madeinoz-knowledge-prometheus
|
|
104
|
+
profiles: [monitoring]
|
|
105
|
+
restart: unless-stopped
|
|
106
|
+
networks:
|
|
107
|
+
- madeinoz-knowledge-net
|
|
108
|
+
ports:
|
|
109
|
+
- "9092:9090" # Prometheus UI
|
|
110
|
+
volumes:
|
|
111
|
+
- prometheus-data:/prometheus
|
|
112
|
+
- ../../../config/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
113
|
+
command:
|
|
114
|
+
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
115
|
+
- '--storage.tsdb.path=/prometheus'
|
|
116
|
+
- '--web.enable-lifecycle'
|
|
117
|
+
- '--storage.tsdb.retention.time=30d'
|
|
118
|
+
depends_on:
|
|
119
|
+
graphiti-mcp:
|
|
120
|
+
condition: service_healthy
|
|
121
|
+
healthcheck:
|
|
122
|
+
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"]
|
|
123
|
+
interval: 30s
|
|
124
|
+
timeout: 10s
|
|
125
|
+
retries: 3
|
|
126
|
+
start_period: 10s
|
|
127
|
+
|
|
128
|
+
# Grafana Dashboard (Production)
|
|
129
|
+
# Only started when --profile monitoring is specified
|
|
130
|
+
grafana:
|
|
131
|
+
image: grafana/grafana:latest
|
|
132
|
+
container_name: madeinoz-knowledge-grafana
|
|
133
|
+
profiles: [monitoring]
|
|
134
|
+
restart: unless-stopped
|
|
135
|
+
networks:
|
|
136
|
+
- madeinoz-knowledge-net
|
|
137
|
+
ports:
|
|
138
|
+
- "3002:3000" # Grafana UI (port offset to avoid FalkorDB UI conflict)
|
|
139
|
+
volumes:
|
|
140
|
+
- grafana-data:/var/lib/grafana
|
|
141
|
+
- ../../../config/monitoring/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
|
|
142
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/etc/grafana/provisioning/dashboards:ro
|
|
143
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/var/lib/grafana/dashboards:ro
|
|
144
|
+
environment:
|
|
145
|
+
- GF_SECURITY_ADMIN_USER=admin
|
|
146
|
+
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
|
|
147
|
+
- GF_USERS_ALLOW_SIGN_UP=false
|
|
148
|
+
- GF_SERVER_ROOT_URL=http://localhost:3002
|
|
149
|
+
depends_on:
|
|
150
|
+
prometheus:
|
|
151
|
+
condition: service_healthy
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Docker Compose configuration for Madeinoz Knowledge System with Neo4j backend
|
|
2
|
+
# Alternative to FalkorDB - uses Neo4j for the graph database
|
|
3
|
+
|
|
4
|
+
name: madeinoz-knowledge-system
|
|
5
|
+
#
|
|
6
|
+
# Services:
|
|
7
|
+
# - neo4j: Graph database backend (Cypher queries)
|
|
8
|
+
# - graphiti-mcp: MCP server (exposed to host)
|
|
9
|
+
# - prometheus: Metrics server (optional, via --profile monitoring)
|
|
10
|
+
# - grafana: Dashboard (optional, via --profile monitoring)
|
|
11
|
+
#
|
|
12
|
+
# Madeinoz Patches APPLIED:
|
|
13
|
+
# 1. entrypoint.sh - Maps MADEINOZ_KNOWLEDGE_* prefixed variables to unprefixed
|
|
14
|
+
# container variables. This keeps .env clean while providing what container expects.
|
|
15
|
+
#
|
|
16
|
+
# IMPORTANT NOTE - Docker Compose v2.14 Bug on macOS:
|
|
17
|
+
# If you get "key cannot contain a space" error, use the workaround:
|
|
18
|
+
# 1. Create file in /tmp: git show HEAD:src/server/docker-compose-neo4j.yml > /tmp/docker-compose-neo4j.yml
|
|
19
|
+
# 2. Run: docker compose -f /tmp/docker-compose-neo4j.yml up -d
|
|
20
|
+
#
|
|
21
|
+
# Usage from pack directory:
|
|
22
|
+
# 1. Configure MADEINOZ_KNOWLEDGE_* variables in $PAI_DIR/.env (or ~/.claude/.env)
|
|
23
|
+
# 2. Build custom image: docker build -t madeinoz-knowledge-system:fixed .
|
|
24
|
+
# 3. Run: bun run server start (PREFERRED - auto-generates env files)
|
|
25
|
+
# Or legacy: bun run src/server/run.ts OR ./src/server/start.sh
|
|
26
|
+
# 4. MCP server uses HTTP transport at: http://localhost:8000/mcp
|
|
27
|
+
# 5. Access Neo4j Browser at: http://localhost:7474
|
|
28
|
+
#
|
|
29
|
+
# Monitoring (optional):
|
|
30
|
+
# docker compose -f src/skills/server/docker-compose-neo4j.yml --profile monitoring up -d
|
|
31
|
+
# Access:
|
|
32
|
+
# - Prometheus UI: http://localhost:9092
|
|
33
|
+
# - Grafana: http://localhost:3001 (admin/admin)
|
|
34
|
+
#
|
|
35
|
+
# NOTE: The preferred 'bun run server start' command auto-generates the required
|
|
36
|
+
# /tmp/madeinoz-knowledge-*.env files from your PAI configuration.
|
|
37
|
+
|
|
38
|
+
networks:
|
|
39
|
+
madeinoz-knowledge-net:
|
|
40
|
+
driver: bridge
|
|
41
|
+
|
|
42
|
+
volumes:
|
|
43
|
+
neo4j-data:
|
|
44
|
+
driver: local
|
|
45
|
+
neo4j-logs:
|
|
46
|
+
driver: local
|
|
47
|
+
prometheus-data:
|
|
48
|
+
driver: local
|
|
49
|
+
grafana-data:
|
|
50
|
+
driver: local
|
|
51
|
+
|
|
52
|
+
services:
|
|
53
|
+
# Neo4j Graph Database
|
|
54
|
+
# Native graph database with Cypher query language
|
|
55
|
+
neo4j:
|
|
56
|
+
image: neo4j:latest
|
|
57
|
+
container_name: madeinoz-knowledge-neo4j
|
|
58
|
+
restart: unless-stopped
|
|
59
|
+
networks:
|
|
60
|
+
- madeinoz-knowledge-net
|
|
61
|
+
ports:
|
|
62
|
+
- "7474:7474" # Neo4j Browser HTTP
|
|
63
|
+
- "7687:7687" # Bolt protocol
|
|
64
|
+
volumes:
|
|
65
|
+
- neo4j-data:/data
|
|
66
|
+
- neo4j-logs:/logs
|
|
67
|
+
environment:
|
|
68
|
+
# NEO4J_PASSWORD interpolated from host env (start.sh exports it)
|
|
69
|
+
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:-madeinozknowledge}
|
|
70
|
+
- NEO4J_server_memory_heap_initial__size=512m
|
|
71
|
+
- NEO4J_server_memory_heap_max__size=1G
|
|
72
|
+
- NEO4J_server_memory_pagecache_size=512m
|
|
73
|
+
- NEO4J_dbms_usage__report_enabled=false
|
|
74
|
+
healthcheck:
|
|
75
|
+
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
|
|
76
|
+
interval: 10s
|
|
77
|
+
timeout: 5s
|
|
78
|
+
retries: 5
|
|
79
|
+
start_period: 60s
|
|
80
|
+
|
|
81
|
+
# Graphiti MCP Server (Neo4j backend)
|
|
82
|
+
# Environment variables provided via env_file generated by start.sh
|
|
83
|
+
graphiti-mcp:
|
|
84
|
+
image: madeinozknowledge-system:local
|
|
85
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
86
|
+
restart: unless-stopped
|
|
87
|
+
networks:
|
|
88
|
+
- madeinoz-knowledge-net
|
|
89
|
+
ports:
|
|
90
|
+
- "8000:8000" # MCP HTTP endpoint
|
|
91
|
+
- "9090:9090" # Prometheus metrics endpoint
|
|
92
|
+
env_file:
|
|
93
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
94
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
95
|
+
environment:
|
|
96
|
+
# Logging: INFO for production (set DEBUG manually for troubleshooting)
|
|
97
|
+
- LOG_LEVEL=INFO
|
|
98
|
+
depends_on:
|
|
99
|
+
neo4j:
|
|
100
|
+
condition: service_healthy
|
|
101
|
+
healthcheck:
|
|
102
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
103
|
+
interval: 30s
|
|
104
|
+
timeout: 10s
|
|
105
|
+
retries: 3
|
|
106
|
+
start_period: 40s
|
|
107
|
+
command: ["uv", "run", "main.py"]
|
|
108
|
+
|
|
109
|
+
# Prometheus Metrics Server (Production)
|
|
110
|
+
# Only started when --profile monitoring is specified
|
|
111
|
+
prometheus:
|
|
112
|
+
image: prom/prometheus:latest
|
|
113
|
+
container_name: madeinoz-knowledge-prometheus
|
|
114
|
+
profiles: [monitoring]
|
|
115
|
+
restart: unless-stopped
|
|
116
|
+
networks:
|
|
117
|
+
- madeinoz-knowledge-net
|
|
118
|
+
ports:
|
|
119
|
+
- "9092:9090" # Prometheus UI
|
|
120
|
+
volumes:
|
|
121
|
+
- prometheus-data:/prometheus
|
|
122
|
+
- ../../../config/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
123
|
+
command:
|
|
124
|
+
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
125
|
+
- '--storage.tsdb.path=/prometheus'
|
|
126
|
+
- '--web.enable-lifecycle'
|
|
127
|
+
- '--storage.tsdb.retention.time=30d'
|
|
128
|
+
depends_on:
|
|
129
|
+
graphiti-mcp:
|
|
130
|
+
condition: service_healthy
|
|
131
|
+
healthcheck:
|
|
132
|
+
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"]
|
|
133
|
+
interval: 30s
|
|
134
|
+
timeout: 10s
|
|
135
|
+
retries: 3
|
|
136
|
+
start_period: 10s
|
|
137
|
+
|
|
138
|
+
# Grafana Dashboard (Production)
|
|
139
|
+
# Only started when --profile monitoring is specified
|
|
140
|
+
grafana:
|
|
141
|
+
image: grafana/grafana:latest
|
|
142
|
+
container_name: madeinoz-knowledge-grafana
|
|
143
|
+
profiles: [monitoring]
|
|
144
|
+
restart: unless-stopped
|
|
145
|
+
networks:
|
|
146
|
+
- madeinoz-knowledge-net
|
|
147
|
+
ports:
|
|
148
|
+
- "3001:3000" # Grafana UI
|
|
149
|
+
volumes:
|
|
150
|
+
- grafana-data:/var/lib/grafana
|
|
151
|
+
- ../../../config/monitoring/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
|
|
152
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/etc/grafana/provisioning/dashboards:ro
|
|
153
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/var/lib/grafana/dashboards:ro
|
|
154
|
+
environment:
|
|
155
|
+
- GF_SECURITY_ADMIN_USER=admin
|
|
156
|
+
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
|
|
157
|
+
- GF_USERS_ALLOW_SIGN_UP=false
|
|
158
|
+
- GF_SERVER_ROOT_URL=http://localhost:3001
|
|
159
|
+
depends_on:
|
|
160
|
+
prometheus:
|
|
161
|
+
condition: service_healthy
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Docker Compose configuration for Madeinoz Knowledge System - DEVELOPMENT
|
|
2
|
+
# Uses locally-built Docker image for testing code changes (Feature 009 memory decay scoring)
|
|
3
|
+
#
|
|
4
|
+
# Differences from production:
|
|
5
|
+
# - Uses local image: madeinoz-knowledge-system:local
|
|
6
|
+
# - Dev ports: Neo4j Browser 7475, MCP 8001, Metrics 9091
|
|
7
|
+
# - Dev container names with -dev suffix
|
|
8
|
+
# - Dev env files: /tmp/madeinoz-knowledge-*-dev.env
|
|
9
|
+
# - Dev volumes: dev-* prefixed to isolate from production
|
|
10
|
+
# - Dev network: madeinoz-knowledge-dev-net
|
|
11
|
+
#
|
|
12
|
+
# Build local image:
|
|
13
|
+
# docker build -t madeinoz-knowledge-system:local -f docker/Dockerfile .
|
|
14
|
+
#
|
|
15
|
+
# Start dev server:
|
|
16
|
+
# bun run server-cli start --dev
|
|
17
|
+
#
|
|
18
|
+
# Access points:
|
|
19
|
+
# - Neo4j Browser: http://localhost:7475
|
|
20
|
+
# - MCP Server: http://localhost:8001
|
|
21
|
+
# - Prometheus Metrics: http://localhost:9091/metrics
|
|
22
|
+
# - Prometheus UI: http://localhost:9093
|
|
23
|
+
# - Grafana: http://localhost:3002 (admin/admin)
|
|
24
|
+
#
|
|
25
|
+
# Port Mapping (Dev vs Prod):
|
|
26
|
+
# Dev -> Prod
|
|
27
|
+
# 7475 -> 7474 (Neo4j Browser)
|
|
28
|
+
# 7688 -> 7687 (Neo4j Bolt)
|
|
29
|
+
# 8001 -> 8000 (MCP Server)
|
|
30
|
+
# 9091 -> 9090 (Prometheus Metrics)
|
|
31
|
+
# 9093 -> 9092 (Prometheus UI)
|
|
32
|
+
# 3002 -> 3001 (Grafana)
|
|
33
|
+
|
|
34
|
+
name: madeinoz-knowledge-system-dev
|
|
35
|
+
|
|
36
|
+
networks:
|
|
37
|
+
madeinoz-knowledge-dev-net:
|
|
38
|
+
driver: bridge
|
|
39
|
+
|
|
40
|
+
volumes:
|
|
41
|
+
dev-neo4j-data:
|
|
42
|
+
driver: local
|
|
43
|
+
dev-neo4j-logs:
|
|
44
|
+
driver: local
|
|
45
|
+
dev-prometheus-data:
|
|
46
|
+
driver: local
|
|
47
|
+
dev-grafana-data:
|
|
48
|
+
driver: local
|
|
49
|
+
|
|
50
|
+
services:
|
|
51
|
+
# Neo4j Graph Database (Development)
|
|
52
|
+
neo4j:
|
|
53
|
+
image: neo4j:latest
|
|
54
|
+
container_name: madeinoz-knowledge-neo4j-dev
|
|
55
|
+
restart: unless-stopped
|
|
56
|
+
networks:
|
|
57
|
+
- madeinoz-knowledge-dev-net
|
|
58
|
+
ports:
|
|
59
|
+
- "7475:7474" # Neo4j Browser HTTP (dev port)
|
|
60
|
+
- "7688:7687" # Bolt protocol (dev port)
|
|
61
|
+
volumes:
|
|
62
|
+
- dev-neo4j-data:/data
|
|
63
|
+
- dev-neo4j-logs:/logs
|
|
64
|
+
environment:
|
|
65
|
+
# Hardcoded dev password for development
|
|
66
|
+
- NEO4J_AUTH=neo4j/devpassword
|
|
67
|
+
- NEO4J_server_memory_heap_initial__size=256m
|
|
68
|
+
- NEO4J_server_memory_heap_max__size=512m
|
|
69
|
+
- NEO4J_server_memory_pagecache_size=256m
|
|
70
|
+
- NEO4J_dbms_usage__report_enabled=false
|
|
71
|
+
healthcheck:
|
|
72
|
+
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
|
|
73
|
+
interval: 10s
|
|
74
|
+
timeout: 5s
|
|
75
|
+
retries: 5
|
|
76
|
+
start_period: 60s
|
|
77
|
+
|
|
78
|
+
# Graphiti MCP Server (Development)
|
|
79
|
+
# Uses locally built image with Feature 009 memory decay scoring
|
|
80
|
+
graphiti-mcp:
|
|
81
|
+
image: madeinoz-knowledge-system:local
|
|
82
|
+
container_name: madeinoz-knowledge-graph-mcp-dev
|
|
83
|
+
restart: unless-stopped
|
|
84
|
+
networks:
|
|
85
|
+
- madeinoz-knowledge-dev-net
|
|
86
|
+
ports:
|
|
87
|
+
- "8001:8000" # MCP HTTP endpoint (dev port)
|
|
88
|
+
- "9091:9090" # Prometheus metrics endpoint (dev port)
|
|
89
|
+
env_file:
|
|
90
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
91
|
+
- /tmp/madeinoz-knowledge-mcp-dev.env
|
|
92
|
+
environment:
|
|
93
|
+
# Hardcoded dev password for development (overrides env_file)
|
|
94
|
+
- NEO4J_PASSWORD=devpassword
|
|
95
|
+
# Logging: DEBUG for development (verbose output)
|
|
96
|
+
- LOG_LEVEL=DEBUG
|
|
97
|
+
# Enable prompt caching for development/testing
|
|
98
|
+
- PROMPT_CACHE_ENABLED=true
|
|
99
|
+
- PROMPT_CACHE_METRICS_ENABLED=true
|
|
100
|
+
depends_on:
|
|
101
|
+
neo4j:
|
|
102
|
+
condition: service_healthy
|
|
103
|
+
healthcheck:
|
|
104
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
105
|
+
interval: 30s
|
|
106
|
+
timeout: 10s
|
|
107
|
+
retries: 3
|
|
108
|
+
start_period: 40s
|
|
109
|
+
command: ["uv", "run", "main.py"]
|
|
110
|
+
|
|
111
|
+
# Prometheus Metrics Server (Development)
|
|
112
|
+
# Scrapes metrics from graphiti-mcp service
|
|
113
|
+
prometheus:
|
|
114
|
+
image: prom/prometheus:latest
|
|
115
|
+
container_name: madeinoz-knowledge-prometheus-dev
|
|
116
|
+
restart: unless-stopped
|
|
117
|
+
networks:
|
|
118
|
+
- madeinoz-knowledge-dev-net
|
|
119
|
+
ports:
|
|
120
|
+
- "9093:9090" # Prometheus UI (dev port)
|
|
121
|
+
volumes:
|
|
122
|
+
- dev-prometheus-data:/prometheus
|
|
123
|
+
- ../../../config/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
124
|
+
command:
|
|
125
|
+
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
126
|
+
- '--storage.tsdb.path=/prometheus'
|
|
127
|
+
- '--web.enable-lifecycle'
|
|
128
|
+
- '--storage.tsdb.retention.time=15d'
|
|
129
|
+
depends_on:
|
|
130
|
+
graphiti-mcp:
|
|
131
|
+
condition: service_healthy
|
|
132
|
+
healthcheck:
|
|
133
|
+
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"]
|
|
134
|
+
interval: 30s
|
|
135
|
+
timeout: 10s
|
|
136
|
+
retries: 3
|
|
137
|
+
start_period: 10s
|
|
138
|
+
|
|
139
|
+
# Grafana Dashboard (Development)
|
|
140
|
+
# Pre-configured with Prometheus datasource and dashboards
|
|
141
|
+
grafana:
|
|
142
|
+
image: grafana/grafana:latest
|
|
143
|
+
container_name: madeinoz-knowledge-grafana-dev
|
|
144
|
+
restart: unless-stopped
|
|
145
|
+
networks:
|
|
146
|
+
- madeinoz-knowledge-dev-net
|
|
147
|
+
ports:
|
|
148
|
+
- "3002:3000" # Grafana UI (dev port)
|
|
149
|
+
volumes:
|
|
150
|
+
- dev-grafana-data:/var/lib/grafana
|
|
151
|
+
- ../../../config/monitoring/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
|
|
152
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/etc/grafana/provisioning/dashboards:ro
|
|
153
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/var/lib/grafana/dashboards:ro
|
|
154
|
+
environment:
|
|
155
|
+
- GF_SECURITY_ADMIN_USER=admin
|
|
156
|
+
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
|
|
157
|
+
- GF_USERS_ALLOW_SIGN_UP=false
|
|
158
|
+
- GF_SERVER_ROOT_URL=http://localhost:3002
|
|
159
|
+
depends_on:
|
|
160
|
+
prometheus:
|
|
161
|
+
condition: service_healthy
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Docker Compose configuration for Madeinoz Knowledge System with Neo4j backend
|
|
2
|
+
# Alternative to FalkorDB - uses Neo4j for the graph database
|
|
3
|
+
|
|
4
|
+
name: madeinoz-knowledge-system
|
|
5
|
+
#
|
|
6
|
+
# Services:
|
|
7
|
+
# - neo4j: Graph database backend (Cypher queries)
|
|
8
|
+
# - graphiti-mcp: MCP server (exposed to host)
|
|
9
|
+
# - prometheus: Metrics server (optional, via --profile monitoring)
|
|
10
|
+
# - grafana: Dashboard (optional, via --profile monitoring)
|
|
11
|
+
#
|
|
12
|
+
# Madeinoz Patches APPLIED:
|
|
13
|
+
# 1. entrypoint.sh - Maps MADEINOZ_KNOWLEDGE_* prefixed variables to unprefixed
|
|
14
|
+
# container variables. This keeps .env clean while providing what container expects.
|
|
15
|
+
#
|
|
16
|
+
# IMPORTANT NOTE - Docker Compose v2.14 Bug on macOS:
|
|
17
|
+
# If you get "key cannot contain a space" error, use the workaround:
|
|
18
|
+
# 1. Create file in /tmp: git show HEAD:src/server/docker-compose-neo4j.yml > /tmp/docker-compose-neo4j.yml
|
|
19
|
+
# 2. Run: docker compose -f /tmp/docker-compose-neo4j.yml up -d
|
|
20
|
+
#
|
|
21
|
+
# Usage from pack directory:
|
|
22
|
+
# 1. Configure MADEINOZ_KNOWLEDGE_* variables in $PAI_DIR/.env (or ~/.claude/.env)
|
|
23
|
+
# 2. Build custom image: docker build -t madeinoz-knowledge-system:fixed .
|
|
24
|
+
# 3. Run: bun run server start (PREFERRED - auto-generates env files)
|
|
25
|
+
# Or legacy: bun run src/server/run.ts OR ./src/server/start.sh
|
|
26
|
+
# 4. MCP server uses HTTP transport at: http://localhost:8000/mcp
|
|
27
|
+
# 5. Access Neo4j Browser at: http://localhost:7474
|
|
28
|
+
#
|
|
29
|
+
# Monitoring (optional):
|
|
30
|
+
# docker compose -f src/skills/server/docker-compose-neo4j.yml --profile monitoring up -d
|
|
31
|
+
# Access:
|
|
32
|
+
# - Prometheus UI: http://localhost:9092
|
|
33
|
+
# - Grafana: http://localhost:3001 (admin/admin)
|
|
34
|
+
#
|
|
35
|
+
# NOTE: The preferred 'bun run server start' command auto-generates the required
|
|
36
|
+
# /tmp/madeinoz-knowledge-*.env files from your PAI configuration.
|
|
37
|
+
|
|
38
|
+
networks:
|
|
39
|
+
madeinoz-knowledge-net:
|
|
40
|
+
driver: bridge
|
|
41
|
+
|
|
42
|
+
volumes:
|
|
43
|
+
neo4j-data:
|
|
44
|
+
driver: local
|
|
45
|
+
neo4j-logs:
|
|
46
|
+
driver: local
|
|
47
|
+
prometheus-data:
|
|
48
|
+
driver: local
|
|
49
|
+
grafana-data:
|
|
50
|
+
driver: local
|
|
51
|
+
|
|
52
|
+
services:
|
|
53
|
+
# Neo4j Graph Database
|
|
54
|
+
# Native graph database with Cypher query language
|
|
55
|
+
neo4j:
|
|
56
|
+
image: neo4j:latest
|
|
57
|
+
container_name: madeinoz-knowledge-neo4j
|
|
58
|
+
restart: unless-stopped
|
|
59
|
+
networks:
|
|
60
|
+
- madeinoz-knowledge-net
|
|
61
|
+
ports:
|
|
62
|
+
- "7474:7474" # Neo4j Browser HTTP
|
|
63
|
+
- "7687:7687" # Bolt protocol
|
|
64
|
+
volumes:
|
|
65
|
+
- neo4j-data:/data
|
|
66
|
+
- neo4j-logs:/logs
|
|
67
|
+
environment:
|
|
68
|
+
# NEO4J_PASSWORD interpolated from host env (start.sh exports it)
|
|
69
|
+
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:-madeinozknowledge}
|
|
70
|
+
- NEO4J_server_memory_heap_initial__size=512m
|
|
71
|
+
- NEO4J_server_memory_heap_max__size=1G
|
|
72
|
+
- NEO4J_server_memory_pagecache_size=512m
|
|
73
|
+
- NEO4J_dbms_usage__report_enabled=false
|
|
74
|
+
healthcheck:
|
|
75
|
+
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
|
|
76
|
+
interval: 10s
|
|
77
|
+
timeout: 5s
|
|
78
|
+
retries: 5
|
|
79
|
+
start_period: 60s
|
|
80
|
+
|
|
81
|
+
# Graphiti MCP Server (Neo4j backend)
|
|
82
|
+
# Environment variables provided via env_file generated by start.sh
|
|
83
|
+
graphiti-mcp:
|
|
84
|
+
image: ghcr.io/madeinoz67/madeinoz-knowledge-system:1.8.3
|
|
85
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
86
|
+
restart: unless-stopped
|
|
87
|
+
networks:
|
|
88
|
+
- madeinoz-knowledge-net
|
|
89
|
+
ports:
|
|
90
|
+
- "8000:8000" # MCP HTTP endpoint
|
|
91
|
+
- "9090:9090" # Prometheus metrics endpoint
|
|
92
|
+
env_file:
|
|
93
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
94
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
95
|
+
environment:
|
|
96
|
+
# Logging: INFO for production (set DEBUG manually for troubleshooting)
|
|
97
|
+
- LOG_LEVEL=INFO
|
|
98
|
+
depends_on:
|
|
99
|
+
neo4j:
|
|
100
|
+
condition: service_healthy
|
|
101
|
+
healthcheck:
|
|
102
|
+
test:
|
|
103
|
+
[
|
|
104
|
+
"CMD",
|
|
105
|
+
"curl",
|
|
106
|
+
"-sf",
|
|
107
|
+
"--max-time",
|
|
108
|
+
"5",
|
|
109
|
+
"http://localhost:8000/health",
|
|
110
|
+
]
|
|
111
|
+
interval: 30s
|
|
112
|
+
timeout: 10s
|
|
113
|
+
retries: 3
|
|
114
|
+
start_period: 40s
|
|
115
|
+
command: ["uv", "run", "main.py"]
|
|
116
|
+
|
|
117
|
+
# Prometheus Metrics Server (Production)
|
|
118
|
+
# Only started when --profile monitoring is specified
|
|
119
|
+
prometheus:
|
|
120
|
+
image: prom/prometheus:latest
|
|
121
|
+
container_name: madeinoz-knowledge-prometheus
|
|
122
|
+
profiles: [monitoring]
|
|
123
|
+
restart: unless-stopped
|
|
124
|
+
networks:
|
|
125
|
+
- madeinoz-knowledge-net
|
|
126
|
+
ports:
|
|
127
|
+
- "9092:9090" # Prometheus UI
|
|
128
|
+
volumes:
|
|
129
|
+
- prometheus-data:/prometheus
|
|
130
|
+
- ../../../config/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
131
|
+
command:
|
|
132
|
+
- "--config.file=/etc/prometheus/prometheus.yml"
|
|
133
|
+
- "--storage.tsdb.path=/prometheus"
|
|
134
|
+
- "--web.enable-lifecycle"
|
|
135
|
+
- "--storage.tsdb.retention.time=30d"
|
|
136
|
+
depends_on:
|
|
137
|
+
graphiti-mcp:
|
|
138
|
+
condition: service_healthy
|
|
139
|
+
healthcheck:
|
|
140
|
+
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"]
|
|
141
|
+
interval: 30s
|
|
142
|
+
timeout: 10s
|
|
143
|
+
retries: 3
|
|
144
|
+
start_period: 10s
|
|
145
|
+
|
|
146
|
+
# Grafana Dashboard (Production)
|
|
147
|
+
# Only started when --profile monitoring is specified
|
|
148
|
+
grafana:
|
|
149
|
+
image: grafana/grafana:latest
|
|
150
|
+
container_name: madeinoz-knowledge-grafana
|
|
151
|
+
profiles: [monitoring]
|
|
152
|
+
restart: unless-stopped
|
|
153
|
+
networks:
|
|
154
|
+
- madeinoz-knowledge-net
|
|
155
|
+
ports:
|
|
156
|
+
- "3001:3000" # Grafana UI
|
|
157
|
+
volumes:
|
|
158
|
+
- grafana-data:/var/lib/grafana
|
|
159
|
+
- ../../../config/monitoring/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
|
|
160
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/etc/grafana/provisioning/dashboards:ro
|
|
161
|
+
- ../../../config/monitoring/grafana/knowledge-system/dashboards:/var/lib/grafana/dashboards:ro
|
|
162
|
+
environment:
|
|
163
|
+
- GF_SECURITY_ADMIN_USER=admin
|
|
164
|
+
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
|
|
165
|
+
- GF_USERS_ALLOW_SIGN_UP=false
|
|
166
|
+
- GF_SERVER_ROOT_URL=http://localhost:3001
|
|
167
|
+
depends_on:
|
|
168
|
+
prometheus:
|
|
169
|
+
condition: service_healthy
|