@@ -187,36 +187,36 @@ ccc search --refresh database schema # update index first, then
187187By default, ` ccc search ` scopes results to your current working directory (relative to the project root). Use ` --path ` to override.
188188
189189## Docker
190-
190+
191191A Docker image is available for teams who want a reproducible, dependency-free
192192setup — no Python, ` uv ` , or system dependencies required on the host.
193-
193+
194194### Pull the image
195-
195+
196196``` bash
197197docker pull ghcr.io/cocoindex-io/cocoindex-code:latest
198198```
199-
199+
200200### Claude Code
201-
201+
202202``` bash
203203claude mcp add cocoindex-code \
204204 -- docker run --rm --interactive \
205205 --volume " $( pwd) :/workspace" \
206206 --volume cocoindex-model-cache:/root/.cache \
207207 ghcr.io/cocoindex-io/cocoindex-code:latest
208208```
209-
209+
210210### Codex
211-
211+
212212``` bash
213213codex mcp add cocoindex-code \
214214 -- docker run --rm --interactive \
215215 --volume " $( pwd) :/workspace" \
216216 --volume cocoindex-model-cache:/root/.cache \
217217 ghcr.io/cocoindex-io/cocoindex-code:latest
218218```
219-
219+
220220> ** Tip — pre-warm the index before first use:**
221221> The MCP server indexes on demand, but for large codebases you can run the
222222> indexer once in the foreground to watch progress and ensure everything is
@@ -229,26 +229,26 @@ codex mcp add cocoindex-code \
229229> --entrypoint cocoindex-code \
230230> ghcr.io/cocoindex-io/cocoindex-code:latest index
231231> ` ` `
232-
232+
233233# ## Configuration via environment variables
234-
234+
235235All [configuration variables](# configuration) work identically in Docker — pass
236236them with ` --env` / ` -e` :
237-
237+
238238` ` ` bash
239239# Extra extensions (e.g. Typesafe Config, SBT build files)
240240-e COCOINDEX_CODE_EXTRA_EXTENSIONS=" conf,sbt"
241-
241+
242242# Exclude build artefacts (Scala/SBT example)
243243-e COCOINDEX_CODE_EXCLUDE_PATTERNS=' ["**/target/**","**/.bloop/**","**/.metals/**"]'
244-
244+
245245# Swap in a code-optimised embedding model
246246-e COCOINDEX_CODE_EMBEDDING_MODEL=voyage/voyage-code-3
247247-e VOYAGE_API_KEY=your-key
248248` ` `
249-
249+
250250Full example with all options:
251-
251+
252252` ` ` bash
253253docker run --rm --interactive \
254254 --volume " $( pwd) :/workspace" \
@@ -259,25 +259,25 @@ docker run --rm --interactive \
259259 -e VOYAGE_API_KEY=your-key \
260260 ghcr.io/cocoindex-io/cocoindex-code:latest
261261` ` `
262-
262+
263263# ## Named volume for the model cache
264-
264+
265265The default embedding model (~90 MB) is baked into the image. If you override
266266` COCOINDEX_CODE_EMBEDDING_MODEL` with an external model, use a named volume so
267267it is downloaded only once:
268-
268+
269269` ` ` bash
270270docker volume create cocoindex-model-cache
271271` ` `
272-
272+
273273# ## Build the image locally
274-
274+
275275` ` ` bash
276276docker build -t cocoindex-code:local -f docker/Dockerfile .
277277` ` `
278-
278+
279279# ## `.mcp.json` (Claude Code project config)
280-
280+
281281` ` ` json
282282{
283283 " mcpServers" : {
@@ -294,7 +294,7 @@ docker build -t cocoindex-code:local -f docker/Dockerfile .
294294 }
295295}
296296` ` `
297-
297+
298298> ** Note:** The index (` .cocoindex_code/` ) is written inside ` /workspace` , which
299299> maps to your project root on the host. Incremental updates persist between
300300> sessions. Add ` .cocoindex_code/` to your ` .gitignore` .
0 commit comments