Mirror of the public Nokido wiki (source of truth: https://github.com/Nokido-labs/nokido/wiki/10-Docker-Profiles). Edits belong there.
Updated: 2026-08-30
⚠️ Ports arrêtés cités dans cette page (note ajoutée le 2026-08-30 ; le corps ci-dessous n'a pas été réécrit) :
brain_worker :5557est arrete depuis le 2026-06-03 (OOM ONNX BGE-M3) — l'embedder vivant est:8099(BGE-M3 GGUF llama.cpp).
Nokido's Docker setup uses Compose profiles to ship only the services
you need. Five profiles (core, full, all, dev) and four image
variants (core, hub, full, all).
Compose file : docker/nokido/docker-compose.yml. Dockerfile :
docker/nokido/Dockerfile.
docker compose --profile X up).BUILD_VARIANT=Y docker compose build).You combine them : a small image variant + a minimal profile = lightest
setup. A heavy image variant + the all profile = full stack.
| Profile | Services | Image size | Use case |
|---|---|---|---|
core |
ollama + laforge-hub |
~1 GB | Daily dev, single-host. |
full |
+ deno-webhub + brain-worker |
~2.5 GB | Production-like, with event bus + embedder. |
all |
+ netcfg-agent + searxng |
~3.5 GB | Multi-vendor network management + local web search. |
dev |
+ adminer |
+50 MB | Database browsing during development. |
Profiles compose with --profile flags :
# Minimal
docker compose -f docker/nokido/docker-compose.yml --profile core up -d
# Production
docker compose --profile full up -d
# Everything including dev tools
docker compose --profile all --profile dev up -d
core profileollama :11434 — LLM inference (Ollama). Pull models withdocker exec laforge-ollama ollama pull <model>. Models persisted inollama_data volume.laforge-hub :8766 — the hub itself. Built fromdocker/nokido/Dockerfile. Volumes : rag_data (/app/RAG),logs_data (/app/logs), sandbox_data (/app/sandbox), vault_data/app/data).full profile (adds)deno-webhub :7401 — Deno event bus (nervous system). Mountsproxy_deno/ read-only. Communicates with hub via the internalbrain-worker :5557 (ZMQ) — Rust + ONNX BGE-M3 embedder. Builtdocker/brain_worker/Dockerfile (separate image). Mountsrag_data read-only + models_data for ONNX model cache.all profile (adds)netcfg-agent :7500 (UI) + :8767 (MCP) — multi-vendor networknetcfg_data.searxng :8888 → :8080 — self-hosted SearXNG for web_search tool.dev profile (adds)adminer :8080 — browse embeddings.db via web UI. Useful forrag_chunks, agent_messages, network_log.Build the hub image with one of four extras combinations :
BUILD_VARIANT=core docker compose -f docker/nokido/docker-compose.yml build laforge-hub
BUILD_VARIANT=hub docker compose build laforge-hub # default
BUILD_VARIANT=full docker compose build laforge-hub
BUILD_VARIANT=all docker compose build laforge-hub
| VARIANT | pyproject extra | Includes | Image size |
|---|---|---|---|
core |
(core only) |
httpx + requests + pydantic + psutil + rich | ~80 MB |
hub |
[hub,rag,llm,docs,git] |
+ FastAPI + FAISS + litellm + tree-sitter + gitpython | ~450 MB |
full |
[hub,rag,llm,cloud,ui,git,docker,docs] |
+ Anthropic/Groq/Cohere clients + Textual + PySide6 + Docker SDK | ~900 MB |
all |
[all] |
+ torch + jax + sentence-transformers + semgrep + pwntools + …everything | ~5 GB |
Default is hub — useful for the core and full compose profiles.
If you run the all compose profile, set BUILD_VARIANT=full or all
to make the heavy services usable.
The Dockerfile uses two stages for layer caching and small final images :
gcc, g++, libffi-dev, libssl-dev, git, curl./wheels for the requested VARIANT.Builds the laforge-agent wheel itself.
runtime (Python 3.12-slim, minimal apt) :
curl (healthcheck) + libgomp1 (faiss)./wheels with --no-index --find-links=/wheels (offline,/health.LAFORGE_ROOT=/app, LAFORGE_ENV=prod.| Volume | Mount | Purpose |
|---|---|---|
ollama_data |
/root/.ollama (ollama container) |
Persisted LLM model files. |
rag_data |
/app/RAG |
embeddings.db + FAISS indexes + lessons. |
logs_data |
/app/logs |
All log files. |
sandbox_data |
/app/sandbox |
Scratch space + heartbeats. |
vault_data |
/app/data |
machine_vault.dat (DPAPI-equivalent on Linux ≡ keyring file fallback). |
models_data |
/app/models (brain-worker) |
ONNX BGE-M3 model cache. |
netcfg_data |
/app/netcfg (netcfg-agent) |
Multi-vendor config + KeePass vault. |
searxng_data |
/etc/searxng |
SearXNG config + custom plugins. |
Backup : docker compose down && docker run --rm -v nokido_rag_data:/data -v $(pwd):/backup alpine tar czf /backup/rag.tar.gz /data.
laforge-default).http://laforge-hub:8766, http://ollama:11434,http://laforge-deno-webhub:7401, etc.8766 → laforge-hub11434 → ollama7401 → deno-webhub5557 → brain-worker (ZMQ)7500 / 8767 → netcfg-agent (UI / MCP)8888 → searxng8080 → adminer (dev)extra_hosts: ["host.docker.internal:host-gateway"] lets the hub reachEvery service that exposes HTTP has a healthcheck :
ollama : curl -sf http://localhost:11434/api/tagslaforge-hub : curl -sf http://localhost:8766/healthStart-period : 15s for laforge-hub (warmup time : RAG load + ONNX init).
If you need to embed a custom skill or pre-pulled models, fork the
Dockerfile :
FROM nokido:hub AS base
USER root
RUN apt-get update && apt-get install -y my-tool
USER nokido
COPY my-skill/ /app/skills/my-skill/
Build : docker build -f Dockerfile.custom -t nokido:my-build .. Override
the image in compose : image: nokido:my-build.
OLLAMA_MAX_LOADED_MODELS=1 (default in compose)docker build on a non-GPU host and expect CUDAbrain-worker is CPU-bound by default. To use aBRAIN_WORKER_BACKEND=directml|vulkan|openvino|cuda in theenvironment block.0.0.0.0:8766 inside the container, but the port127.0.0.1:8766:8766 — only localhost reaches it. Torun/orchestrate Docker actions = thenokido UID 1000 inside the container. The container itself runs asvault_data contains decryptable secrets if the host is compromisedNokido.env on disk. The DPAPI / KeychainFor a full threat model, see 07 — Security model.