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.
- package/README.md +24 -15
- package/dist/scripts/init.js +1 -1537
- package/dist/scripts/init.js.map +1 -1
- package/dist/tool/cli/args.d.ts +20 -0
- package/dist/tool/cli/args.d.ts.map +1 -0
- package/dist/tool/cli/args.js +325 -0
- package/dist/tool/cli/args.js.map +1 -0
- package/dist/tool/cli/run.d.ts +2 -0
- package/dist/tool/cli/run.d.ts.map +1 -0
- package/dist/tool/cli/run.js +318 -0
- package/dist/tool/cli/run.js.map +1 -0
- package/dist/tool/commands/adopt.js +1 -1
- package/dist/tool/commands/adopt.js.map +1 -1
- package/dist/tool/commands/doctor.d.ts +1 -0
- package/dist/tool/commands/doctor.d.ts.map +1 -1
- package/dist/tool/commands/doctor.js +1510 -78
- package/dist/tool/commands/doctor.js.map +1 -1
- package/dist/tool/commands/explain.d.ts.map +1 -1
- package/dist/tool/commands/explain.js +9 -0
- package/dist/tool/commands/explain.js.map +1 -1
- package/dist/tool/commands/migrate.d.ts +7 -0
- package/dist/tool/commands/migrate.d.ts.map +1 -0
- package/dist/tool/commands/migrate.js +52 -0
- package/dist/tool/commands/migrate.js.map +1 -0
- package/dist/tool/questionnaire/answers.d.ts +16 -0
- package/dist/tool/questionnaire/answers.d.ts.map +1 -0
- package/dist/tool/questionnaire/answers.js +102 -0
- package/dist/tool/questionnaire/answers.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -4
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +778 -45
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/questionnaire/presets.d.ts +60 -0
- package/dist/tool/questionnaire/presets.d.ts.map +1 -0
- package/dist/tool/questionnaire/presets.js +165 -0
- package/dist/tool/questionnaire/presets.js.map +1 -0
- package/dist/tool/questionnaire/questionnaire.d.ts +10 -0
- package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -0
- package/dist/tool/questionnaire/questionnaire.js +582 -0
- package/dist/tool/questionnaire/questionnaire.js.map +1 -0
- package/dist/tool/schema/manifest-migrations.d.ts +5 -0
- package/dist/tool/schema/manifest-migrations.d.ts.map +1 -1
- package/dist/tool/schema/manifest-migrations.js +45 -0
- package/dist/tool/schema/manifest-migrations.js.map +1 -1
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
- package/dist/tool/schema/overlay-loader.js +24 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +13 -1
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +188 -10
- package/dist/tool/schema/project-config.js.map +1 -1
- package/dist/tool/schema/target-rules.d.ts +78 -0
- package/dist/tool/schema/target-rules.d.ts.map +1 -0
- package/dist/tool/schema/target-rules.js +367 -0
- package/dist/tool/schema/target-rules.js.map +1 -0
- package/dist/tool/schema/types.d.ts +42 -3
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/dist/tool/utils/parameters.d.ts +76 -0
- package/dist/tool/utils/parameters.d.ts.map +1 -0
- package/dist/tool/utils/parameters.js +125 -0
- package/dist/tool/utils/parameters.js.map +1 -0
- package/dist/tool/utils/paths.d.ts +2 -0
- package/dist/tool/utils/paths.d.ts.map +1 -0
- package/dist/tool/utils/paths.js +31 -0
- package/dist/tool/utils/paths.js.map +1 -0
- package/docs/deployment-targets.md +88 -56
- package/docs/examples.md +20 -17
- package/docs/filesystem-contract.md +5 -0
- package/docs/minimal-and-editor.md +65 -5
- package/docs/overlay-imports.md +92 -14
- package/docs/overlays.md +231 -135
- package/docs/specs/001-verbose-plan-graph/spec.md +5 -12
- package/docs/specs/002-superposition-config-file/spec.md +5 -12
- package/docs/specs/003-mkdocs2-overlay/spec.md +2 -9
- package/docs/specs/004-doctor-fix/spec.md +1 -8
- package/docs/specs/005-cuda-overlay/spec.md +2 -9
- package/docs/specs/006-rocm-overlay/spec.md +3 -10
- package/docs/specs/007-target-aware-generation/spec.md +119 -0
- package/docs/specs/008-project-file-canonical/spec.md +82 -0
- package/docs/specs/009-project-env/spec.md +140 -0
- package/docs/specs/010-compose-env-materialization/spec.md +123 -0
- package/docs/specs/011-overlay-parameters/spec.md +228 -0
- package/docs/specs/012-ollama-cli-overlay/spec.md +47 -0
- package/docs/specs/013-doctor-dependency-check/spec.md +250 -0
- package/docs/specs/014-doctor-compose-port-cross-validation/spec.md +276 -0
- package/docs/specs/015-doctor-env-example-drift/spec.md +248 -0
- package/docs/specs/016-doctor-reproducibility-check/spec.md +276 -0
- package/docs/specs/017-doctor-dry-run/spec.md +276 -0
- package/docs/specs/018-init-project-file/spec.md +59 -0
- package/docs/specs/taxonomy.md +186 -0
- package/overlays/.presets/full-observability.yml +113 -0
- package/overlays/.presets/k8s-dev.yml +174 -0
- package/overlays/.presets/local-llm.yml +105 -0
- package/overlays/.presets/vector-ai.yml +150 -0
- package/overlays/.shared/README.md +27 -2
- package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -0
- package/overlays/.shared/vscode/js-ts-settings.json +19 -0
- package/overlays/.shared/vscode/markdown-extensions.json +8 -0
- package/overlays/alertmanager/devcontainer.patch.json +0 -1
- package/overlays/alertmanager/docker-compose.yml +8 -0
- package/overlays/alertmanager/overlay.yml +1 -0
- package/overlays/amp/devcontainer.patch.json +4 -1
- package/overlays/bun/devcontainer.patch.json +1 -10
- package/overlays/bun/overlay.yml +8 -1
- package/overlays/claude-code/devcontainer.patch.json +6 -1
- package/overlays/codex/devcontainer.patch.json +5 -0
- package/overlays/comfyui/.env.example +34 -0
- package/overlays/comfyui/README.md +342 -0
- package/overlays/comfyui/devcontainer.patch.json +15 -0
- package/overlays/comfyui/docker-compose.yml +40 -0
- package/overlays/comfyui/overlay.yml +24 -0
- package/overlays/comfyui/setup.sh +36 -0
- package/overlays/comfyui/verify.sh +103 -0
- package/overlays/commitlint/devcontainer.patch.json +1 -6
- package/overlays/docker-sock/overlay.yml +1 -0
- package/overlays/dotnet/overlay.yml +4 -1
- package/overlays/fuseki/.env.example +5 -0
- package/overlays/fuseki/README.md +173 -0
- package/overlays/fuseki/devcontainer.patch.json +18 -0
- package/overlays/fuseki/docker-compose.yml +29 -0
- package/overlays/fuseki/overlay.yml +42 -0
- package/overlays/fuseki/verify.sh +58 -0
- package/overlays/gemini-cli/devcontainer.patch.json +4 -1
- package/overlays/go/overlay.yml +6 -1
- package/overlays/grafana/devcontainer.patch.json +0 -1
- package/overlays/grafana/docker-compose.yml +8 -2
- package/overlays/grafana/overlay.yml +6 -1
- package/overlays/jaeger/.env.example +11 -0
- package/overlays/jaeger/README.md +33 -4
- package/overlays/jaeger/devcontainer.patch.json +9 -1
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +1 -12
- package/overlays/java/overlay.yml +6 -1
- package/overlays/jupyter/docker-compose.yml +1 -0
- package/overlays/jupyter/overlay.yml +1 -0
- package/overlays/k3d/README.md +201 -0
- package/overlays/k3d/devcontainer.patch.json +9 -0
- package/overlays/k3d/overlay.yml +19 -0
- package/overlays/k3d/setup.sh +34 -0
- package/overlays/k3d/verify.sh +38 -0
- package/overlays/keycloak/devcontainer.patch.json +0 -1
- package/overlays/keycloak/docker-compose.yml +1 -0
- package/overlays/keycloak/overlay.yml +15 -0
- package/overlays/localstack/docker-compose.yml +1 -0
- package/overlays/localstack/overlay.yml +19 -1
- package/overlays/loki/devcontainer.patch.json +0 -1
- package/overlays/loki/docker-compose.yml +8 -0
- package/overlays/loki/overlay.yml +1 -0
- package/overlays/mailpit/docker-compose.yml +1 -0
- package/overlays/mailpit/overlay.yml +1 -0
- package/overlays/minio/devcontainer.patch.json +1 -1
- package/overlays/minio/docker-compose.yml +1 -0
- package/overlays/minio/overlay.yml +23 -2
- package/overlays/mkdocs/devcontainer.patch.json +1 -5
- package/overlays/mkdocs/overlay.yml +3 -1
- package/overlays/mkdocs2/devcontainer.patch.json +1 -5
- package/overlays/mkdocs2/overlay.yml +2 -0
- package/overlays/mongodb/docker-compose.yml +2 -0
- package/overlays/mongodb/overlay.yml +26 -2
- package/overlays/mysql/docker-compose.yml +2 -0
- package/overlays/mysql/overlay.yml +36 -2
- package/overlays/nats/docker-compose.yml +1 -0
- package/overlays/nats/overlay.yml +18 -2
- package/overlays/nodejs/devcontainer.patch.json +1 -12
- package/overlays/nodejs/overlay.yml +8 -1
- package/overlays/ollama/.env.example +14 -0
- package/overlays/ollama/README.md +326 -0
- package/overlays/ollama/devcontainer.patch.json +14 -0
- package/overlays/ollama/docker-compose.yml +25 -0
- package/overlays/ollama/overlay.yml +27 -0
- package/overlays/ollama/verify.sh +76 -0
- package/overlays/ollama-cli/README.md +90 -0
- package/overlays/ollama-cli/devcontainer.patch.json +3 -0
- package/overlays/ollama-cli/overlay.yml +19 -0
- package/overlays/ollama-cli/setup.sh +103 -0
- package/overlays/ollama-cli/verify.sh +49 -0
- package/overlays/open-webui/.env.example +5 -0
- package/overlays/open-webui/README.md +162 -0
- package/overlays/open-webui/devcontainer.patch.json +14 -0
- package/overlays/open-webui/docker-compose.yml +24 -0
- package/overlays/open-webui/overlay.yml +45 -0
- package/overlays/opencode/devcontainer.patch.json +4 -1
- package/overlays/otel-collector/README.md +4 -0
- package/overlays/otel-collector/devcontainer.patch.json +4 -1
- package/overlays/otel-collector/docker-compose.yml +8 -4
- package/overlays/otel-collector/overlay.yml +1 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +0 -1
- package/overlays/otel-demo-nodejs/docker-compose.yml +1 -0
- package/overlays/otel-demo-nodejs/overlay.yml +9 -1
- package/overlays/otel-demo-python/devcontainer.patch.json +0 -1
- package/overlays/otel-demo-python/docker-compose.yml +1 -0
- package/overlays/otel-demo-python/overlay.yml +6 -1
- package/overlays/pandoc/README.md +10 -0
- package/overlays/pandoc/devcontainer.patch.json +0 -5
- package/overlays/pandoc/overlay.yml +2 -0
- package/overlays/pandoc/setup.sh +10 -0
- package/overlays/pgvector/.env.example +6 -0
- package/overlays/pgvector/README.md +215 -0
- package/overlays/pgvector/devcontainer.patch.json +29 -0
- package/overlays/pgvector/docker-compose.yml +33 -0
- package/overlays/pgvector/overlay.yml +47 -0
- package/overlays/playwright/devcontainer.patch.json +0 -5
- package/overlays/playwright/overlay.yml +2 -1
- package/overlays/postgres/.env.example +5 -5
- package/overlays/postgres/devcontainer.patch.json +4 -4
- package/overlays/postgres/docker-compose.yml +11 -6
- package/overlays/postgres/overlay.yml +23 -2
- package/overlays/pre-commit/devcontainer.patch.json +1 -7
- package/overlays/prometheus/devcontainer.patch.json +0 -1
- package/overlays/prometheus/docker-compose.yml +8 -0
- package/overlays/prometheus/overlay.yml +1 -0
- package/overlays/promtail/devcontainer.patch.json +1 -2
- package/overlays/promtail/docker-compose.yml +8 -0
- package/overlays/promtail/overlay.yml +1 -0
- package/overlays/qdrant/.env.example +4 -0
- package/overlays/qdrant/README.md +216 -0
- package/overlays/qdrant/devcontainer.patch.json +20 -0
- package/overlays/qdrant/docker-compose.yml +26 -0
- package/overlays/qdrant/overlay.yml +44 -0
- package/overlays/rabbitmq/docker-compose.yml +1 -0
- package/overlays/rabbitmq/overlay.yml +25 -2
- package/overlays/redis/docker-compose.yml +7 -0
- package/overlays/redis/overlay.yml +15 -1
- package/overlays/redpanda/docker-compose.yml +1 -0
- package/overlays/redpanda/overlay.yml +15 -3
- package/overlays/rocm/overlay.yml +2 -1
- package/overlays/rust/overlay.yml +3 -1
- package/overlays/skaffold/README.md +256 -0
- package/overlays/skaffold/devcontainer.patch.json +9 -0
- package/overlays/skaffold/overlay.yml +20 -0
- package/overlays/skaffold/setup.sh +33 -0
- package/overlays/skaffold/verify.sh +24 -0
- package/overlays/sqlserver/docker-compose.yml +1 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/tempo/devcontainer.patch.json +0 -1
- package/overlays/tempo/docker-compose.yml +8 -0
- package/overlays/tempo/overlay.yml +1 -0
- package/overlays/windsurf-cli/devcontainer.patch.json +4 -1
- package/package.json +3 -2
- package/tool/schema/config.schema.json +31 -1
- package/tool/schema/overlay-manifest.schema.json +33 -0
- package/overlays/.shared/otel/otel-base-config.yaml +0 -30
|
@@ -13,21 +13,10 @@
|
|
|
13
13
|
},
|
|
14
14
|
"customizations": {
|
|
15
15
|
"vscode": {
|
|
16
|
-
"extensions": [
|
|
17
|
-
"dbaeumer.vscode-eslint",
|
|
18
|
-
"esbenp.prettier-vscode",
|
|
19
|
-
"christian-kohler.npm-intellisense"
|
|
20
|
-
],
|
|
16
|
+
"extensions": ["christian-kohler.npm-intellisense"],
|
|
21
17
|
"settings": {
|
|
22
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
23
18
|
"editor.codeActionsOnSave": {
|
|
24
19
|
"source.fixAll.eslint": "explicit"
|
|
25
|
-
},
|
|
26
|
-
"[typescript]": {
|
|
27
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
28
|
-
},
|
|
29
|
-
"[javascript]": {
|
|
30
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
31
20
|
}
|
|
32
21
|
}
|
|
33
22
|
}
|
|
@@ -5,10 +5,17 @@ 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
|
- nodejs
|
|
12
17
|
- javascript
|
|
13
18
|
- typescript
|
|
14
19
|
ports: []
|
|
20
|
+
imports:
|
|
21
|
+
- .shared/vscode/js-ts-settings.json
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Ollama Configuration
|
|
2
|
+
|
|
3
|
+
# Path to the Ollama data directory on the host machine.
|
|
4
|
+
# Defaults to ~/.ollama — models downloaded there are available without re-pull.
|
|
5
|
+
# Override to use a different directory, e.g. an external drive:
|
|
6
|
+
# OLLAMA_MODELS_PATH=/Volumes/BigDrive/ollama
|
|
7
|
+
# Windows users: set this explicitly, e.g. OLLAMA_MODELS_PATH=C:/Users/you/.ollama
|
|
8
|
+
OLLAMA_MODELS_PATH=~/.ollama
|
|
9
|
+
|
|
10
|
+
# Ollama image version (defaults to latest)
|
|
11
|
+
OLLAMA_VERSION=latest
|
|
12
|
+
|
|
13
|
+
# Host port for the Ollama API (defaults to 11434)
|
|
14
|
+
OLLAMA_PORT=11434
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
# Ollama Overlay
|
|
2
|
+
|
|
3
|
+
Runs [Ollama](https://ollama.com) as a Docker Compose service inside the devcontainer, enabling local LLM inference without leaving the dev environment. This overlay automatically requires `ollama-cli`, so the Ollama CLI is also available in the devcontainer terminal.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Ollama inference server** — Run large language models locally with a simple REST API
|
|
8
|
+
- **Ollama CLI in devcontainer** — Manage models and run inference with `ollama pull / run / list / rm` from the terminal without SSH-ing into the sidecar
|
|
9
|
+
- **OpenAI-compatible endpoint** — Drop-in replacement for many OpenAI API integrations
|
|
10
|
+
- **Pre-configured `OLLAMA_HOST`** — Points automatically at the sidecar; no manual setup required
|
|
11
|
+
- **Host model reuse** — Mounts your host's `~/.ollama` directory so models are shared without re-downloading
|
|
12
|
+
- **GPU passthrough** — Both the `ollama` sidecar and the devcontainer itself get access to all NVIDIA GPUs via the `deploy.resources.reservations.devices` block
|
|
13
|
+
- **Port 11434** — Standard Ollama API port, accessible from the devcontainer as `http://ollama:11434`
|
|
14
|
+
|
|
15
|
+
## How It Works
|
|
16
|
+
|
|
17
|
+
Ollama runs as a long-lived Docker Compose service (`ollama`) alongside your devcontainer. The devcontainer connects to it using the hostname `ollama` on port `11434`.
|
|
18
|
+
|
|
19
|
+
**Service configuration:**
|
|
20
|
+
|
|
21
|
+
- Image: `ollama/ollama:latest`
|
|
22
|
+
- Network: `devnet` (shared with the dev container)
|
|
23
|
+
- Port: `11434` (REST API)
|
|
24
|
+
- Volume: `${OLLAMA_MODELS_PATH:-~/.ollama}:/root/.ollama` — mounts the host Ollama data directory
|
|
25
|
+
|
|
26
|
+
The `OLLAMA_HOST` environment variable is set to `http://ollama:11434` in the devcontainer, so the Ollama CLI and any tools that respect this variable will connect to the sidecar automatically.
|
|
27
|
+
|
|
28
|
+
The Ollama CLI installation is provided by the required [`ollama-cli`](../ollama-cli/README.md) overlay. This keeps service responsibilities (`ollama`) and CLI responsibilities (`ollama-cli`) separated while preserving the same day-to-day user experience.
|
|
29
|
+
|
|
30
|
+
## Mapping Host Models into the Container
|
|
31
|
+
|
|
32
|
+
This is the most important feature for day-to-day use. Models downloaded via `ollama pull` on the **host machine** are stored in `~/.ollama/models` (macOS/Linux) or `%USERPROFILE%\.ollama\models` (Windows). Re-downloading multi-gigabyte models inside the container on every rebuild is wasteful.
|
|
33
|
+
|
|
34
|
+
### Default Behaviour
|
|
35
|
+
|
|
36
|
+
The compose volume `${OLLAMA_MODELS_PATH:-~/.ollama}:/root/.ollama` automatically mounts the host's default Ollama data directory. Any model already pulled on the host is immediately available inside the container — no re-download required.
|
|
37
|
+
|
|
38
|
+
### Override Path
|
|
39
|
+
|
|
40
|
+
Set `OLLAMA_MODELS_PATH` in `.devcontainer/.env` to point at a different directory, for example an external drive with large models:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# .devcontainer/.env
|
|
44
|
+
OLLAMA_MODELS_PATH=/Volumes/BigDrive/ollama
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Windows Note
|
|
48
|
+
|
|
49
|
+
On Windows, `~` expansion may not work as expected. Set `OLLAMA_MODELS_PATH` explicitly:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
OLLAMA_MODELS_PATH=C:/Users/you/.ollama
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Read-Write Mount
|
|
56
|
+
|
|
57
|
+
The mount is read-write by default, so `ollama pull` inside the container also saves models to the host directory. This means models downloaded inside the devcontainer are available on the host and in future container rebuilds.
|
|
58
|
+
|
|
59
|
+
## Using the Ollama CLI
|
|
60
|
+
|
|
61
|
+
The Ollama CLI is installed via the required `ollama-cli` overlay. The `OLLAMA_HOST` environment variable is pre-configured to `http://ollama:11434`, so all commands automatically target the sidecar — no manual configuration required.
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# From the main devcontainer terminal — talks to the sidecar
|
|
65
|
+
|
|
66
|
+
# Pull a model and list available models
|
|
67
|
+
ollama pull llama3.2
|
|
68
|
+
ollama list
|
|
69
|
+
|
|
70
|
+
# Run a different model for inference
|
|
71
|
+
ollama run mistral "explain this function"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> **Note:** Do **not** run `ollama serve` inside the devcontainer. The sidecar IS the server. Running `ollama serve` would start a second daemon that conflicts with the sidecar.
|
|
75
|
+
|
|
76
|
+
> **Note:** `ollama pull` inside the devcontainer writes models to the host-mounted `OLLAMA_MODELS_PATH` directory (default `~/.ollama`). Models are persisted across container rebuilds.
|
|
77
|
+
|
|
78
|
+
### Model Management
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Pull a model (saved to the host-mounted ~/.ollama directory)
|
|
82
|
+
ollama pull llama3.2
|
|
83
|
+
|
|
84
|
+
# List available models
|
|
85
|
+
ollama list
|
|
86
|
+
|
|
87
|
+
# Show detailed model information
|
|
88
|
+
ollama show llama3.2
|
|
89
|
+
|
|
90
|
+
# Remove a model
|
|
91
|
+
ollama rm llama3.2
|
|
92
|
+
|
|
93
|
+
# Copy a model under a new name
|
|
94
|
+
ollama cp llama3.2 my-custom-llama
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Running Models
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Interactive chat session
|
|
101
|
+
ollama run llama3.2
|
|
102
|
+
|
|
103
|
+
# One-shot inference
|
|
104
|
+
ollama run llama3.2 "explain this function"
|
|
105
|
+
|
|
106
|
+
# Run a coding-focused model
|
|
107
|
+
ollama run qwen2.5-coder "review this code"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Common Commands
|
|
111
|
+
|
|
112
|
+
### Pull and Run Models
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Pull a model (saved to host's ~/.ollama)
|
|
116
|
+
ollama pull llama3.2
|
|
117
|
+
|
|
118
|
+
# Run a model interactively
|
|
119
|
+
ollama run llama3.2
|
|
120
|
+
|
|
121
|
+
# Run a smaller model for faster responses
|
|
122
|
+
ollama pull phi3.5
|
|
123
|
+
ollama run phi3.5
|
|
124
|
+
|
|
125
|
+
# Run a coding-focused model
|
|
126
|
+
ollama pull qwen2.5-coder
|
|
127
|
+
ollama run qwen2.5-coder
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Model Management
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# List downloaded models
|
|
134
|
+
ollama list
|
|
135
|
+
|
|
136
|
+
# Show model information
|
|
137
|
+
ollama show llama3.2
|
|
138
|
+
|
|
139
|
+
# Remove a model
|
|
140
|
+
ollama rm llama3.2
|
|
141
|
+
|
|
142
|
+
# Copy a model
|
|
143
|
+
ollama cp llama3.2 my-custom-llama
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### REST API
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Health check — list available models
|
|
150
|
+
curl http://ollama:11434/api/tags
|
|
151
|
+
|
|
152
|
+
# Generate a completion
|
|
153
|
+
curl http://ollama:11434/api/generate \
|
|
154
|
+
-d '{
|
|
155
|
+
"model": "llama3.2",
|
|
156
|
+
"prompt": "Why is the sky blue?",
|
|
157
|
+
"stream": false
|
|
158
|
+
}'
|
|
159
|
+
|
|
160
|
+
# OpenAI-compatible chat endpoint
|
|
161
|
+
curl http://ollama:11434/v1/chat/completions \
|
|
162
|
+
-H "Content-Type: application/json" \
|
|
163
|
+
-d '{
|
|
164
|
+
"model": "llama3.2",
|
|
165
|
+
"messages": [{"role": "user", "content": "Hello!"}]
|
|
166
|
+
}'
|
|
167
|
+
|
|
168
|
+
# From the host machine (via forwarded port)
|
|
169
|
+
curl http://localhost:11434/api/tags
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## GPU Acceleration
|
|
173
|
+
|
|
174
|
+
GPU passthrough is enabled out of the box. Both the `ollama` sidecar and the `devcontainer` service receive `gpus: all` via the `deploy.resources.reservations.devices` block in the overlay's `docker-compose.yml`:
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
deploy:
|
|
178
|
+
resources:
|
|
179
|
+
reservations:
|
|
180
|
+
devices:
|
|
181
|
+
- driver: nvidia
|
|
182
|
+
count: all
|
|
183
|
+
capabilities: [gpu]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
This means:
|
|
187
|
+
|
|
188
|
+
- The `ollama` sidecar uses the GPU for fast inference
|
|
189
|
+
- The `devcontainer` has direct GPU access for GPU-accelerated tooling such as `torch`, `tensorflow`, and CUDA CLI tools
|
|
190
|
+
|
|
191
|
+
### Prerequisites
|
|
192
|
+
|
|
193
|
+
GPU passthrough requires the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) installed and configured on the host:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Verify NVIDIA driver is installed on the host
|
|
197
|
+
nvidia-smi
|
|
198
|
+
|
|
199
|
+
# Verify NVIDIA Container Toolkit
|
|
200
|
+
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
> **Note:** On machines without an NVIDIA GPU or without the NVIDIA Container Toolkit, Docker Compose may warn about unresolvable device requests. Install the toolkit or remove the `deploy` block via a custom compose override if GPU support is not needed.
|
|
204
|
+
|
|
205
|
+
### Verify GPU Access
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Check NVIDIA GPU is detected inside the devcontainer
|
|
209
|
+
nvidia-smi
|
|
210
|
+
|
|
211
|
+
# Confirm Ollama is using GPU
|
|
212
|
+
ollama run llama3.2 "hello"
|
|
213
|
+
# GPU usage should appear in nvidia-smi output
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**See also:** The [`cuda`](../cuda/README.md) overlay for additional CUDA development tooling (CUDA libraries, `nvcc`, etc.) in the devcontainer.
|
|
217
|
+
|
|
218
|
+
## Use Cases
|
|
219
|
+
|
|
220
|
+
- **Offline AI coding** — Use local models with tools like `codex`, `claude-code`, or `amp` as a privacy-preserving backend
|
|
221
|
+
- **Privacy-preserving LLM APIs** — Process sensitive code or documents without sending data to cloud providers
|
|
222
|
+
- **Testing and prototyping** — Experiment with different models without API costs
|
|
223
|
+
- **CI/CD pipelines** — Run LLM-based tests or validations in an isolated environment
|
|
224
|
+
- **Custom fine-tuned models** — Load and serve models you have trained or customized
|
|
225
|
+
|
|
226
|
+
**Integrates well with:**
|
|
227
|
+
|
|
228
|
+
- `codex` — Point OpenAI Codex CLI at the local Ollama endpoint
|
|
229
|
+
- `claude-code` — Use with a local proxy that speaks the Anthropic API format
|
|
230
|
+
- `amp` — Configure Amp to use the local OpenAI-compatible endpoint
|
|
231
|
+
|
|
232
|
+
## Configuration
|
|
233
|
+
|
|
234
|
+
### Environment Variables
|
|
235
|
+
|
|
236
|
+
Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
cd .devcontainer
|
|
240
|
+
cp .env.example .env
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
| Variable | Default | Description |
|
|
244
|
+
| -------------------- | ----------- | ------------------------------------------------------ |
|
|
245
|
+
| `OLLAMA_MODELS_PATH` | `~/.ollama` | Host path to Ollama data directory (models are shared) |
|
|
246
|
+
| `OLLAMA_VERSION` | `latest` | Ollama Docker image version |
|
|
247
|
+
| `OLLAMA_PORT` | `11434` | Host port for the Ollama API |
|
|
248
|
+
|
|
249
|
+
### Container Env in Devcontainer
|
|
250
|
+
|
|
251
|
+
The following environment variable is set in the container environment (available to all processes, including setup scripts and terminals):
|
|
252
|
+
|
|
253
|
+
| Variable | Value | Description |
|
|
254
|
+
| ------------- | --------------------- | --------------------------------------------- |
|
|
255
|
+
| `OLLAMA_HOST` | `http://ollama:11434` | URL for the Ollama API (used by CLI and SDKs) |
|
|
256
|
+
|
|
257
|
+
## Troubleshooting
|
|
258
|
+
|
|
259
|
+
### Models Not Found
|
|
260
|
+
|
|
261
|
+
If `ollama list` shows no models, the host model directory may not be mounted correctly:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Check the mount inside the container
|
|
265
|
+
ls /root/.ollama/models
|
|
266
|
+
|
|
267
|
+
# Verify OLLAMA_MODELS_PATH points to the right directory
|
|
268
|
+
echo $OLLAMA_MODELS_PATH
|
|
269
|
+
|
|
270
|
+
# Pull a model manually
|
|
271
|
+
ollama pull llama3.2
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Port Conflicts
|
|
275
|
+
|
|
276
|
+
If port `11434` is already in use on your host:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
# .devcontainer/.env
|
|
280
|
+
OLLAMA_PORT=11435
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Then update `forwardPorts` in your devcontainer configuration accordingly, or use the `--port-offset` flag when generating.
|
|
284
|
+
|
|
285
|
+
### GPU Not Detected
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# Check if NVIDIA driver is installed on host
|
|
289
|
+
nvidia-smi
|
|
290
|
+
|
|
291
|
+
# Check NVIDIA Container Toolkit
|
|
292
|
+
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
|
|
293
|
+
|
|
294
|
+
# If toolkit is missing, install it:
|
|
295
|
+
# https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Service Not Starting
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# Check compose service status
|
|
302
|
+
docker compose ps
|
|
303
|
+
|
|
304
|
+
# View Ollama logs
|
|
305
|
+
docker compose logs ollama
|
|
306
|
+
|
|
307
|
+
# Restart the service
|
|
308
|
+
docker compose restart ollama
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## References
|
|
312
|
+
|
|
313
|
+
- [Ollama Official Website](https://ollama.com)
|
|
314
|
+
- [Ollama Docker Image](https://hub.docker.com/r/ollama/ollama)
|
|
315
|
+
- [Ollama Model Library](https://ollama.com/library)
|
|
316
|
+
- [Ollama REST API Documentation](https://github.com/ollama/ollama/blob/main/docs/api.md)
|
|
317
|
+
- [OpenAI Compatibility](https://github.com/ollama/ollama/blob/main/docs/openai.md)
|
|
318
|
+
|
|
319
|
+
**Related Overlays:**
|
|
320
|
+
|
|
321
|
+
- [`cuda`](../cuda/README.md) — NVIDIA GPU passthrough for faster inference
|
|
322
|
+
- [`rocm`](../rocm/README.md) — AMD GPU passthrough for faster inference
|
|
323
|
+
- [`ollama-cli`](../ollama-cli/README.md) — Ollama CLI-only overlay (works in plain stacks and is auto-required here)
|
|
324
|
+
- [`codex`](../codex/README.md) — OpenAI Codex CLI (can use local endpoint)
|
|
325
|
+
- [`claude-code`](../claude-code/README.md) — Anthropic Claude CLI
|
|
326
|
+
- [`amp`](../amp/README.md) — Sourcegraph Amp CLI
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"runServices": ["ollama"],
|
|
4
|
+
"forwardPorts": [11434],
|
|
5
|
+
"portsAttributes": {
|
|
6
|
+
"11434": {
|
|
7
|
+
"label": "Ollama API",
|
|
8
|
+
"onAutoForward": "ignore"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"containerEnv": {
|
|
12
|
+
"OLLAMA_HOST": "http://ollama:11434"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
ollama:
|
|
5
|
+
image: ollama/ollama:${OLLAMA_VERSION:-latest}
|
|
6
|
+
restart: unless-stopped
|
|
7
|
+
volumes:
|
|
8
|
+
- ${OLLAMA_MODELS_PATH:-~/.ollama}:/root/.ollama
|
|
9
|
+
environment:
|
|
10
|
+
- OLLAMA_HOST=0.0.0.0
|
|
11
|
+
ports:
|
|
12
|
+
- '${OLLAMA_PORT:-11434}:11434'
|
|
13
|
+
deploy:
|
|
14
|
+
resources:
|
|
15
|
+
reservations:
|
|
16
|
+
devices:
|
|
17
|
+
- driver: nvidia
|
|
18
|
+
count: all
|
|
19
|
+
capabilities: [gpu]
|
|
20
|
+
networks:
|
|
21
|
+
- devnet
|
|
22
|
+
|
|
23
|
+
networks:
|
|
24
|
+
devnet:
|
|
25
|
+
name: devnet
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: ollama
|
|
2
|
+
name: Ollama
|
|
3
|
+
description: Local LLM inference server with OpenAI-compatible API
|
|
4
|
+
category: dev
|
|
5
|
+
supports:
|
|
6
|
+
- compose
|
|
7
|
+
requires:
|
|
8
|
+
- ollama-cli
|
|
9
|
+
suggests:
|
|
10
|
+
- codex
|
|
11
|
+
- claude-code
|
|
12
|
+
- amp
|
|
13
|
+
- prometheus
|
|
14
|
+
- grafana
|
|
15
|
+
- otel-collector
|
|
16
|
+
conflicts: []
|
|
17
|
+
serviceOrder: 3
|
|
18
|
+
tags:
|
|
19
|
+
- dev
|
|
20
|
+
- ai
|
|
21
|
+
- llm
|
|
22
|
+
- inference
|
|
23
|
+
- ollama
|
|
24
|
+
ports:
|
|
25
|
+
- 11434
|
|
26
|
+
compose_imports:
|
|
27
|
+
- .shared/compose/nvidia-gpu-devcontainer.yml
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verification script for Ollama overlay
|
|
3
|
+
# Confirms Ollama sidecar service is running and accessible
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
echo "🔍 Verifying Ollama overlay..."
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Check OLLAMA_HOST is set
|
|
11
|
+
echo ""
|
|
12
|
+
echo "1️⃣ Checking OLLAMA_HOST..."
|
|
13
|
+
if [[ -z "${OLLAMA_HOST:-}" ]]; then
|
|
14
|
+
echo " ⚠️ OLLAMA_HOST is not set — CLI will target localhost instead of the sidecar"
|
|
15
|
+
else
|
|
16
|
+
echo " ✅ OLLAMA_HOST=${OLLAMA_HOST}"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Check if curl is available
|
|
20
|
+
echo ""
|
|
21
|
+
echo "2️⃣ Checking curl availability..."
|
|
22
|
+
if ! command -v curl &> /dev/null; then
|
|
23
|
+
echo " ❌ curl not found"
|
|
24
|
+
echo ""
|
|
25
|
+
echo "❌ Ollama overlay verification failed (curl is required but not installed)"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
echo " ✅ curl found"
|
|
29
|
+
|
|
30
|
+
# Check Ollama API
|
|
31
|
+
echo ""
|
|
32
|
+
echo "3️⃣ Checking Ollama service..."
|
|
33
|
+
OLLAMA_HOST="${OLLAMA_HOST:-http://ollama:11434}"
|
|
34
|
+
OLLAMA_READY=false
|
|
35
|
+
|
|
36
|
+
set +e
|
|
37
|
+
for i in {1..20}; do
|
|
38
|
+
if curl -sf "${OLLAMA_HOST}/api/tags" &> /dev/null; then
|
|
39
|
+
echo " ✅ Ollama service is ready"
|
|
40
|
+
OLLAMA_READY=true
|
|
41
|
+
break
|
|
42
|
+
fi
|
|
43
|
+
sleep 2
|
|
44
|
+
done
|
|
45
|
+
set -e
|
|
46
|
+
|
|
47
|
+
if [ "$OLLAMA_READY" = false ]; then
|
|
48
|
+
echo " ❌ Ollama service not ready after 40 seconds"
|
|
49
|
+
echo ""
|
|
50
|
+
echo "❌ Ollama overlay verification failed"
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Show available models via REST API
|
|
55
|
+
echo ""
|
|
56
|
+
echo "4️⃣ Listing available models via API..."
|
|
57
|
+
TAGS_JSON=$(curl -sf "${OLLAMA_HOST}/api/tags")
|
|
58
|
+
CURL_STATUS=$?
|
|
59
|
+
if [ $CURL_STATUS -ne 0 ]; then
|
|
60
|
+
echo " ⚠️ Skipping model listing: failed to query /api/tags (curl exit code $CURL_STATUS)"
|
|
61
|
+
else
|
|
62
|
+
MODELS=$(printf '%s\n' "$TAGS_JSON" | grep -o '"name":"[^"]*"' | sed 's/"name":"//;s/"//')
|
|
63
|
+
if [ -n "$MODELS" ]; then
|
|
64
|
+
echo " ✅ Models available:"
|
|
65
|
+
echo "$MODELS" | while read -r model; do
|
|
66
|
+
echo " - $model"
|
|
67
|
+
done
|
|
68
|
+
else
|
|
69
|
+
echo " ℹ️ No models pulled yet. Use 'ollama pull <model>' to download a model."
|
|
70
|
+
fi
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
echo ""
|
|
74
|
+
echo "✅ Ollama overlay verification complete"
|
|
75
|
+
echo " API endpoint: ${OLLAMA_HOST}"
|
|
76
|
+
echo " Docs: https://ollama.com/library"
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Ollama CLI Overlay
|
|
2
|
+
|
|
3
|
+
Installs the [Ollama](https://ollama.com) command-line client in your devcontainer so you can use Ollama models from terminal tools without running an Ollama sidecar in the same compose stack.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Ollama CLI in devcontainer** — Run `ollama pull / run / list / rm` from the main container
|
|
8
|
+
- **Works in plain and compose stacks** — Can be used without a local Ollama service overlay
|
|
9
|
+
- **Remote-server friendly** — Supports connecting to host or external Ollama endpoints via `OLLAMA_HOST`
|
|
10
|
+
- **Fast install path** — Prefers extracting `/usr/bin/ollama` from local `ollama/ollama` Docker image when available
|
|
11
|
+
- **Archive fallback** — Falls back to official Linux release archives (`.tar.zst`, then legacy `.tgz`)
|
|
12
|
+
|
|
13
|
+
## How It Works
|
|
14
|
+
|
|
15
|
+
This overlay installs only the Ollama CLI binary in the devcontainer. It does **not** run `ollama serve` or create a compose service.
|
|
16
|
+
|
|
17
|
+
By default, the CLI targets `http://localhost:11434` unless `OLLAMA_HOST` is set. Set `OLLAMA_HOST` to point at your reachable Ollama server (host machine, sidecar, or remote endpoint).
|
|
18
|
+
|
|
19
|
+
## Configuration
|
|
20
|
+
|
|
21
|
+
Set `OLLAMA_HOST` in your devcontainer environment when needed:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Example: host Ollama server
|
|
25
|
+
export OLLAMA_HOST=http://host.docker.internal:11434
|
|
26
|
+
|
|
27
|
+
# Example: remote Ollama server
|
|
28
|
+
export OLLAMA_HOST=http://10.0.0.50:11434
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
You can also set this in `devcontainer.json` (`containerEnv`/`remoteEnv`) or your shell profile.
|
|
32
|
+
|
|
33
|
+
## Common Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Show CLI version
|
|
37
|
+
ollama --version
|
|
38
|
+
|
|
39
|
+
# Point to a specific server for one command
|
|
40
|
+
OLLAMA_HOST=http://host.docker.internal:11434 ollama list
|
|
41
|
+
|
|
42
|
+
# Pull and run models
|
|
43
|
+
ollama pull llama3.2
|
|
44
|
+
ollama run llama3.2 "explain this function"
|
|
45
|
+
|
|
46
|
+
# Model management
|
|
47
|
+
ollama list
|
|
48
|
+
ollama show llama3.2
|
|
49
|
+
ollama rm llama3.2
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Use Cases
|
|
53
|
+
|
|
54
|
+
- **Use host Ollama from containerized tooling** — Keep Ollama running on host, use CLI in devcontainer
|
|
55
|
+
- **Agent tooling integration** — Pair with `codex`, `claude-code`, or `amp` overlays while pointing at existing Ollama infrastructure
|
|
56
|
+
- **Remote inference endpoints** — Work against Ollama servers running on another machine or VM
|
|
57
|
+
|
|
58
|
+
**Integrates well with:**
|
|
59
|
+
|
|
60
|
+
- `ollama` — Compose sidecar server (this overlay is auto-required there)
|
|
61
|
+
- `codex` — OpenAI Codex CLI
|
|
62
|
+
- `claude-code` — Anthropic Claude Code CLI
|
|
63
|
+
- `amp` — Sourcegraph Amp CLI
|
|
64
|
+
|
|
65
|
+
## Troubleshooting
|
|
66
|
+
|
|
67
|
+
### `ollama` command not found
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
which ollama
|
|
71
|
+
ollama --version
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
If missing, rebuild the container so `setup.sh` runs again.
|
|
75
|
+
|
|
76
|
+
### Cannot reach Ollama endpoint
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
echo "$OLLAMA_HOST"
|
|
80
|
+
curl -v "$OLLAMA_HOST/api/tags"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Verify network reachability from inside the devcontainer and ensure the Ollama server is running.
|
|
84
|
+
|
|
85
|
+
## References
|
|
86
|
+
|
|
87
|
+
- [Ollama Official Website](https://ollama.com)
|
|
88
|
+
- [Ollama Model Library](https://ollama.com/library)
|
|
89
|
+
- [Ollama REST API Documentation](https://github.com/ollama/ollama/blob/main/docs/api.md)
|
|
90
|
+
- [Ollama OpenAI Compatibility](https://github.com/ollama/ollama/blob/main/docs/openai.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
id: ollama-cli
|
|
2
|
+
name: Ollama CLI
|
|
3
|
+
description: Ollama command-line client for local or remote Ollama servers
|
|
4
|
+
category: dev
|
|
5
|
+
supports: []
|
|
6
|
+
requires: []
|
|
7
|
+
suggests:
|
|
8
|
+
- ollama
|
|
9
|
+
- codex
|
|
10
|
+
- claude-code
|
|
11
|
+
- amp
|
|
12
|
+
conflicts: []
|
|
13
|
+
tags:
|
|
14
|
+
- dev
|
|
15
|
+
- ai
|
|
16
|
+
- llm
|
|
17
|
+
- ollama
|
|
18
|
+
- cli
|
|
19
|
+
ports: []
|