container-superposition 0.1.8 → 0.1.10

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 (184) hide show
  1. package/README.md +3 -0
  2. package/dist/tool/cli/args.d.ts.map +1 -1
  3. package/dist/tool/cli/args.js +1 -1
  4. package/dist/tool/cli/args.js.map +1 -1
  5. package/dist/tool/commands/adopt.d.ts.map +1 -1
  6. package/dist/tool/commands/adopt.js +15 -21
  7. package/dist/tool/commands/adopt.js.map +1 -1
  8. package/dist/tool/commands/doctor.d.ts +1 -0
  9. package/dist/tool/commands/doctor.d.ts.map +1 -1
  10. package/dist/tool/commands/doctor.js +1370 -73
  11. package/dist/tool/commands/doctor.js.map +1 -1
  12. package/dist/tool/questionnaire/composer.d.ts +3 -1
  13. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  14. package/dist/tool/questionnaire/composer.js +273 -20
  15. package/dist/tool/questionnaire/composer.js.map +1 -1
  16. package/dist/tool/questionnaire/presets.d.ts.map +1 -1
  17. package/dist/tool/questionnaire/presets.js +1 -0
  18. package/dist/tool/questionnaire/presets.js.map +1 -1
  19. package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -1
  20. package/dist/tool/questionnaire/questionnaire.js +3 -1
  21. package/dist/tool/questionnaire/questionnaire.js.map +1 -1
  22. package/dist/tool/schema/project-config.d.ts.map +1 -1
  23. package/dist/tool/schema/project-config.js +174 -1
  24. package/dist/tool/schema/project-config.js.map +1 -1
  25. package/dist/tool/schema/types.d.ts +53 -2
  26. package/dist/tool/schema/types.d.ts.map +1 -1
  27. package/docs/README.md +1 -0
  28. package/docs/overlays.md +188 -147
  29. package/docs/specs/001-verbose-plan-graph/spec.md +5 -12
  30. package/docs/specs/002-superposition-config-file/spec.md +5 -12
  31. package/docs/specs/003-mkdocs2-overlay/spec.md +2 -9
  32. package/docs/specs/004-doctor-fix/spec.md +1 -8
  33. package/docs/specs/005-cuda-overlay/spec.md +2 -9
  34. package/docs/specs/006-rocm-overlay/spec.md +3 -10
  35. package/docs/specs/007-target-aware-generation/spec.md +4 -11
  36. package/docs/specs/008-project-file-canonical/spec.md +7 -8
  37. package/docs/specs/009-project-env/spec.md +3 -10
  38. package/docs/specs/010-compose-env-materialization/spec.md +3 -10
  39. package/docs/specs/011-overlay-parameters/spec.md +2 -9
  40. package/docs/specs/012-ollama-cli-overlay/spec.md +47 -0
  41. package/docs/specs/013-doctor-dependency-check/spec.md +250 -0
  42. package/docs/specs/014-doctor-compose-port-cross-validation/spec.md +276 -0
  43. package/docs/specs/015-doctor-env-example-drift/spec.md +248 -0
  44. package/docs/specs/016-doctor-reproducibility-check/spec.md +276 -0
  45. package/docs/specs/017-doctor-dry-run/spec.md +276 -0
  46. package/docs/specs/{007-init-project-file → 018-init-project-file}/spec.md +2 -9
  47. package/docs/specs/019-project-mounts/spec.md +176 -0
  48. package/docs/specs/taxonomy.md +186 -0
  49. package/docs/superposition-yml.md +467 -0
  50. package/overlays/.presets/full-observability.yml +113 -0
  51. package/overlays/.presets/k8s-dev.yml +174 -0
  52. package/overlays/.presets/local-llm.yml +105 -0
  53. package/overlays/.presets/vector-ai.yml +150 -0
  54. package/overlays/.shared/vscode/js-ts-settings.json +19 -0
  55. package/overlays/.shared/vscode/markdown-extensions.json +8 -0
  56. package/overlays/alertmanager/devcontainer.patch.json +0 -1
  57. package/overlays/alertmanager/docker-compose.yml +8 -0
  58. package/overlays/alertmanager/overlay.yml +1 -0
  59. package/overlays/amp/devcontainer.patch.json +4 -1
  60. package/overlays/ansible/README.md +163 -0
  61. package/overlays/ansible/devcontainer.patch.json +14 -0
  62. package/overlays/ansible/overlay.yml +18 -0
  63. package/overlays/argocd/README.md +158 -0
  64. package/overlays/argocd/devcontainer.patch.json +9 -0
  65. package/overlays/argocd/overlay.yml +17 -0
  66. package/overlays/argocd/setup.sh +29 -0
  67. package/overlays/argocd/verify.sh +14 -0
  68. package/overlays/bun/devcontainer.patch.json +1 -10
  69. package/overlays/bun/overlay.yml +8 -1
  70. package/overlays/claude-code/devcontainer.patch.json +6 -1
  71. package/overlays/codex/devcontainer.patch.json +5 -0
  72. package/overlays/comfyui/docker-compose.yml +1 -0
  73. package/overlays/comfyui/overlay.yml +4 -0
  74. package/overlays/commitlint/devcontainer.patch.json +1 -6
  75. package/overlays/docker-sock/overlay.yml +1 -0
  76. package/overlays/dotnet/overlay.yml +4 -1
  77. package/overlays/fuseki/.env.example +5 -0
  78. package/overlays/fuseki/README.md +173 -0
  79. package/overlays/fuseki/devcontainer.patch.json +18 -0
  80. package/overlays/fuseki/docker-compose.yml +29 -0
  81. package/overlays/fuseki/overlay.yml +42 -0
  82. package/overlays/fuseki/verify.sh +58 -0
  83. package/overlays/gemini-cli/devcontainer.patch.json +4 -1
  84. package/overlays/go/overlay.yml +6 -1
  85. package/overlays/grafana/devcontainer.patch.json +0 -1
  86. package/overlays/grafana/docker-compose.yml +8 -2
  87. package/overlays/grafana/overlay.yml +6 -1
  88. package/overlays/jaeger/.env.example +11 -0
  89. package/overlays/jaeger/README.md +33 -4
  90. package/overlays/jaeger/devcontainer.patch.json +9 -1
  91. package/overlays/jaeger/docker-compose.yml +17 -0
  92. package/overlays/jaeger/overlay.yml +1 -12
  93. package/overlays/java/overlay.yml +6 -1
  94. package/overlays/jupyter/docker-compose.yml +1 -0
  95. package/overlays/jupyter/overlay.yml +1 -0
  96. package/overlays/keycloak/devcontainer.patch.json +0 -1
  97. package/overlays/keycloak/docker-compose.yml +1 -0
  98. package/overlays/keycloak/overlay.yml +15 -0
  99. package/overlays/localstack/docker-compose.yml +1 -0
  100. package/overlays/localstack/overlay.yml +19 -1
  101. package/overlays/loki/devcontainer.patch.json +0 -1
  102. package/overlays/loki/docker-compose.yml +8 -0
  103. package/overlays/loki/overlay.yml +1 -0
  104. package/overlays/mailpit/docker-compose.yml +1 -0
  105. package/overlays/mailpit/overlay.yml +1 -0
  106. package/overlays/minio/devcontainer.patch.json +1 -1
  107. package/overlays/minio/docker-compose.yml +1 -0
  108. package/overlays/minio/overlay.yml +23 -2
  109. package/overlays/mkdocs/devcontainer.patch.json +1 -5
  110. package/overlays/mkdocs/overlay.yml +3 -1
  111. package/overlays/mkdocs2/devcontainer.patch.json +1 -5
  112. package/overlays/mkdocs2/overlay.yml +2 -0
  113. package/overlays/mongodb/docker-compose.yml +2 -0
  114. package/overlays/mongodb/overlay.yml +26 -2
  115. package/overlays/mysql/docker-compose.yml +2 -0
  116. package/overlays/mysql/overlay.yml +36 -2
  117. package/overlays/nats/docker-compose.yml +1 -0
  118. package/overlays/nats/overlay.yml +18 -2
  119. package/overlays/nodejs/devcontainer.patch.json +1 -12
  120. package/overlays/nodejs/overlay.yml +8 -1
  121. package/overlays/ollama/README.md +4 -3
  122. package/overlays/ollama/docker-compose.yml +1 -0
  123. package/overlays/ollama/overlay.yml +6 -1
  124. package/overlays/ollama/verify.sh +5 -28
  125. package/overlays/ollama-cli/README.md +90 -0
  126. package/overlays/ollama-cli/devcontainer.patch.json +3 -0
  127. package/overlays/ollama-cli/overlay.yml +19 -0
  128. package/overlays/{ollama → ollama-cli}/setup.sh +7 -10
  129. package/overlays/ollama-cli/verify.sh +49 -0
  130. package/overlays/open-webui/docker-compose.yml +1 -0
  131. package/overlays/open-webui/overlay.yml +8 -1
  132. package/overlays/opencode/devcontainer.patch.json +4 -1
  133. package/overlays/otel-collector/README.md +4 -0
  134. package/overlays/otel-collector/devcontainer.patch.json +4 -1
  135. package/overlays/otel-collector/docker-compose.yml +8 -4
  136. package/overlays/otel-collector/overlay.yml +1 -0
  137. package/overlays/otel-demo-nodejs/devcontainer.patch.json +0 -1
  138. package/overlays/otel-demo-nodejs/docker-compose.yml +1 -0
  139. package/overlays/otel-demo-nodejs/overlay.yml +9 -1
  140. package/overlays/otel-demo-python/devcontainer.patch.json +0 -1
  141. package/overlays/otel-demo-python/docker-compose.yml +1 -0
  142. package/overlays/otel-demo-python/overlay.yml +6 -1
  143. package/overlays/pandoc/README.md +10 -0
  144. package/overlays/pandoc/devcontainer.patch.json +0 -5
  145. package/overlays/pandoc/overlay.yml +2 -0
  146. package/overlays/pandoc/setup.sh +10 -0
  147. package/overlays/pgvector/devcontainer.patch.json +11 -5
  148. package/overlays/pgvector/docker-compose.yml +1 -0
  149. package/overlays/pgvector/overlay.yml +3 -0
  150. package/overlays/playwright/devcontainer.patch.json +0 -5
  151. package/overlays/playwright/overlay.yml +2 -1
  152. package/overlays/postgres/docker-compose.yml +1 -0
  153. package/overlays/postgres/overlay.yml +4 -1
  154. package/overlays/pre-commit/devcontainer.patch.json +1 -7
  155. package/overlays/prometheus/devcontainer.patch.json +0 -1
  156. package/overlays/prometheus/docker-compose.yml +8 -0
  157. package/overlays/prometheus/overlay.yml +1 -0
  158. package/overlays/promtail/devcontainer.patch.json +1 -2
  159. package/overlays/promtail/docker-compose.yml +8 -0
  160. package/overlays/promtail/overlay.yml +1 -0
  161. package/overlays/qdrant/docker-compose.yml +1 -0
  162. package/overlays/qdrant/overlay.yml +5 -1
  163. package/overlays/rabbitmq/docker-compose.yml +1 -0
  164. package/overlays/rabbitmq/overlay.yml +25 -2
  165. package/overlays/redis/docker-compose.yml +7 -0
  166. package/overlays/redis/overlay.yml +15 -1
  167. package/overlays/redpanda/docker-compose.yml +1 -0
  168. package/overlays/redpanda/overlay.yml +15 -3
  169. package/overlays/rocm/overlay.yml +2 -1
  170. package/overlays/rust/overlay.yml +3 -1
  171. package/overlays/sqlserver/docker-compose.yml +1 -0
  172. package/overlays/sqlserver/overlay.yml +17 -0
  173. package/overlays/task/README.md +47 -0
  174. package/overlays/task/devcontainer.patch.json +9 -0
  175. package/overlays/task/overlay.yml +16 -0
  176. package/overlays/task/setup.sh +29 -0
  177. package/overlays/task/verify.sh +14 -0
  178. package/overlays/tempo/devcontainer.patch.json +0 -1
  179. package/overlays/tempo/docker-compose.yml +8 -0
  180. package/overlays/tempo/overlay.yml +1 -0
  181. package/overlays/windsurf-cli/devcontainer.patch.json +4 -1
  182. package/package.json +1 -1
  183. package/tool/schema/config.schema.json +74 -1
  184. package/overlays/.shared/otel/otel-base-config.yaml +0 -30
@@ -0,0 +1,174 @@
1
+ # Kubernetes Development Preset
2
+ # Local Kubernetes cluster + dev loop tooling, language-agnostic
3
+
4
+ id: k8s-dev
5
+ name: Kubernetes Development
6
+ description: Local Kubernetes cluster with fast inner-loop tooling — choose your cluster provider and dev-loop tool
7
+ type: meta
8
+ category: preset
9
+ supports: [] # Works with both plain and compose
10
+ tags: [preset, kubernetes, k8s, kind, k3d, skaffold, tilt, devloop, kubectl, helm]
11
+
12
+ selects:
13
+ required:
14
+ - kubectl-helm
15
+ - docker-in-docker
16
+ - modern-cli-tools
17
+
18
+ userChoice: {}
19
+
20
+ parameters:
21
+ cluster:
22
+ description: 'Local Kubernetes cluster provider'
23
+ default: k3d
24
+ options:
25
+ - id: k3d
26
+ overlays: [k3d]
27
+ description: 'k3d (k3s in Docker) — fastest startup, lowest memory, ideal for CI'
28
+ - id: kind
29
+ overlays: [kind]
30
+ description: 'kind (Kubernetes in Docker) — official CNCF tool, most compatible'
31
+
32
+ devloop:
33
+ description: 'Inner-loop dev tool (watch → build → deploy on save)'
34
+ default: tilt
35
+ options:
36
+ - id: tilt
37
+ overlays: [tilt]
38
+ description: 'Tilt — live UI, smart rebuilds, port-forward management'
39
+ - id: skaffold
40
+ overlays: [skaffold]
41
+ description: 'Skaffold — declarative YAML, CI-compatible, multi-deployer support'
42
+ - id: none
43
+ overlays: []
44
+ description: 'No dev-loop tool — use kubectl directly'
45
+
46
+ glueConfig:
47
+ environment:
48
+ KUBECONFIG: '/home/vscode/.kube/config'
49
+ KUBECTL_CONTEXT: 'local'
50
+
51
+ portMappings:
52
+ app: 8080
53
+ tilt-ui: 10350
54
+
55
+ readme: |
56
+ ## Kubernetes Development Stack
57
+
58
+ This devcontainer provides a complete local Kubernetes development environment.
59
+
60
+ ### Tools
61
+
62
+ | Tool | Purpose |
63
+ |------|---------|
64
+ | kubectl + Helm | Kubernetes CLI and package manager |
65
+ | docker-in-docker | Run Docker inside the devcontainer to build images |
66
+ | k3d / kind | Provision a local Kubernetes cluster |
67
+ | Tilt / Skaffold | Watch → build → deploy inner loop |
68
+ | Modern CLI tools | `jq`, `yq`, `bat`, `fd`, `rg` for working with manifests |
69
+
70
+ ### Cluster Management
71
+
72
+ #### k3d (default)
73
+
74
+ ```bash
75
+ # Create cluster
76
+ k3d cluster create dev --port "8080:80@loadbalancer"
77
+
78
+ # List clusters
79
+ k3d cluster list
80
+
81
+ # Delete cluster
82
+ k3d cluster delete dev
83
+ ```
84
+
85
+ #### kind
86
+
87
+ ```bash
88
+ # Create cluster
89
+ kind create cluster --name dev
90
+
91
+ # List clusters
92
+ kind get clusters
93
+
94
+ # Delete cluster
95
+ kind delete cluster --name dev
96
+ ```
97
+
98
+ ### Inner-Loop Workflow
99
+
100
+ #### Tilt
101
+
102
+ Create a `Tiltfile` in your project root:
103
+
104
+ ```python
105
+ # Tiltfile
106
+ docker_build('my-app', '.')
107
+ k8s_yaml('k8s/')
108
+ k8s_resource('my-app', port_forwards=8080)
109
+ ```
110
+
111
+ Then run:
112
+
113
+ ```bash
114
+ tilt up
115
+ # Open http://localhost:10350 for the Tilt UI
116
+ ```
117
+
118
+ #### Skaffold
119
+
120
+ Create a `skaffold.yaml` in your project root:
121
+
122
+ ```yaml
123
+ apiVersion: skaffold/v4beta11
124
+ kind: Config
125
+ build:
126
+ artifacts:
127
+ - image: my-app
128
+ manifests:
129
+ rawYaml:
130
+ - k8s/*.yaml
131
+ ```
132
+
133
+ Then run:
134
+
135
+ ```bash
136
+ skaffold dev
137
+ ```
138
+
139
+ ### Helm Quick Start
140
+
141
+ ```bash
142
+ # Add a chart repository
143
+ helm repo add bitnami https://charts.bitnami.com/bitnami
144
+ helm repo update
145
+
146
+ # Install a chart
147
+ helm install my-release bitnami/postgresql
148
+
149
+ # Upgrade
150
+ helm upgrade my-release bitnami/postgresql --set auth.password=secret
151
+ ```
152
+
153
+ ### kubectl Tips
154
+
155
+ ```bash
156
+ # Watch all resources
157
+ kubectl get all -A -w
158
+
159
+ # Port-forward a service
160
+ kubectl port-forward svc/my-app 8080:80
161
+
162
+ # Inspect manifest with yq
163
+ kubectl get deployment my-app -o yaml | yq '.spec.template.spec.containers[0]'
164
+
165
+ # Live logs
166
+ kubectl logs -f -l app=my-app
167
+ ```
168
+
169
+ ### Next Steps
170
+
171
+ - Add a language overlay (`nodejs`, `go`, `python`, etc.) for your application runtime
172
+ - Add the `k8s-operator-dev` preset if you are building Kubernetes operators
173
+ - Configure image registry credentials for pushing built images
174
+ - Add Prometheus + Grafana overlays for in-cluster monitoring
@@ -0,0 +1,105 @@
1
+ # Local LLM Stack Preset
2
+ # Run local language models with a browser chat UI
3
+
4
+ id: local-llm
5
+ name: Local LLM Stack
6
+ description: Local inference with Ollama and Open WebUI — pull any model and chat without an API key
7
+ type: meta
8
+ category: preset
9
+ supports: [compose] # Requires Docker Compose for Ollama service
10
+ tags: [preset, ai, llm, ollama, open-webui, local-inference]
11
+
12
+ selects:
13
+ required:
14
+ - ollama
15
+ - ollama-cli
16
+ - open-webui
17
+
18
+ userChoice: {}
19
+
20
+ parameters:
21
+ gpu:
22
+ description: 'GPU acceleration (optional — CPU works without it)'
23
+ default: none
24
+ options:
25
+ - id: none
26
+ overlays: []
27
+ description: 'CPU only — works on any machine, slower for large models'
28
+ - id: nvidia
29
+ overlays: [cuda]
30
+ description: 'Nvidia GPU via CUDA'
31
+ - id: amd
32
+ overlays: [rocm]
33
+ description: 'AMD GPU via ROCm'
34
+
35
+ glueConfig:
36
+ environment:
37
+ OLLAMA_HOST: 'http://ollama:11434'
38
+
39
+ portMappings:
40
+ ollama-api: 11434
41
+ open-webui: 3000
42
+
43
+ readme: |
44
+ ## Local LLM Stack
45
+
46
+ This devcontainer runs a full local LLM environment — no API key required.
47
+
48
+ ### Services
49
+
50
+ - **Ollama** — LLM runtime serving models on port 11434
51
+ - **Open WebUI** — Browser-based chat UI at http://localhost:3000
52
+ - **ollama-cli** — `ollama` command available in the terminal
53
+
54
+ ### Quick Start
55
+
56
+ 1. Open http://localhost:3000 in your browser
57
+ 2. Sign up with any email (local only — no data leaves your machine)
58
+ 3. Pull a model via the terminal or the UI:
59
+
60
+ ```bash
61
+ # Pull a model
62
+ ollama pull llama3.2
63
+
64
+ # Run interactively in the terminal
65
+ ollama run llama3.2
66
+
67
+ # List pulled models
68
+ ollama list
69
+ ```
70
+
71
+ ### Recommended Models
72
+
73
+ | Model | Size | Use case |
74
+ |-------|------|----------|
75
+ | `llama3.2` | 2–8 B | General purpose, fast |
76
+ | `mistral` | 7 B | Strong reasoning |
77
+ | `codellama` | 7–34 B | Code generation |
78
+ | `nomic-embed-text` | 137 M | Embeddings for RAG |
79
+ | `phi4` | 14 B | Microsoft research model |
80
+
81
+ ### Using the API
82
+
83
+ ```bash
84
+ # Chat completion
85
+ curl http://localhost:11434/api/chat -d '{
86
+ "model": "llama3.2",
87
+ "messages": [{"role": "user", "content": "Hello!"}]
88
+ }'
89
+
90
+ # Generate embeddings
91
+ curl http://localhost:11434/api/embeddings -d '{
92
+ "model": "nomic-embed-text",
93
+ "prompt": "Hello world"
94
+ }'
95
+ ```
96
+
97
+ ### GPU Acceleration
98
+
99
+ If you selected a GPU option, ensure the relevant drivers are installed on the host.
100
+ CPU-only mode works on any machine — expect ~10–30 tokens/sec for 7 B models.
101
+
102
+ ### Next Steps
103
+
104
+ - Add the `qdrant` overlay and `vector-ai` preset for a full RAG pipeline
105
+ - Add the `python` overlay to build LLM-powered apps
@@ -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
@@ -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
  }
@@ -0,0 +1,163 @@
1
+ # Ansible Overlay
2
+
3
+ Adds [Ansible](https://www.ansible.com/) tooling for automation, configuration management, and infrastructure provisioning workflows inside your devcontainer.
4
+
5
+ ## Features
6
+
7
+ - **Ansible CLI** — `ansible`, `ansible-playbook`, `ansible-galaxy`, `ansible-vault`, `ansible-doc`
8
+ - **ansible-lint** — Best-practice and style checks for playbooks, roles, and collections
9
+ - **VS Code Extension:** Red Hat Ansible (`redhat.ansible`) — syntax highlighting, autocomplete, and validation powered by the Ansible Language Server
10
+
11
+ ## How It Works
12
+
13
+ Ansible and ansible-lint are installed via the shared `cross-distro-packages` feature during devcontainer creation:
14
+
15
+ - **Debian/Ubuntu**: installs `ansible` (or `ansible-core`) and `ansible-lint` (or `python3-ansible-lint`) via `apt`
16
+ - **Alpine**: installs `ansible` and `ansible-lint` via `apk`
17
+
18
+ No extra services are started — Ansible runs entirely inside the devcontainer and connects to remote hosts (or `localhost`) over SSH or WinRM.
19
+
20
+ **Dependencies:** None required. Combine with cloud CLI overlays (`aws-cli`, `azure-cli`, `gcloud`) for cloud target automation, or `terraform` for hybrid IaC workflows.
21
+
22
+ ## Common Commands
23
+
24
+ ### Inventory & Connectivity
25
+
26
+ ```bash
27
+ # Ping all hosts in the default inventory
28
+ ansible all -m ping
29
+
30
+ # Ping using an explicit inventory file
31
+ ansible all -i inventory/hosts.ini -m ping
32
+
33
+ # Gather facts from a host group
34
+ ansible webservers -m gather_facts -i inventory/hosts.ini
35
+
36
+ # List all hosts in an inventory
37
+ ansible-inventory -i inventory/hosts.ini --list
38
+ ```
39
+
40
+ ### Running Playbooks
41
+
42
+ ```bash
43
+ # Run a playbook against all hosts in inventory
44
+ ansible-playbook playbook.yml
45
+
46
+ # Run with an explicit inventory
47
+ ansible-playbook -i inventory/hosts.ini playbook.yml
48
+
49
+ # Run with extra variables
50
+ ansible-playbook playbook.yml -e "env=production db_host=db.example.com"
51
+
52
+ # Limit execution to a specific host group
53
+ ansible-playbook playbook.yml --limit webservers
54
+
55
+ # Dry-run (check mode) — show changes without applying them
56
+ ansible-playbook playbook.yml --check
57
+
58
+ # Verbose output for debugging
59
+ ansible-playbook playbook.yml -vvv
60
+ ```
61
+
62
+ ### Ansible Galaxy
63
+
64
+ ```bash
65
+ # Install a collection from Galaxy
66
+ ansible-galaxy collection install community.general
67
+
68
+ # Install a role from Galaxy
69
+ ansible-galaxy role install geerlingguy.nginx
70
+
71
+ # Install from a requirements file
72
+ ansible-galaxy install -r requirements.yml
73
+
74
+ # List installed collections
75
+ ansible-galaxy collection list
76
+ ```
77
+
78
+ ### Vault (Secrets Management)
79
+
80
+ ```bash
81
+ # Encrypt a file
82
+ ansible-vault encrypt secrets.yml
83
+
84
+ # Decrypt a file
85
+ ansible-vault decrypt secrets.yml
86
+
87
+ # View an encrypted file without decrypting on disk
88
+ ansible-vault view secrets.yml
89
+
90
+ # Edit an encrypted file in place
91
+ ansible-vault edit secrets.yml
92
+
93
+ # Run a playbook with an encrypted vault
94
+ ansible-playbook playbook.yml --ask-vault-pass
95
+ ```
96
+
97
+ ### Linting
98
+
99
+ ```bash
100
+ # Lint a playbook
101
+ ansible-lint playbook.yml
102
+
103
+ # Lint all playbooks and roles in the current project
104
+ ansible-lint
105
+
106
+ # Show lint violations with profile info
107
+ ansible-lint --profile production playbook.yml
108
+ ```
109
+
110
+ ## Quick Start
111
+
112
+ Create a minimal localhost playbook:
113
+
114
+ ```yaml
115
+ # playbook.yml
116
+ - name: Local test
117
+ hosts: localhost
118
+ connection: local
119
+ gather_facts: false
120
+ tasks:
121
+ - name: Ping localhost
122
+ ansible.builtin.ping:
123
+
124
+ - name: Print a message
125
+ ansible.builtin.debug:
126
+ msg: 'Ansible is working!'
127
+ ```
128
+
129
+ Run and lint it:
130
+
131
+ ```bash
132
+ ansible-playbook playbook.yml
133
+ ansible-lint playbook.yml
134
+ ```
135
+
136
+ ## Use Cases
137
+
138
+ - **Configuration management** — Enforce consistent state across servers (packages, files, services, users)
139
+ - **Application deployment** — Orchestrate multi-step deployments to remote hosts or cloud VMs
140
+ - **Cloud provisioning** — Combine with cloud modules (`amazon.aws`, `azure.azcollection`, `google.cloud`) to provision infrastructure
141
+ - **Kubernetes automation** — Use the `kubernetes.core` collection to manage cluster resources
142
+ - **Local development automation** — Run playbooks against `localhost` to set up or reset dev environments
143
+
144
+ **Integrates well with:**
145
+
146
+ - `aws-cli`, `azure-cli`, `gcloud` — cloud target automation via provider-specific modules
147
+ - `terraform` — use Terraform for infra provisioning, Ansible for configuration of provisioned resources
148
+ - `kubectl-helm` — manage Kubernetes workloads with the `kubernetes.core` Ansible collection
149
+
150
+ ## References
151
+
152
+ - [Ansible Documentation](https://docs.ansible.com/)
153
+ - [ansible-lint Documentation](https://ansible.readthedocs.io/projects/lint/)
154
+ - [Ansible Galaxy](https://galaxy.ansible.com/)
155
+ - [Red Hat Ansible VS Code Extension](https://marketplace.visualstudio.com/items?itemName=redhat.ansible)
156
+ - [Ansible Collections Index](https://docs.ansible.com/ansible/latest/collections/index.html)
157
+
158
+ **Related Overlays:**
159
+
160
+ - [`aws-cli`](../aws-cli/README.md) — AWS CLI for cloud target automation
161
+ - [`azure-cli`](../azure-cli/README.md) — Azure CLI for cloud target automation
162
+ - [`gcloud`](../gcloud/README.md) — Google Cloud SDK for cloud target automation
163
+ - [`terraform`](../terraform/README.md) — Infrastructure provisioning to pair with Ansible configuration management
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "ansible|ansible-core ansible-lint|python3-ansible-lint",
6
+ "apk": "ansible ansible-lint"
7
+ }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["redhat.ansible"]
12
+ }
13
+ }
14
+ }