-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
206 lines (201 loc) · 14.2 KB
/
docker-compose.yml
File metadata and controls
206 lines (201 loc) · 14.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
services:
postgres:
image: pgvector/pgvector:pg16
environment:
POSTGRES_USER: mnemos_user
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-mnemos_local}
POSTGRES_DB: mnemos
volumes:
- postgres_data:/var/lib/postgresql/data
# Migration ordering must match mnemos/installer/db.py::run_migrations()
# (see EVOLUTION.md "decisions we would revisit" — the two
# canonical ordering sites must stay in sync until we move to
# Alembic or sqitch).
- ./db/migrations.sql:/docker-entrypoint-initdb.d/01-schema.sql
- ./db/migrations_v1_multiuser.sql:/docker-entrypoint-initdb.d/02-multiuser.sql
- ./db/migrations_v2_versioning.sql:/docker-entrypoint-initdb.d/03-versioning.sql
- ./db/migrations_v2_sessions.sql:/docker-entrypoint-initdb.d/04-sessions.sql
- ./db/migrations_model_registry.sql:/docker-entrypoint-initdb.d/05-model-registry.sql
- ./db/migrations_v3_dag.sql:/docker-entrypoint-initdb.d/06-dag.sql
- ./db/migrations_v3_graeae_unified.sql:/docker-entrypoint-initdb.d/07-graeae-unified.sql
- ./db/migrations_v3_webhooks.sql:/docker-entrypoint-initdb.d/08-webhooks.sql
- ./db/migrations_v3_oauth.sql:/docker-entrypoint-initdb.d/09-oauth.sql
- ./db/migrations_v3_federation.sql:/docker-entrypoint-initdb.d/10-federation.sql
- ./db/migrations_v3_ownership.sql:/docker-entrypoint-initdb.d/11-ownership.sql
- ./db/migrations_v3_1_compression.sql:/docker-entrypoint-initdb.d/12-compression.sql
- ./db/migrations_v3_1_versioning_fix.sql:/docker-entrypoint-initdb.d/13-versioning-fix.sql
- ./db/migrations_v3_1_2_kg_tenancy.sql:/docker-entrypoint-initdb.d/14-kg-tenancy.sql
- ./db/migrations_v3_1_2_audit_log_columns.sql:/docker-entrypoint-initdb.d/15-audit-log-columns.sql
- ./db/migrations_v3_2_user_namespace.sql:/docker-entrypoint-initdb.d/16-user-namespace.sql
- ./db/migrations_v3_2_entities_namespace.sql:/docker-entrypoint-initdb.d/17-entities-namespace.sql
- ./db/migrations_v3_2_2_version_snapshot_new_values.sql:/docker-entrypoint-initdb.d/18-version-snapshot-new-values.sql
- ./db/migrations_v3_3_morpheus.sql:/docker-entrypoint-initdb.d/19-morpheus.sql
- ./db/migrations_v3_3_morpheus_namespace.sql:/docker-entrypoint-initdb.d/20-morpheus-namespace.sql
- ./db/migrations_v3_3_recall_tracking.sql:/docker-entrypoint-initdb.d/21-recall-tracking.sql
- ./db/migrations_charon_trigger_guard.sql:/docker-entrypoint-initdb.d/22-charon-trigger-guard.sql
- ./db/migrations_v3_4_federation_compat.sql:/docker-entrypoint-initdb.d/23-federation-compat.sql
- ./db/migrations_v3_5_trigger_same_memory_parent.sql:/docker-entrypoint-initdb.d/24-trigger-same-memory-parent.sql
- ./db/migrations_v3_5_rls_group_select_unix_bits.sql:/docker-entrypoint-initdb.d/25-rls-group-select-unix-bits.sql
- ./db/migrations_v3_5_webhook_retry_terminal_state.sql:/docker-entrypoint-initdb.d/26-webhook-retry-terminal-state.sql
- ./db/migrations_v3_5_webhook_attempt_lease.sql:/docker-entrypoint-initdb.d/27-webhook-attempt-lease.sql
- ./db/migrations_v3_5_webhook_writer_revision.sql:/docker-entrypoint-initdb.d/28-webhook-writer-revision.sql
- ./db/migrations_v3_5_webhook_status_updated_at.sql:/docker-entrypoint-initdb.d/29-webhook-status-updated-at.sql
- ./db/migrations_v3_5_webhook_superseded_marker.sql:/docker-entrypoint-initdb.d/30-webhook-superseded-marker.sql
- ./db/migrations_v3_5_webhook_attempt_unique.sql:/docker-entrypoint-initdb.d/31-webhook-attempt-unique.sql
- ./db/migrations_v3_5_webhook_succeeded_unique.sql:/docker-entrypoint-initdb.d/32-webhook-succeeded-unique.sql
- ./db/migrations_v3_5_webhook_succeeded_terminal_trigger.sql:/docker-entrypoint-initdb.d/33-webhook-succeeded-terminal-trigger.sql
- ./db/migrations_v3_5_entities_namespace_unique.sql:/docker-entrypoint-initdb.d/34-entities-namespace-unique.sql
- ./db/migrations_v3_5_state_journal_namespace.sql:/docker-entrypoint-initdb.d/35-state-journal-namespace.sql
- ./db/migrations_v3_5_session_compression_ratio_drop.sql:/docker-entrypoint-initdb.d/36-session-compression-ratio-drop.sql
- ./db/migrations_v3_5_session_compression_legacy_drop.sql:/docker-entrypoint-initdb.d/37-session-compression-legacy-drop.sql
- ./db/migrations_v3_5_sessions_consultations_namespace.sql:/docker-entrypoint-initdb.d/38-sessions-consultations-namespace.sql
- ./db/migrations_v4_2_users_username.sql:/docker-entrypoint-initdb.d/39-users-username.sql
- ./db/migrations_v4_2_compression_candidates_nullable_tokens.sql:/docker-entrypoint-initdb.d/40-compression-candidates-nullable-tokens.sql
- ./db/migrations_v4_2_state_value_text.sql:/docker-entrypoint-initdb.d/41-state-value-text.sql
- ./db/migrations_v4_2_document_import_chunk_idempotency.sql:/docker-entrypoint-initdb.d/42-document-import-chunk-idempotency.sql
- ./db/migrations_v4_2_deletion_requests.sql:/docker-entrypoint-initdb.d/43-deletion-requests.sql
- ./db/migrations_v4_2_deletion_requests_blank_namespace_cleanup.sql:/docker-entrypoint-initdb.d/44-deletion-requests-blank-namespace-cleanup.sql
- ./db/migrations_v4_2_deletion_requests_soft_delete_columns.sql:/docker-entrypoint-initdb.d/45-deletion-requests-soft-delete-columns.sql
- ./db/migrations_v4_2_deletion_requests_sweep_verifying.sql:/docker-entrypoint-initdb.d/46-deletion-requests-sweep-verifying.sql
- ./db/migrations_v4_2_compression_dag.sql:/docker-entrypoint-initdb.d/47-compression-dag.sql
- ./db/migrations_v4_2_morpheus_consolidate.sql:/docker-entrypoint-initdb.d/48-morpheus-consolidate.sql
- ./db/migrations_v4_2_morpheus_extract.sql:/docker-entrypoint-initdb.d/49-morpheus-extract.sql
- ./db/migrations_v4_2_persephone.sql:/docker-entrypoint-initdb.d/50-persephone.sql
- ./db/migrations_v4_2_pantheon_routing_audit.sql:/docker-entrypoint-initdb.d/51-pantheon-routing-audit.sql
- ./db/migrations_v5_0_consolidated_at.sql:/docker-entrypoint-initdb.d/52-consolidated-at.sql
- ./db/migrations_v5_0_morpheus_extract_run_memories.sql:/docker-entrypoint-initdb.d/53-morpheus-extract-run-memories.sql
- ./db/migrations_v5_0_2_artemis_dedup.sql:/docker-entrypoint-initdb.d/54-artemis-dedup.sql
- ./db/migrations_v5_0_3_timestamp_tz_upgrade.sql:/docker-entrypoint-initdb.d/55-timestamp-tz-upgrade.sql
- ./db/migrations_v5_1_0_deletion_log.sql:/docker-entrypoint-initdb.d/56-deletion-log.sql
- ./db/migrations_v5_2_0_nats_outbox_idempotency.sql:/docker-entrypoint-initdb.d/57-nats-outbox-idempotency.sql
- ./db/migrations_v5_2_2_fts_gin_index.sql:/docker-entrypoint-initdb.d/58-fts-gin-index.sql
- ./db/migrations_v5_3_3_deletion_log_export_index.sql:/docker-entrypoint-initdb.d/59-deletion-log-export-index.sql
- ./db/migrations_v5_3_4_mcp_audit_log.sql:/docker-entrypoint-initdb.d/60-mcp-audit-log.sql
- ./db/migrations_v5_3_5_model_registry_capabilities_gin.sql:/docker-entrypoint-initdb.d/61-model-registry-capabilities-gin.sql
ports:
- '127.0.0.1:5432:5432'
healthcheck:
test: ["CMD-SHELL", "pg_isready -U mnemos_user -d mnemos"]
interval: 5s
timeout: 5s
retries: 10
postgres-upgrade:
image: pgvector/pgvector:pg16
depends_on:
postgres:
condition: service_healthy
environment:
PGPASSWORD: ${POSTGRES_PASSWORD:-mnemos_local}
volumes:
- ./db/migrations_v3_5_trigger_same_memory_parent.sql:/migrations/24-trigger-same-memory-parent.sql:ro
- ./db/migrations_v3_5_rls_group_select_unix_bits.sql:/migrations/25-rls-group-select-unix-bits.sql:ro
- ./db/migrations_v3_5_webhook_retry_terminal_state.sql:/migrations/26-webhook-retry-terminal-state.sql:ro
- ./db/migrations_v3_5_webhook_attempt_lease.sql:/migrations/27-webhook-attempt-lease.sql:ro
- ./db/migrations_v3_5_webhook_writer_revision.sql:/migrations/28-webhook-writer-revision.sql:ro
- ./db/migrations_v3_5_webhook_status_updated_at.sql:/migrations/29-webhook-status-updated-at.sql:ro
- ./db/migrations_v3_5_webhook_superseded_marker.sql:/migrations/30-webhook-superseded-marker.sql:ro
- ./db/migrations_v3_5_webhook_attempt_unique.sql:/migrations/31-webhook-attempt-unique.sql:ro
- ./db/migrations_v3_5_webhook_succeeded_unique.sql:/migrations/32-webhook-succeeded-unique.sql:ro
- ./db/migrations_v3_5_webhook_succeeded_terminal_trigger.sql:/migrations/33-webhook-succeeded-terminal-trigger.sql:ro
- ./db/migrations_v3_5_entities_namespace_unique.sql:/migrations/34-entities-namespace-unique.sql:ro
- ./db/migrations_v3_5_state_journal_namespace.sql:/migrations/35-state-journal-namespace.sql:ro
- ./db/migrations_v3_5_session_compression_ratio_drop.sql:/migrations/36-session-compression-ratio-drop.sql:ro
- ./db/migrations_v3_5_session_compression_legacy_drop.sql:/migrations/37-session-compression-legacy-drop.sql:ro
- ./db/migrations_v3_5_sessions_consultations_namespace.sql:/migrations/38-sessions-consultations-namespace.sql:ro
- ./db/migrations_v4_2_users_username.sql:/migrations/39-users-username.sql:ro
- ./db/migrations_v4_2_compression_candidates_nullable_tokens.sql:/migrations/40-compression-candidates-nullable-tokens.sql:ro
- ./db/migrations_v4_2_state_value_text.sql:/migrations/41-state-value-text.sql:ro
- ./db/migrations_v4_2_document_import_chunk_idempotency.sql:/migrations/42-document-import-chunk-idempotency.sql:ro
- ./db/migrations_v4_2_deletion_requests.sql:/migrations/43-deletion-requests.sql:ro
- ./db/migrations_v4_2_deletion_requests_blank_namespace_cleanup.sql:/migrations/44-deletion-requests-blank-namespace-cleanup.sql:ro
- ./db/migrations_v4_2_deletion_requests_soft_delete_columns.sql:/migrations/45-deletion-requests-soft-delete-columns.sql:ro
- ./db/migrations_v4_2_deletion_requests_sweep_verifying.sql:/migrations/46-deletion-requests-sweep-verifying.sql:ro
- ./db/migrations_v4_2_compression_dag.sql:/migrations/47-compression-dag.sql:ro
- ./db/migrations_v4_2_morpheus_consolidate.sql:/migrations/48-morpheus-consolidate.sql:ro
- ./db/migrations_v4_2_morpheus_extract.sql:/migrations/49-morpheus-extract.sql:ro
- ./db/migrations_v4_2_persephone.sql:/migrations/50-persephone.sql:ro
- ./db/migrations_v4_2_pantheon_routing_audit.sql:/migrations/51-pantheon-routing-audit.sql:ro
- ./db/migrations_v5_0_consolidated_at.sql:/migrations/52-consolidated-at.sql:ro
- ./db/migrations_v5_0_morpheus_extract_run_memories.sql:/migrations/53-morpheus-extract-run-memories.sql:ro
- ./db/migrations_v5_0_2_artemis_dedup.sql:/migrations/54-artemis-dedup.sql:ro
- ./db/migrations_v5_0_3_timestamp_tz_upgrade.sql:/migrations/55-timestamp-tz-upgrade.sql:ro
- ./db/migrations_v5_1_0_deletion_log.sql:/migrations/56-deletion-log.sql:ro
- ./db/migrations_v5_2_0_nats_outbox_idempotency.sql:/migrations/57-nats-outbox-idempotency.sql:ro
- ./db/migrations_v5_2_2_fts_gin_index.sql:/migrations/58-fts-gin-index.sql:ro
- ./db/migrations_v5_3_3_deletion_log_export_index.sql:/migrations/59-deletion-log-export-index.sql:ro
- ./db/migrations_v5_3_4_mcp_audit_log.sql:/migrations/60-mcp-audit-log.sql:ro
- ./db/migrations_v5_3_5_model_registry_capabilities_gin.sql:/migrations/61-model-registry-capabilities-gin.sql:ro
command: >
sh -c "psql -h postgres -U mnemos_user -d mnemos
-v ON_ERROR_STOP=1
-f /migrations/24-trigger-same-memory-parent.sql
-f /migrations/25-rls-group-select-unix-bits.sql
-f /migrations/26-webhook-retry-terminal-state.sql
-f /migrations/27-webhook-attempt-lease.sql
-f /migrations/28-webhook-writer-revision.sql
-f /migrations/29-webhook-status-updated-at.sql
-f /migrations/30-webhook-superseded-marker.sql
-f /migrations/31-webhook-attempt-unique.sql
-f /migrations/32-webhook-succeeded-unique.sql
-f /migrations/33-webhook-succeeded-terminal-trigger.sql
-f /migrations/34-entities-namespace-unique.sql
-f /migrations/35-state-journal-namespace.sql
-f /migrations/36-session-compression-ratio-drop.sql
-f /migrations/37-session-compression-legacy-drop.sql
-f /migrations/38-sessions-consultations-namespace.sql
-f /migrations/39-users-username.sql
-f /migrations/40-compression-candidates-nullable-tokens.sql
-f /migrations/41-state-value-text.sql
-f /migrations/42-document-import-chunk-idempotency.sql
-f /migrations/43-deletion-requests.sql
-f /migrations/44-deletion-requests-blank-namespace-cleanup.sql
-f /migrations/45-deletion-requests-soft-delete-columns.sql
-f /migrations/46-deletion-requests-sweep-verifying.sql
-f /migrations/47-compression-dag.sql
-f /migrations/48-morpheus-consolidate.sql
-f /migrations/49-morpheus-extract.sql
-f /migrations/50-persephone.sql
-f /migrations/51-pantheon-routing-audit.sql
-f /migrations/52-consolidated-at.sql
-f /migrations/53-morpheus-extract-run-memories.sql
-f /migrations/54-artemis-dedup.sql
-f /migrations/55-timestamp-tz-upgrade.sql
-f /migrations/56-deletion-log.sql
-f /migrations/57-nats-outbox-idempotency.sql
-f /migrations/58-fts-gin-index.sql
-f /migrations/59-deletion-log-export-index.sql
-f /migrations/60-mcp-audit-log.sql
-f /migrations/61-model-registry-capabilities-gin.sql"
restart: "no"
ollama:
image: ollama/ollama:latest
volumes:
- ollama_data:/root/.ollama
ports:
- '11434:11434'
entrypoint: >
sh -c "ollama serve & sleep 5 && ollama pull nomic-embed-text && wait"
mnemos:
build:
context: .
command: ["mnemos", "serve"]
depends_on:
postgres:
condition: service_healthy
postgres-upgrade:
condition: service_completed_successfully
environment:
PG_USER: mnemos_user
PG_PASSWORD: ${POSTGRES_PASSWORD:-mnemos_local}
PG_DATABASE: mnemos
PG_HOST: postgres
INFERENCE_EMBED_HOST: http://ollama:11434
# On Linux: use http://172.17.0.1:5001 or add --add-host=host.docker.internal:host-gateway
GRAEAE_URL: ${GRAEAE_URL:-http://host.docker.internal:5001}
MNEMOS_PROFILE: personal
ports:
- '5002:5002'
restart: unless-stopped
volumes:
postgres_data:
ollama_data: