@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.
Files changed (70) hide show
  1. package/.deepquark/skills/bundled/knowledge-graph/SKILL.md +385 -0
  2. package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
  3. package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
  4. package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
  5. package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
  6. package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
  7. package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
  8. package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
  9. package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
  10. package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
  11. package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
  12. package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
  13. package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
  14. package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
  15. package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
  16. package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
  17. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
  18. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
  19. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
  20. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
  21. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
  22. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
  23. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
  24. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
  25. package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
  26. package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
  27. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
  28. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
  29. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
  30. package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
  31. package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
  32. package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
  33. package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
  34. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
  35. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
  36. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
  37. package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
  38. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
  39. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
  40. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
  41. package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
  42. package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
  43. package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
  44. package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
  45. package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
  46. package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
  47. package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
  48. package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
  49. package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
  50. package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
  51. package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
  52. package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
  53. package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
  54. package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
  55. package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
  56. package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
  57. package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
  58. package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
  59. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
  60. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
  61. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
  62. package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -0
  63. package/bin/deepquark +0 -0
  64. package/package.json +1 -1
  65. package/.deepquark/skills/bundled/ge-payroll/SKILL.md +0 -153
  66. package/.deepquark/skills/bundled/ge-payroll/evals/evals.json +0 -23
  67. package/.deepquark/skills/bundled/ge-payroll/references/pain-points-improvements.md +0 -106
  68. package/.deepquark/skills/bundled/ge-payroll/references/process-detail.md +0 -217
  69. package/.deepquark/skills/bundled/ge-payroll/references/raci-stakeholders.md +0 -85
  70. 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