container-superposition 0.1.7 → 0.1.9

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 (242) hide show
  1. package/README.md +24 -15
  2. package/dist/scripts/init.js +1 -1537
  3. package/dist/scripts/init.js.map +1 -1
  4. package/dist/tool/cli/args.d.ts +20 -0
  5. package/dist/tool/cli/args.d.ts.map +1 -0
  6. package/dist/tool/cli/args.js +325 -0
  7. package/dist/tool/cli/args.js.map +1 -0
  8. package/dist/tool/cli/run.d.ts +2 -0
  9. package/dist/tool/cli/run.d.ts.map +1 -0
  10. package/dist/tool/cli/run.js +318 -0
  11. package/dist/tool/cli/run.js.map +1 -0
  12. package/dist/tool/commands/adopt.js +1 -1
  13. package/dist/tool/commands/adopt.js.map +1 -1
  14. package/dist/tool/commands/doctor.d.ts +1 -0
  15. package/dist/tool/commands/doctor.d.ts.map +1 -1
  16. package/dist/tool/commands/doctor.js +1510 -78
  17. package/dist/tool/commands/doctor.js.map +1 -1
  18. package/dist/tool/commands/explain.d.ts.map +1 -1
  19. package/dist/tool/commands/explain.js +9 -0
  20. package/dist/tool/commands/explain.js.map +1 -1
  21. package/dist/tool/commands/migrate.d.ts +7 -0
  22. package/dist/tool/commands/migrate.d.ts.map +1 -0
  23. package/dist/tool/commands/migrate.js +52 -0
  24. package/dist/tool/commands/migrate.js.map +1 -0
  25. package/dist/tool/questionnaire/answers.d.ts +16 -0
  26. package/dist/tool/questionnaire/answers.d.ts.map +1 -0
  27. package/dist/tool/questionnaire/answers.js +102 -0
  28. package/dist/tool/questionnaire/answers.js.map +1 -0
  29. package/dist/tool/questionnaire/composer.d.ts +6 -4
  30. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  31. package/dist/tool/questionnaire/composer.js +778 -45
  32. package/dist/tool/questionnaire/composer.js.map +1 -1
  33. package/dist/tool/questionnaire/presets.d.ts +60 -0
  34. package/dist/tool/questionnaire/presets.d.ts.map +1 -0
  35. package/dist/tool/questionnaire/presets.js +165 -0
  36. package/dist/tool/questionnaire/presets.js.map +1 -0
  37. package/dist/tool/questionnaire/questionnaire.d.ts +10 -0
  38. package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -0
  39. package/dist/tool/questionnaire/questionnaire.js +582 -0
  40. package/dist/tool/questionnaire/questionnaire.js.map +1 -0
  41. package/dist/tool/schema/manifest-migrations.d.ts +5 -0
  42. package/dist/tool/schema/manifest-migrations.d.ts.map +1 -1
  43. package/dist/tool/schema/manifest-migrations.js +45 -0
  44. package/dist/tool/schema/manifest-migrations.js.map +1 -1
  45. package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
  46. package/dist/tool/schema/overlay-loader.js +24 -0
  47. package/dist/tool/schema/overlay-loader.js.map +1 -1
  48. package/dist/tool/schema/project-config.d.ts +13 -1
  49. package/dist/tool/schema/project-config.d.ts.map +1 -1
  50. package/dist/tool/schema/project-config.js +188 -10
  51. package/dist/tool/schema/project-config.js.map +1 -1
  52. package/dist/tool/schema/target-rules.d.ts +78 -0
  53. package/dist/tool/schema/target-rules.d.ts.map +1 -0
  54. package/dist/tool/schema/target-rules.js +367 -0
  55. package/dist/tool/schema/target-rules.js.map +1 -0
  56. package/dist/tool/schema/types.d.ts +42 -3
  57. package/dist/tool/schema/types.d.ts.map +1 -1
  58. package/dist/tool/utils/parameters.d.ts +76 -0
  59. package/dist/tool/utils/parameters.d.ts.map +1 -0
  60. package/dist/tool/utils/parameters.js +125 -0
  61. package/dist/tool/utils/parameters.js.map +1 -0
  62. package/dist/tool/utils/paths.d.ts +2 -0
  63. package/dist/tool/utils/paths.d.ts.map +1 -0
  64. package/dist/tool/utils/paths.js +31 -0
  65. package/dist/tool/utils/paths.js.map +1 -0
  66. package/docs/deployment-targets.md +88 -56
  67. package/docs/examples.md +20 -17
  68. package/docs/filesystem-contract.md +5 -0
  69. package/docs/minimal-and-editor.md +65 -5
  70. package/docs/overlay-imports.md +92 -14
  71. package/docs/overlays.md +231 -135
  72. package/docs/specs/001-verbose-plan-graph/spec.md +5 -12
  73. package/docs/specs/002-superposition-config-file/spec.md +5 -12
  74. package/docs/specs/003-mkdocs2-overlay/spec.md +2 -9
  75. package/docs/specs/004-doctor-fix/spec.md +1 -8
  76. package/docs/specs/005-cuda-overlay/spec.md +2 -9
  77. package/docs/specs/006-rocm-overlay/spec.md +3 -10
  78. package/docs/specs/007-target-aware-generation/spec.md +119 -0
  79. package/docs/specs/008-project-file-canonical/spec.md +82 -0
  80. package/docs/specs/009-project-env/spec.md +140 -0
  81. package/docs/specs/010-compose-env-materialization/spec.md +123 -0
  82. package/docs/specs/011-overlay-parameters/spec.md +228 -0
  83. package/docs/specs/012-ollama-cli-overlay/spec.md +47 -0
  84. package/docs/specs/013-doctor-dependency-check/spec.md +250 -0
  85. package/docs/specs/014-doctor-compose-port-cross-validation/spec.md +276 -0
  86. package/docs/specs/015-doctor-env-example-drift/spec.md +248 -0
  87. package/docs/specs/016-doctor-reproducibility-check/spec.md +276 -0
  88. package/docs/specs/017-doctor-dry-run/spec.md +276 -0
  89. package/docs/specs/018-init-project-file/spec.md +59 -0
  90. package/docs/specs/taxonomy.md +186 -0
  91. package/overlays/.presets/full-observability.yml +113 -0
  92. package/overlays/.presets/k8s-dev.yml +174 -0
  93. package/overlays/.presets/local-llm.yml +105 -0
  94. package/overlays/.presets/vector-ai.yml +150 -0
  95. package/overlays/.shared/README.md +27 -2
  96. package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -0
  97. package/overlays/.shared/vscode/js-ts-settings.json +19 -0
  98. package/overlays/.shared/vscode/markdown-extensions.json +8 -0
  99. package/overlays/alertmanager/devcontainer.patch.json +0 -1
  100. package/overlays/alertmanager/docker-compose.yml +8 -0
  101. package/overlays/alertmanager/overlay.yml +1 -0
  102. package/overlays/amp/devcontainer.patch.json +4 -1
  103. package/overlays/bun/devcontainer.patch.json +1 -10
  104. package/overlays/bun/overlay.yml +8 -1
  105. package/overlays/claude-code/devcontainer.patch.json +6 -1
  106. package/overlays/codex/devcontainer.patch.json +5 -0
  107. package/overlays/comfyui/.env.example +34 -0
  108. package/overlays/comfyui/README.md +342 -0
  109. package/overlays/comfyui/devcontainer.patch.json +15 -0
  110. package/overlays/comfyui/docker-compose.yml +40 -0
  111. package/overlays/comfyui/overlay.yml +24 -0
  112. package/overlays/comfyui/setup.sh +36 -0
  113. package/overlays/comfyui/verify.sh +103 -0
  114. package/overlays/commitlint/devcontainer.patch.json +1 -6
  115. package/overlays/docker-sock/overlay.yml +1 -0
  116. package/overlays/dotnet/overlay.yml +4 -1
  117. package/overlays/fuseki/.env.example +5 -0
  118. package/overlays/fuseki/README.md +173 -0
  119. package/overlays/fuseki/devcontainer.patch.json +18 -0
  120. package/overlays/fuseki/docker-compose.yml +29 -0
  121. package/overlays/fuseki/overlay.yml +42 -0
  122. package/overlays/fuseki/verify.sh +58 -0
  123. package/overlays/gemini-cli/devcontainer.patch.json +4 -1
  124. package/overlays/go/overlay.yml +6 -1
  125. package/overlays/grafana/devcontainer.patch.json +0 -1
  126. package/overlays/grafana/docker-compose.yml +8 -2
  127. package/overlays/grafana/overlay.yml +6 -1
  128. package/overlays/jaeger/.env.example +11 -0
  129. package/overlays/jaeger/README.md +33 -4
  130. package/overlays/jaeger/devcontainer.patch.json +9 -1
  131. package/overlays/jaeger/docker-compose.yml +17 -0
  132. package/overlays/jaeger/overlay.yml +1 -12
  133. package/overlays/java/overlay.yml +6 -1
  134. package/overlays/jupyter/docker-compose.yml +1 -0
  135. package/overlays/jupyter/overlay.yml +1 -0
  136. package/overlays/k3d/README.md +201 -0
  137. package/overlays/k3d/devcontainer.patch.json +9 -0
  138. package/overlays/k3d/overlay.yml +19 -0
  139. package/overlays/k3d/setup.sh +34 -0
  140. package/overlays/k3d/verify.sh +38 -0
  141. package/overlays/keycloak/devcontainer.patch.json +0 -1
  142. package/overlays/keycloak/docker-compose.yml +1 -0
  143. package/overlays/keycloak/overlay.yml +15 -0
  144. package/overlays/localstack/docker-compose.yml +1 -0
  145. package/overlays/localstack/overlay.yml +19 -1
  146. package/overlays/loki/devcontainer.patch.json +0 -1
  147. package/overlays/loki/docker-compose.yml +8 -0
  148. package/overlays/loki/overlay.yml +1 -0
  149. package/overlays/mailpit/docker-compose.yml +1 -0
  150. package/overlays/mailpit/overlay.yml +1 -0
  151. package/overlays/minio/devcontainer.patch.json +1 -1
  152. package/overlays/minio/docker-compose.yml +1 -0
  153. package/overlays/minio/overlay.yml +23 -2
  154. package/overlays/mkdocs/devcontainer.patch.json +1 -5
  155. package/overlays/mkdocs/overlay.yml +3 -1
  156. package/overlays/mkdocs2/devcontainer.patch.json +1 -5
  157. package/overlays/mkdocs2/overlay.yml +2 -0
  158. package/overlays/mongodb/docker-compose.yml +2 -0
  159. package/overlays/mongodb/overlay.yml +26 -2
  160. package/overlays/mysql/docker-compose.yml +2 -0
  161. package/overlays/mysql/overlay.yml +36 -2
  162. package/overlays/nats/docker-compose.yml +1 -0
  163. package/overlays/nats/overlay.yml +18 -2
  164. package/overlays/nodejs/devcontainer.patch.json +1 -12
  165. package/overlays/nodejs/overlay.yml +8 -1
  166. package/overlays/ollama/.env.example +14 -0
  167. package/overlays/ollama/README.md +326 -0
  168. package/overlays/ollama/devcontainer.patch.json +14 -0
  169. package/overlays/ollama/docker-compose.yml +25 -0
  170. package/overlays/ollama/overlay.yml +27 -0
  171. package/overlays/ollama/verify.sh +76 -0
  172. package/overlays/ollama-cli/README.md +90 -0
  173. package/overlays/ollama-cli/devcontainer.patch.json +3 -0
  174. package/overlays/ollama-cli/overlay.yml +19 -0
  175. package/overlays/ollama-cli/setup.sh +103 -0
  176. package/overlays/ollama-cli/verify.sh +49 -0
  177. package/overlays/open-webui/.env.example +5 -0
  178. package/overlays/open-webui/README.md +162 -0
  179. package/overlays/open-webui/devcontainer.patch.json +14 -0
  180. package/overlays/open-webui/docker-compose.yml +24 -0
  181. package/overlays/open-webui/overlay.yml +45 -0
  182. package/overlays/opencode/devcontainer.patch.json +4 -1
  183. package/overlays/otel-collector/README.md +4 -0
  184. package/overlays/otel-collector/devcontainer.patch.json +4 -1
  185. package/overlays/otel-collector/docker-compose.yml +8 -4
  186. package/overlays/otel-collector/overlay.yml +1 -0
  187. package/overlays/otel-demo-nodejs/devcontainer.patch.json +0 -1
  188. package/overlays/otel-demo-nodejs/docker-compose.yml +1 -0
  189. package/overlays/otel-demo-nodejs/overlay.yml +9 -1
  190. package/overlays/otel-demo-python/devcontainer.patch.json +0 -1
  191. package/overlays/otel-demo-python/docker-compose.yml +1 -0
  192. package/overlays/otel-demo-python/overlay.yml +6 -1
  193. package/overlays/pandoc/README.md +10 -0
  194. package/overlays/pandoc/devcontainer.patch.json +0 -5
  195. package/overlays/pandoc/overlay.yml +2 -0
  196. package/overlays/pandoc/setup.sh +10 -0
  197. package/overlays/pgvector/.env.example +6 -0
  198. package/overlays/pgvector/README.md +215 -0
  199. package/overlays/pgvector/devcontainer.patch.json +29 -0
  200. package/overlays/pgvector/docker-compose.yml +33 -0
  201. package/overlays/pgvector/overlay.yml +47 -0
  202. package/overlays/playwright/devcontainer.patch.json +0 -5
  203. package/overlays/playwright/overlay.yml +2 -1
  204. package/overlays/postgres/.env.example +5 -5
  205. package/overlays/postgres/devcontainer.patch.json +4 -4
  206. package/overlays/postgres/docker-compose.yml +11 -6
  207. package/overlays/postgres/overlay.yml +23 -2
  208. package/overlays/pre-commit/devcontainer.patch.json +1 -7
  209. package/overlays/prometheus/devcontainer.patch.json +0 -1
  210. package/overlays/prometheus/docker-compose.yml +8 -0
  211. package/overlays/prometheus/overlay.yml +1 -0
  212. package/overlays/promtail/devcontainer.patch.json +1 -2
  213. package/overlays/promtail/docker-compose.yml +8 -0
  214. package/overlays/promtail/overlay.yml +1 -0
  215. package/overlays/qdrant/.env.example +4 -0
  216. package/overlays/qdrant/README.md +216 -0
  217. package/overlays/qdrant/devcontainer.patch.json +20 -0
  218. package/overlays/qdrant/docker-compose.yml +26 -0
  219. package/overlays/qdrant/overlay.yml +44 -0
  220. package/overlays/rabbitmq/docker-compose.yml +1 -0
  221. package/overlays/rabbitmq/overlay.yml +25 -2
  222. package/overlays/redis/docker-compose.yml +7 -0
  223. package/overlays/redis/overlay.yml +15 -1
  224. package/overlays/redpanda/docker-compose.yml +1 -0
  225. package/overlays/redpanda/overlay.yml +15 -3
  226. package/overlays/rocm/overlay.yml +2 -1
  227. package/overlays/rust/overlay.yml +3 -1
  228. package/overlays/skaffold/README.md +256 -0
  229. package/overlays/skaffold/devcontainer.patch.json +9 -0
  230. package/overlays/skaffold/overlay.yml +20 -0
  231. package/overlays/skaffold/setup.sh +33 -0
  232. package/overlays/skaffold/verify.sh +24 -0
  233. package/overlays/sqlserver/docker-compose.yml +1 -0
  234. package/overlays/sqlserver/overlay.yml +17 -0
  235. package/overlays/tempo/devcontainer.patch.json +0 -1
  236. package/overlays/tempo/docker-compose.yml +8 -0
  237. package/overlays/tempo/overlay.yml +1 -0
  238. package/overlays/windsurf-cli/devcontainer.patch.json +4 -1
  239. package/package.json +3 -2
  240. package/tool/schema/config.schema.json +31 -1
  241. package/tool/schema/overlay-manifest.schema.json +33 -0
  242. package/overlays/.shared/otel/otel-base-config.yaml +0 -30
@@ -0,0 +1,150 @@
1
+ # Vector AI Stack Preset
2
+ # Full RAG pipeline: vector DB + local embeddings + Python client
3
+
4
+ id: vector-ai
5
+ name: Vector AI Stack
6
+ description: Full RAG pipeline — Qdrant vector database, Ollama for local embeddings, and Python for client code
7
+ type: meta
8
+ category: preset
9
+ supports: [compose] # Requires Docker Compose for Qdrant and Ollama services
10
+ tags: [preset, ai, rag, vector, embeddings, qdrant, ollama, python]
11
+
12
+ selects:
13
+ required:
14
+ - qdrant
15
+ - ollama
16
+ - ollama-cli
17
+ - python
18
+
19
+ userChoice: {}
20
+
21
+ parameters:
22
+ gpu:
23
+ description: 'GPU acceleration for embedding generation'
24
+ default: none
25
+ options:
26
+ - id: none
27
+ overlays: []
28
+ description: 'CPU only — adequate for embedding workloads (smaller models)'
29
+ - id: nvidia
30
+ overlays: [cuda]
31
+ description: 'Nvidia GPU via CUDA — significantly faster embedding throughput'
32
+ - id: amd
33
+ overlays: [rocm]
34
+ description: 'AMD GPU via ROCm'
35
+
36
+ chat_ui:
37
+ description: 'Browser chat UI (optional — useful for testing your RAG pipeline)'
38
+ default: none
39
+ options:
40
+ - id: none
41
+ overlays: []
42
+ description: 'No chat UI — use the API or your own frontend'
43
+ - id: open-webui
44
+ overlays: [open-webui]
45
+ description: 'Open WebUI — test RAG-augmented chat visually'
46
+
47
+ glueConfig:
48
+ environment:
49
+ OLLAMA_HOST: 'http://ollama:11434'
50
+ QDRANT_HOST: 'qdrant'
51
+ QDRANT_PORT: '6333'
52
+ QDRANT_URL: 'http://qdrant:6333'
53
+ EMBEDDING_MODEL: 'nomic-embed-text'
54
+
55
+ portMappings:
56
+ qdrant-rest: 6333
57
+ qdrant-grpc: 6334
58
+ ollama-api: 11434
59
+
60
+ readme: |
61
+ ## Vector AI Stack
62
+
63
+ This devcontainer provides a complete local RAG (Retrieval-Augmented Generation) pipeline.
64
+
65
+ ### Services
66
+
67
+ | Service | Port | Purpose |
68
+ |---------|------|---------|
69
+ | Qdrant | 6333 (REST), 6334 (gRPC) | Vector database |
70
+ | Ollama | 11434 | LLM and embedding model runtime |
71
+ | ollama-cli | — | `ollama` command in terminal |
72
+
73
+ ### Quick Start
74
+
75
+ #### 1. Pull an embedding model
76
+
77
+ ```bash
78
+ ollama pull nomic-embed-text
79
+ ```
80
+
81
+ #### 2. Pull a chat model (for RAG generation)
82
+
83
+ ```bash
84
+ ollama pull llama3.2
85
+ ```
86
+
87
+ #### 3. Build your pipeline (Python example)
88
+
89
+ ```python
90
+ from qdrant_client import QdrantClient
91
+ import ollama
92
+ import os
93
+
94
+ qdrant = QdrantClient(url=os.environ["QDRANT_URL"])
95
+ embedding_model = os.environ["EMBEDDING_MODEL"]
96
+
97
+ # Create a collection
98
+ from qdrant_client.models import Distance, VectorParams
99
+ qdrant.create_collection(
100
+ collection_name="docs",
101
+ vectors_config=VectorParams(size=768, distance=Distance.COSINE),
102
+ )
103
+
104
+ # Embed and index a document
105
+ text = "Container Superposition makes devcontainer composition easy."
106
+ response = ollama.embed(model=embedding_model, input=text)
107
+ vector = response["embeddings"][0]
108
+
109
+ qdrant.upsert(
110
+ collection_name="docs",
111
+ points=[{"id": 1, "vector": vector, "payload": {"text": text}}],
112
+ )
113
+
114
+ # Search
115
+ query = "How does devcontainer composition work?"
116
+ q_vec = ollama.embed(model=embedding_model, input=query)["embeddings"][0]
117
+ results = qdrant.search(collection_name="docs", query_vector=q_vec, limit=3)
118
+ for r in results:
119
+ print(r.payload["text"])
120
+ ```
121
+
122
+ ### Environment Variables
123
+
124
+ Already set in your devcontainer:
125
+
126
+ ```bash
127
+ OLLAMA_HOST=http://ollama:11434
128
+ QDRANT_HOST=qdrant
129
+ QDRANT_PORT=6333
130
+ QDRANT_URL=http://qdrant:6333
131
+ EMBEDDING_MODEL=nomic-embed-text
132
+ ```
133
+
134
+ ### Qdrant Dashboard
135
+
136
+ Access the Qdrant web dashboard at http://localhost:6333/dashboard to inspect
137
+ collections, run queries, and monitor index health.
138
+
139
+ ### Recommended Python Packages
140
+
141
+ ```bash
142
+ pip install qdrant-client ollama openai langchain-community
143
+ ```
144
+
145
+ ### Next Steps
146
+
147
+ - Add the `local-llm` preset's Open WebUI to test your RAG pipeline through a chat interface
148
+ - Swap `nomic-embed-text` for `mxbai-embed-large` for higher-quality embeddings
149
+ - Use Qdrant's named vectors for hybrid dense + sparse retrieval
150
+ - Add `prometheus` and `grafana` overlays to monitor Qdrant query performance
@@ -10,6 +10,7 @@ This directory contains reusable configuration fragments that can be imported by
10
10
  │ ├── instrumentation.env # OTEL SDK env vars for instrumentation
11
11
  │ └── otel-base-config.yaml # Base OTEL collector pipeline config
12
12
  ├── compose/ # Docker Compose patterns
13
+ │ ├── nvidia-gpu-devcontainer.yml # NVIDIA GPU passthrough for the devcontainer service
13
14
  │ └── common-healthchecks.md # Standard healthcheck patterns (reference — not importable)
14
15
  └── vscode/ # VS Code extension sets
15
16
  └── recommended-extensions.json # Commonly recommended extensions (devcontainer patch)
@@ -44,6 +45,20 @@ This directory contains reusable configuration fragments that can be imported by
44
45
 
45
46
  ---
46
47
 
48
+ ### `compose/nvidia-gpu-devcontainer.yml`
49
+
50
+ **Purpose:** Adds the `deploy.resources.reservations.devices` block to the `devcontainer` service, giving the devcontainer itself direct NVIDIA GPU access. This enables GPU-accelerated tooling (`torch`, `tensorflow`, CUDA CLIs, `nvidia-smi`) to work directly in the dev environment.
51
+
52
+ **Format:** Docker Compose service fragment (services.devcontainer only).
53
+
54
+ **Merge type:** `compose_imports:` — deep-merged into the final `docker-compose.yml` before the overlay's own `docker-compose.yml`.
55
+
56
+ **Imported by:** `ollama`
57
+
58
+ **Prerequisites:** NVIDIA Container Toolkit must be installed on the host.
59
+
60
+ ---
61
+
47
62
  ### `compose/common-healthchecks.md`
48
63
 
49
64
  **Purpose:** Reference library of standard Docker Compose healthcheck patterns for common services (HTTP, PostgreSQL, Redis, MongoDB, MySQL).
@@ -64,7 +79,7 @@ This directory contains reusable configuration fragments that can be imported by
64
79
 
65
80
  ## Usage
66
81
 
67
- Reference shared fragments in `overlay.yml` via the `imports` field:
82
+ Reference shared devcontainer fragments in `overlay.yml` via the `imports` field:
68
83
 
69
84
  ```yaml
70
85
  id: my-overlay
@@ -73,11 +88,21 @@ imports:
73
88
  - .shared/vscode/recommended-extensions.json
74
89
  ```
75
90
 
91
+ Reference shared docker-compose fragments via the `compose_imports` field:
92
+
93
+ ```yaml
94
+ id: my-overlay
95
+ compose_imports:
96
+ - .shared/compose/nvidia-gpu-devcontainer.yml
97
+ ```
98
+
76
99
  **Rules:**
77
100
 
78
101
  - All paths must begin with `.shared/`
79
102
  - Paths are relative to `overlays/`
80
- - Imports are applied in declaration order, then the overlay's own `devcontainer.patch.json` (overlay wins on conflict)
103
+ - `imports` fragments are applied in declaration order, then the overlay's own `devcontainer.patch.json` (overlay wins on conflict)
104
+ - `compose_imports` fragments are deep-merged into `docker-compose.yml` before the overlay's own `docker-compose.yml` (overlay wins on conflict)
105
+ - `compose_imports` files must be `.yml` or `.yaml`
81
106
 
82
107
  ## Creating New Fragments
83
108
 
@@ -0,0 +1,22 @@
1
+ # Shared Docker Compose fragment: NVIDIA GPU passthrough for the devcontainer service.
2
+ #
3
+ # Adds the deploy.resources.reservations.devices block to the devcontainer service so
4
+ # GPU-accelerated tooling (torch, tensorflow, CUDA CLIs, etc.) works directly in the
5
+ # dev environment alongside any GPU-enabled sidecar services.
6
+ #
7
+ # Requirements: NVIDIA Container Toolkit must be installed on the host.
8
+ # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
9
+ #
10
+ # Used by: ollama
11
+ # Import via compose_imports in overlay.yml:
12
+ # compose_imports:
13
+ # - .shared/compose/nvidia-gpu-devcontainer.yml
14
+ services:
15
+ devcontainer:
16
+ deploy:
17
+ resources:
18
+ reservations:
19
+ devices:
20
+ - driver: nvidia
21
+ count: all
22
+ capabilities: [gpu]
@@ -0,0 +1,19 @@
1
+ {
2
+ "customizations": {
3
+ "vscode": {
4
+ "extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
5
+ "settings": {
6
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
7
+ "editor.formatOnSave": true,
8
+ "[typescript]": {
9
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
10
+ "editor.formatOnSave": true
11
+ },
12
+ "[javascript]": {
13
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
14
+ "editor.formatOnSave": true
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "customizations": {
4
+ "vscode": {
5
+ "extensions": ["yzhang.markdown-all-in-one", "DavidAnson.vscode-markdownlint"]
6
+ }
7
+ }
8
+ }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
3
  "runServices": ["alertmanager"],
4
- "_serviceOrder": 2,
5
4
  "forwardPorts": [9093],
6
5
  "portsAttributes": {
7
6
  "9093": {
@@ -2,6 +2,7 @@ version: '3.8'
2
2
  services:
3
3
  alertmanager:
4
4
  image: prom/alertmanager:${ALERTMANAGER_VERSION:-latest}
5
+ restart: unless-stopped
5
6
  command:
6
7
  - '--config.file=/etc/alertmanager/alertmanager.yml'
7
8
  - '--storage.path=/alertmanager'
@@ -12,9 +13,16 @@ services:
12
13
  - '${ALERTMANAGER_PORT:-9093}:9093'
13
14
  networks:
14
15
  - devnet
16
+ healthcheck:
17
+ test: ['CMD', 'wget', '-qO-', 'http://localhost:9093/-/ready']
18
+ interval: 10s
19
+ timeout: 5s
20
+ retries: 5
21
+ start_period: 10s
15
22
 
16
23
  volumes:
17
24
  alertmanager_data:
18
25
 
19
26
  networks:
20
27
  devnet:
28
+ name: devnet
@@ -15,3 +15,4 @@ tags:
15
15
  ports:
16
16
  - 9093
17
17
  order: 2
18
+ serviceOrder: 2
@@ -1,3 +1,6 @@
1
1
  {
2
- "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "postCreateCommand": {
4
+ "setup-amp": "bash .devcontainer/scripts/setup-amp.sh"
5
+ }
3
6
  }
@@ -12,16 +12,7 @@
12
12
  },
13
13
  "customizations": {
14
14
  "vscode": {
15
- "extensions": ["oven.bun-vscode", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
16
- "settings": {
17
- "editor.defaultFormatter": "esbenp.prettier-vscode",
18
- "[typescript]": {
19
- "editor.defaultFormatter": "esbenp.prettier-vscode"
20
- },
21
- "[javascript]": {
22
- "editor.defaultFormatter": "esbenp.prettier-vscode"
23
- }
24
- }
15
+ "extensions": ["oven.bun-vscode"]
25
16
  }
26
17
  },
27
18
  "remoteEnv": {
@@ -5,7 +5,12 @@ category: language
5
5
  supports: []
6
6
  requires: []
7
7
  suggests: []
8
- conflicts: []
8
+ conflicts:
9
+ - grafana
10
+ - open-webui
11
+ - mysql
12
+ - redpanda
13
+ - otel-demo-nodejs
9
14
  tags:
10
15
  - language
11
16
  - bun
@@ -14,3 +19,5 @@ tags:
14
19
  ports:
15
20
  - 3000
16
21
  - 8080
22
+ imports:
23
+ - .shared/vscode/js-ts-settings.json
@@ -1,3 +1,8 @@
1
1
  {
2
- "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "customizations": {
4
+ "vscode": {
5
+ "extensions": ["anthropic.claude-code"]
6
+ }
7
+ }
3
8
  }
@@ -5,5 +5,10 @@
5
5
  "apt": "bubblewrap",
6
6
  "apk": "bubblewrap"
7
7
  }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["openai.chatgpt"]
12
+ }
8
13
  }
9
14
  }
@@ -0,0 +1,34 @@
1
+ # ComfyUI Configuration
2
+
3
+ # ComfyUI models storage strategy:
4
+ #
5
+ # Option A (default) — named Docker volume (no host path needed):
6
+ # Leave COMFYUI_MODELS_HOST_PATH unset. Models persist in the Docker volume
7
+ # named "comfyui-models" and are shared between devcontainer and ComfyUI.
8
+ #
9
+ # Option B — bind mount to host directory (also accessible from host tools):
10
+ # Set COMFYUI_MODELS_HOST_PATH to an absolute host path.
11
+ # Docker creates the directory if it does not exist.
12
+ # Note: Docker Compose does not expand '~' in .env files; always use full absolute paths.
13
+ # macOS/Linux examples:
14
+ # COMFYUI_MODELS_HOST_PATH=/home/you/.cache/comfyui/models
15
+ # COMFYUI_MODELS_HOST_PATH=/home/you/ComfyUI/models
16
+ # Windows (Docker Desktop — use absolute path, no tilde):
17
+ # COMFYUI_MODELS_HOST_PATH=C:/Users/you/.cache/comfyui/models
18
+ #
19
+ # COMFYUI_MODELS_HOST_PATH=
20
+
21
+ # Where ComfyUI-generated images/videos are saved.
22
+ # Leave unset to use the named Docker volume "comfyui-output" (default),
23
+ # or set to an absolute host path to save outputs to the host filesystem.
24
+ # COMFYUI_OUTPUT_PATH=
25
+
26
+ # ComfyUI Docker image tag. Use 'latest-cuda' for NVIDIA GPU, 'latest-rocm' for AMD/ROCm, or 'latest-cpu' for CPU-only.
27
+ COMFYUI_VERSION=latest-cuda
28
+
29
+ # Host port for the ComfyUI web UI. Default: 8188.
30
+ COMFYUI_PORT=8188
31
+
32
+ # Extra CLI arguments passed to ComfyUI at startup.
33
+ # --listen 0.0.0.0 is required to accept connections from outside the container.
34
+ CLI_ARGS=--listen 0.0.0.0