container-superposition 0.1.8 → 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 (162) hide show
  1. package/dist/tool/commands/adopt.js +1 -1
  2. package/dist/tool/commands/adopt.js.map +1 -1
  3. package/dist/tool/commands/doctor.d.ts +1 -0
  4. package/dist/tool/commands/doctor.d.ts.map +1 -1
  5. package/dist/tool/commands/doctor.js +1370 -73
  6. package/dist/tool/commands/doctor.js.map +1 -1
  7. package/dist/tool/questionnaire/composer.d.ts +3 -1
  8. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  9. package/dist/tool/questionnaire/composer.js +87 -18
  10. package/dist/tool/questionnaire/composer.js.map +1 -1
  11. package/dist/tool/questionnaire/presets.d.ts.map +1 -1
  12. package/dist/tool/questionnaire/presets.js +1 -0
  13. package/dist/tool/questionnaire/presets.js.map +1 -1
  14. package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -1
  15. package/dist/tool/questionnaire/questionnaire.js +3 -1
  16. package/dist/tool/questionnaire/questionnaire.js.map +1 -1
  17. package/dist/tool/schema/project-config.d.ts.map +1 -1
  18. package/dist/tool/schema/project-config.js +5 -1
  19. package/dist/tool/schema/project-config.js.map +1 -1
  20. package/dist/tool/schema/types.d.ts +4 -2
  21. package/dist/tool/schema/types.d.ts.map +1 -1
  22. package/docs/overlays.md +158 -147
  23. package/docs/specs/001-verbose-plan-graph/spec.md +5 -12
  24. package/docs/specs/002-superposition-config-file/spec.md +5 -12
  25. package/docs/specs/003-mkdocs2-overlay/spec.md +2 -9
  26. package/docs/specs/004-doctor-fix/spec.md +1 -8
  27. package/docs/specs/005-cuda-overlay/spec.md +2 -9
  28. package/docs/specs/006-rocm-overlay/spec.md +3 -10
  29. package/docs/specs/007-target-aware-generation/spec.md +4 -11
  30. package/docs/specs/008-project-file-canonical/spec.md +7 -8
  31. package/docs/specs/009-project-env/spec.md +3 -10
  32. package/docs/specs/010-compose-env-materialization/spec.md +3 -10
  33. package/docs/specs/011-overlay-parameters/spec.md +2 -9
  34. package/docs/specs/012-ollama-cli-overlay/spec.md +47 -0
  35. package/docs/specs/013-doctor-dependency-check/spec.md +250 -0
  36. package/docs/specs/014-doctor-compose-port-cross-validation/spec.md +276 -0
  37. package/docs/specs/015-doctor-env-example-drift/spec.md +248 -0
  38. package/docs/specs/016-doctor-reproducibility-check/spec.md +276 -0
  39. package/docs/specs/017-doctor-dry-run/spec.md +276 -0
  40. package/docs/specs/{007-init-project-file → 018-init-project-file}/spec.md +2 -9
  41. package/docs/specs/taxonomy.md +186 -0
  42. package/overlays/.presets/full-observability.yml +113 -0
  43. package/overlays/.presets/k8s-dev.yml +174 -0
  44. package/overlays/.presets/local-llm.yml +105 -0
  45. package/overlays/.presets/vector-ai.yml +150 -0
  46. package/overlays/.shared/vscode/js-ts-settings.json +19 -0
  47. package/overlays/.shared/vscode/markdown-extensions.json +8 -0
  48. package/overlays/alertmanager/devcontainer.patch.json +0 -1
  49. package/overlays/alertmanager/docker-compose.yml +8 -0
  50. package/overlays/alertmanager/overlay.yml +1 -0
  51. package/overlays/amp/devcontainer.patch.json +4 -1
  52. package/overlays/bun/devcontainer.patch.json +1 -10
  53. package/overlays/bun/overlay.yml +8 -1
  54. package/overlays/claude-code/devcontainer.patch.json +6 -1
  55. package/overlays/codex/devcontainer.patch.json +5 -0
  56. package/overlays/comfyui/docker-compose.yml +1 -0
  57. package/overlays/comfyui/overlay.yml +4 -0
  58. package/overlays/commitlint/devcontainer.patch.json +1 -6
  59. package/overlays/docker-sock/overlay.yml +1 -0
  60. package/overlays/dotnet/overlay.yml +4 -1
  61. package/overlays/fuseki/.env.example +5 -0
  62. package/overlays/fuseki/README.md +173 -0
  63. package/overlays/fuseki/devcontainer.patch.json +18 -0
  64. package/overlays/fuseki/docker-compose.yml +29 -0
  65. package/overlays/fuseki/overlay.yml +42 -0
  66. package/overlays/fuseki/verify.sh +58 -0
  67. package/overlays/gemini-cli/devcontainer.patch.json +4 -1
  68. package/overlays/go/overlay.yml +6 -1
  69. package/overlays/grafana/devcontainer.patch.json +0 -1
  70. package/overlays/grafana/docker-compose.yml +8 -2
  71. package/overlays/grafana/overlay.yml +6 -1
  72. package/overlays/jaeger/.env.example +11 -0
  73. package/overlays/jaeger/README.md +33 -4
  74. package/overlays/jaeger/devcontainer.patch.json +9 -1
  75. package/overlays/jaeger/docker-compose.yml +17 -0
  76. package/overlays/jaeger/overlay.yml +1 -12
  77. package/overlays/java/overlay.yml +6 -1
  78. package/overlays/jupyter/docker-compose.yml +1 -0
  79. package/overlays/jupyter/overlay.yml +1 -0
  80. package/overlays/keycloak/devcontainer.patch.json +0 -1
  81. package/overlays/keycloak/docker-compose.yml +1 -0
  82. package/overlays/keycloak/overlay.yml +15 -0
  83. package/overlays/localstack/docker-compose.yml +1 -0
  84. package/overlays/localstack/overlay.yml +19 -1
  85. package/overlays/loki/devcontainer.patch.json +0 -1
  86. package/overlays/loki/docker-compose.yml +8 -0
  87. package/overlays/loki/overlay.yml +1 -0
  88. package/overlays/mailpit/docker-compose.yml +1 -0
  89. package/overlays/mailpit/overlay.yml +1 -0
  90. package/overlays/minio/devcontainer.patch.json +1 -1
  91. package/overlays/minio/docker-compose.yml +1 -0
  92. package/overlays/minio/overlay.yml +23 -2
  93. package/overlays/mkdocs/devcontainer.patch.json +1 -5
  94. package/overlays/mkdocs/overlay.yml +3 -1
  95. package/overlays/mkdocs2/devcontainer.patch.json +1 -5
  96. package/overlays/mkdocs2/overlay.yml +2 -0
  97. package/overlays/mongodb/docker-compose.yml +2 -0
  98. package/overlays/mongodb/overlay.yml +26 -2
  99. package/overlays/mysql/docker-compose.yml +2 -0
  100. package/overlays/mysql/overlay.yml +36 -2
  101. package/overlays/nats/docker-compose.yml +1 -0
  102. package/overlays/nats/overlay.yml +18 -2
  103. package/overlays/nodejs/devcontainer.patch.json +1 -12
  104. package/overlays/nodejs/overlay.yml +8 -1
  105. package/overlays/ollama/README.md +4 -3
  106. package/overlays/ollama/docker-compose.yml +1 -0
  107. package/overlays/ollama/overlay.yml +6 -1
  108. package/overlays/ollama/verify.sh +5 -28
  109. package/overlays/ollama-cli/README.md +90 -0
  110. package/overlays/ollama-cli/devcontainer.patch.json +3 -0
  111. package/overlays/ollama-cli/overlay.yml +19 -0
  112. package/overlays/{ollama → ollama-cli}/setup.sh +7 -10
  113. package/overlays/ollama-cli/verify.sh +49 -0
  114. package/overlays/open-webui/docker-compose.yml +1 -0
  115. package/overlays/open-webui/overlay.yml +8 -1
  116. package/overlays/opencode/devcontainer.patch.json +4 -1
  117. package/overlays/otel-collector/README.md +4 -0
  118. package/overlays/otel-collector/devcontainer.patch.json +4 -1
  119. package/overlays/otel-collector/docker-compose.yml +8 -4
  120. package/overlays/otel-collector/overlay.yml +1 -0
  121. package/overlays/otel-demo-nodejs/devcontainer.patch.json +0 -1
  122. package/overlays/otel-demo-nodejs/docker-compose.yml +1 -0
  123. package/overlays/otel-demo-nodejs/overlay.yml +9 -1
  124. package/overlays/otel-demo-python/devcontainer.patch.json +0 -1
  125. package/overlays/otel-demo-python/docker-compose.yml +1 -0
  126. package/overlays/otel-demo-python/overlay.yml +6 -1
  127. package/overlays/pandoc/README.md +10 -0
  128. package/overlays/pandoc/devcontainer.patch.json +0 -5
  129. package/overlays/pandoc/overlay.yml +2 -0
  130. package/overlays/pandoc/setup.sh +10 -0
  131. package/overlays/pgvector/devcontainer.patch.json +11 -5
  132. package/overlays/pgvector/docker-compose.yml +1 -0
  133. package/overlays/pgvector/overlay.yml +3 -0
  134. package/overlays/playwright/devcontainer.patch.json +0 -5
  135. package/overlays/playwright/overlay.yml +2 -1
  136. package/overlays/postgres/docker-compose.yml +1 -0
  137. package/overlays/postgres/overlay.yml +4 -1
  138. package/overlays/pre-commit/devcontainer.patch.json +1 -7
  139. package/overlays/prometheus/devcontainer.patch.json +0 -1
  140. package/overlays/prometheus/docker-compose.yml +8 -0
  141. package/overlays/prometheus/overlay.yml +1 -0
  142. package/overlays/promtail/devcontainer.patch.json +1 -2
  143. package/overlays/promtail/docker-compose.yml +8 -0
  144. package/overlays/promtail/overlay.yml +1 -0
  145. package/overlays/qdrant/docker-compose.yml +1 -0
  146. package/overlays/qdrant/overlay.yml +5 -1
  147. package/overlays/rabbitmq/docker-compose.yml +1 -0
  148. package/overlays/rabbitmq/overlay.yml +25 -2
  149. package/overlays/redis/docker-compose.yml +7 -0
  150. package/overlays/redis/overlay.yml +15 -1
  151. package/overlays/redpanda/docker-compose.yml +1 -0
  152. package/overlays/redpanda/overlay.yml +15 -3
  153. package/overlays/rocm/overlay.yml +2 -1
  154. package/overlays/rust/overlay.yml +3 -1
  155. package/overlays/sqlserver/docker-compose.yml +1 -0
  156. package/overlays/sqlserver/overlay.yml +17 -0
  157. package/overlays/tempo/devcontainer.patch.json +0 -1
  158. package/overlays/tempo/docker-compose.yml +8 -0
  159. package/overlays/tempo/overlay.yml +1 -0
  160. package/overlays/windsurf-cli/devcontainer.patch.json +4 -1
  161. package/package.json +1 -1
  162. package/overlays/.shared/otel/otel-base-config.yaml +0 -30
@@ -0,0 +1,186 @@
1
+ # Feature Taxonomy
2
+
3
+ This index maps all specs to their feature categories. Maintained by the `tool-pm` agent — update whenever a new spec is added.
4
+
5
+ ## Taxonomy categories
6
+
7
+ ```
8
+ OVERLAY — Adding or modifying individual overlays
9
+ OVERLAY-NEW — New overlay
10
+ OVERLAY-ENRICH — Enriching an existing overlay
11
+ OVERLAY-FIX — Correctness fix to an overlay
12
+
13
+ PRESET — Preset bundles
14
+ PRESET-NEW — New preset
15
+ PRESET-ENRICH — Enriching an existing preset
16
+
17
+ COMPOSER — Core composition pipeline (composer.ts, merge logic, imports)
18
+ COMPOSER-FEAT — New composition behaviour
19
+ COMPOSER-FIX — Bug fix
20
+
21
+ SCHEMA — Overlay manifest schema, types, validation
22
+ SCHEMA-FIELD — New field in overlay.yml or related types
23
+ SCHEMA-VALID — New validation rule
24
+
25
+ CLI — Command-line interface (init, regen, adopt, doctor)
26
+ CLI-COMMAND — New command or subcommand
27
+ CLI-FLAG — New flag on existing command
28
+ CLI-UX — Interactive prompt or output improvement
29
+
30
+ QUESTIONNAIRE — Overlay selection logic
31
+ QUEST-SECTION — New questionnaire section
32
+ QUEST-LOGIC — Selection / dependency resolution logic
33
+
34
+ DOCS — Documentation
35
+ DOCS-SPEC — Spec meta
36
+ DOCS-GUIDE — Developer or user guide
37
+ DOCS-API — Generated reference
38
+
39
+ INFRA — Project infrastructure (tests, CI, tooling)
40
+ INFRA-TEST — Test coverage
41
+ INFRA-LINT — Lint / formatter
42
+ INFRA-BUILD — Build system
43
+ ```
44
+
45
+ ---
46
+
47
+ ## OVERLAY — Individual overlays
48
+
49
+ ### OVERLAY-NEW
50
+
51
+ | Spec | Title | Status |
52
+ | -------------------------------------------------------- | ------------------------------------- | ------ |
53
+ | [003-mkdocs2-overlay](003-mkdocs2-overlay/spec.md) | MkDocs 2.x Overlay | Final |
54
+ | [005-cuda-overlay](005-cuda-overlay/spec.md) | CUDA (NVIDIA GPU) Overlay | Final |
55
+ | [006-rocm-overlay](006-rocm-overlay/spec.md) | ROCm (AMD GPU) Overlay | Final |
56
+ | [012-ollama-cli-overlay](012-ollama-cli-overlay/spec.md) | Split Ollama Service and CLI Overlays | Final |
57
+
58
+ ### OVERLAY-ENRICH
59
+
60
+ _No specs yet._
61
+
62
+ ### OVERLAY-FIX
63
+
64
+ _No specs yet._
65
+
66
+ ---
67
+
68
+ ## PRESET — Preset bundles
69
+
70
+ ### PRESET-NEW
71
+
72
+ _No specs yet._
73
+
74
+ ### PRESET-ENRICH
75
+
76
+ _No specs yet._
77
+
78
+ ---
79
+
80
+ ## COMPOSER — Composition pipeline
81
+
82
+ ### COMPOSER-FEAT
83
+
84
+ | Spec | Title | Status |
85
+ | -------------------------------------------------------------------------- | --------------------------------------------------- | -------- |
86
+ | [010-compose-env-materialization](010-compose-env-materialization/spec.md) | Compose Env Materialization and Env Template Naming | Approved |
87
+
88
+ ### COMPOSER-FIX
89
+
90
+ _No specs yet._
91
+
92
+ ---
93
+
94
+ ## SCHEMA — Overlay manifest schema
95
+
96
+ ### SCHEMA-FIELD
97
+
98
+ | Spec | Title | Status |
99
+ | -------------------------------------------------------- | ----------------------------------------- | ------ |
100
+ | [011-overlay-parameters](011-overlay-parameters/spec.md) | Overlay Parameters with Safe Substitution | Final |
101
+
102
+ ### SCHEMA-VALID
103
+
104
+ _No specs yet._
105
+
106
+ ---
107
+
108
+ ## CLI — Command-line interface
109
+
110
+ ### CLI-COMMAND
111
+
112
+ | Spec | Title | Status |
113
+ | ---------------------------------------- | ---------------------------------------- | ------ |
114
+ | [004-doctor-fix](004-doctor-fix/spec.md) | `doctor --fix` — Interactive Auto-Repair | Final |
115
+
116
+ ### CLI-FLAG
117
+
118
+ | Spec | Title | Status |
119
+ | ------------------------------------------------------------------ | ----------------------------- | ------ |
120
+ | [007-target-aware-generation](007-target-aware-generation/spec.md) | Target-Aware Generation | Final |
121
+ | [017-doctor-dry-run](017-doctor-dry-run/spec.md) | Doctor `--fix --dry-run` Flag | Draft |
122
+
123
+ ### CLI-UX
124
+
125
+ | Spec | Title | Status |
126
+ | -------------------------------------------------------------------------------------------- | ------------------------------------------ | ------ |
127
+ | [001-verbose-plan-graph](001-verbose-plan-graph/spec.md) | Verbose Plan Graph | Final |
128
+ | [013-doctor-dependency-check](013-doctor-dependency-check/spec.md) | Doctor Overlay Dependency Resolution Check | Draft |
129
+ | [014-doctor-compose-port-cross-validation](014-doctor-compose-port-cross-validation/spec.md) | Doctor Compose / Port Cross-Validation | Draft |
130
+ | [015-doctor-env-example-drift](015-doctor-env-example-drift/spec.md) | Doctor `.env.example` Drift Detection | Draft |
131
+ | [016-doctor-reproducibility-check](016-doctor-reproducibility-check/spec.md) | Doctor Reproducibility Check | Draft |
132
+
133
+ ---
134
+
135
+ ## QUESTIONNAIRE — Overlay selection
136
+
137
+ ### QUEST-SECTION
138
+
139
+ _No specs yet._
140
+
141
+ ### QUEST-LOGIC
142
+
143
+ _No specs yet._
144
+
145
+ ---
146
+
147
+ ## DOCS — Documentation
148
+
149
+ ### DOCS-SPEC
150
+
151
+ _No specs yet._
152
+
153
+ ### DOCS-GUIDE
154
+
155
+ _No specs yet._
156
+
157
+ ### DOCS-API
158
+
159
+ _No specs yet._
160
+
161
+ ---
162
+
163
+ ## INFRA — Project infrastructure
164
+
165
+ ### INFRA-TEST
166
+
167
+ _No specs yet._
168
+
169
+ ### INFRA-LINT
170
+
171
+ _No specs yet._
172
+
173
+ ### INFRA-BUILD
174
+
175
+ _No specs yet._
176
+
177
+ ---
178
+
179
+ ## PROJECT — Project-level configuration
180
+
181
+ | Spec | Title | Status |
182
+ | ---------------------------------------------------------------------- | ------------------------------------------- | -------- |
183
+ | [002-superposition-config-file](002-superposition-config-file/spec.md) | Project Configuration File | Final |
184
+ | [008-project-file-canonical](008-project-file-canonical/spec.md) | Project File Canonical Form | Approved |
185
+ | [009-project-env](009-project-env/spec.md) | Unified Project-Level Environment Variables | Approved |
186
+ | [018-init-project-file](018-init-project-file/spec.md) | `init --project-file` | Final |
@@ -0,0 +1,113 @@
1
+ # Full Observability Stack Preset
2
+ # Complete metrics, logs, traces, and alerting for any project
3
+
4
+ id: full-observability
5
+ name: Full Observability Stack
6
+ description: Prometheus, Grafana, Loki, Jaeger/Tempo, OpenTelemetry Collector, Alertmanager, and Promtail — bolt-on monitoring for any project
7
+ type: meta
8
+ category: preset
9
+ supports: [compose] # Requires Docker Compose for all sidecar services
10
+ tags: [preset, observability, monitoring, metrics, logging, tracing, prometheus, grafana, loki]
11
+
12
+ selects:
13
+ required:
14
+ - prometheus
15
+ - grafana
16
+ - loki
17
+ - otel-collector
18
+ - alertmanager
19
+ - promtail
20
+
21
+ userChoice: {}
22
+
23
+ parameters:
24
+ tracing:
25
+ description: 'Distributed tracing backend'
26
+ default: jaeger
27
+ options:
28
+ - id: jaeger
29
+ overlays: [jaeger]
30
+ description: 'Jaeger — battle-tested, native OTLP support, built-in UI'
31
+ - id: tempo
32
+ overlays: [tempo]
33
+ description: 'Grafana Tempo — stores traces in object storage, integrates with Grafana'
34
+ - id: both
35
+ overlays: [jaeger, tempo]
36
+ description: 'Both Jaeger and Tempo (useful for migration)'
37
+ - id: none
38
+ overlays: []
39
+ description: 'No tracing backend — collector still accepts spans'
40
+
41
+ glueConfig:
42
+ environment:
43
+ OTEL_EXPORTER_OTLP_ENDPOINT: 'http://otel-collector:4317'
44
+ OTEL_METRICS_EXPORTER: 'otlp'
45
+ OTEL_TRACES_EXPORTER: 'otlp'
46
+ OTEL_LOGS_EXPORTER: 'otlp'
47
+
48
+ portMappings:
49
+ grafana: 3000
50
+ prometheus: 9090
51
+ jaeger-ui: 16686
52
+ alertmanager: 9093
53
+ otel-grpc: 4317
54
+ otel-http: 4318
55
+
56
+ readme: |
57
+ ## Full Observability Stack
58
+
59
+ This devcontainer adds a complete observability platform alongside your existing services.
60
+
61
+ ### Services
62
+
63
+ | Service | Port | Purpose |
64
+ |---------|------|---------|
65
+ | Grafana | 3000 | Unified dashboards (metrics + logs + traces) |
66
+ | Prometheus | 9090 | Metrics collection and storage |
67
+ | Loki | 3100 | Log aggregation |
68
+ | Promtail | — | Log shipping agent (reads container logs) |
69
+ | OTel Collector | 4317 / 4318 | Telemetry pipeline (gRPC / HTTP) |
70
+ | Alertmanager | 9093 | Alert routing and silencing |
71
+ | Jaeger / Tempo | 16686 | Distributed tracing UI / backend |
72
+
73
+ ### Access
74
+
75
+ - **Grafana**: http://localhost:3000 — default login `admin` / `admin`
76
+ - **Prometheus**: http://localhost:9090
77
+ - **Alertmanager**: http://localhost:9093
78
+ - **Jaeger UI** _(if selected)_: http://localhost:16686
79
+
80
+ ### Instrumenting Your Application
81
+
82
+ Configure your service to send telemetry to the OTel Collector:
83
+
84
+ ```bash
85
+ # Already set in your environment:
86
+ OTEL_EXPORTER_OTLP_ENDPOINT="http://otel-collector:4317"
87
+ OTEL_METRICS_EXPORTER="otlp"
88
+ OTEL_TRACES_EXPORTER="otlp"
89
+ OTEL_LOGS_EXPORTER="otlp"
90
+ ```
91
+
92
+ Install the OpenTelemetry SDK for your language, then traces and metrics
93
+ will flow automatically: App → OTel Collector → Jaeger / Prometheus / Loki.
94
+
95
+ ### Grafana Datasources
96
+
97
+ The following datasources are pre-configured in Grafana:
98
+
99
+ - Prometheus (metrics)
100
+ - Loki (logs)
101
+ - Jaeger or Tempo (traces, if selected)
102
+
103
+ ### Alertmanager
104
+
105
+ Add alert rules to Prometheus by creating a `prometheus-rules.yml` file
106
+ and mounting it into the Prometheus service, or use the Grafana alerting UI.
107
+
108
+ ### Next Steps
109
+
110
+ - Browse the Grafana Explore tab to query logs and traces
111
+ - Import community dashboards from grafana.com/grafana/dashboards
112
+ - Configure Alertmanager routes in `.devcontainer/alertmanager.yml`
113
+ - Add your service's metrics endpoint to `prometheus-scrape-configs.yml`
@@ -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