add-anydoc
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
Add Ollama MCP server so the container agent can call local models and optionally manage the Ollama model library.
$ npx -y skills add nanocoai/nanoclaw --skill add-ollama-tool --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/add-ollama-toolContext preview
The summary Claude sees to decide when to auto-load this skill.
Add Ollama MCP server so the container agent can call local models and optionally manage the Ollama model library.
name: add-ollama-tool description: Add Ollama MCP server so the container agent can call local models and optionally manage the Ollama model library.
This skill adds a stdio-based MCP server that exposes local [Ollama](https://ollama.com) models as tools for the container agent. Claude remains the orchestrator but can offload work to local models served by the Ollama daemon on the host, and can optionally manage the model library directly. Ollama runs locally and is keyless — there are no credentials to thread; the only configuration is the daemon's base URL.
Core tools (always available):
Management tools (opt-in via `OLLAMA_ADMIN_TOOLS=true`):
The skill ships the MCP server source (and its tests) in this folder and copies them into the agent-runner tree at install time, then registers the server in `index.ts` and forwards host env vars in `container-runner.ts`. Registering the server is enough to expose its tools — the agent's allow-pattern (`mcp__ollama__*`) is derived from the registered server name.
Check if `container/agent-runner/src/ollama-mcp-stdio.ts` exists. If it does, skip to Phase 3 (Configure).
Verify Ollama is installed and its daemon is reachable. On the host:
curl -s http://127.0.0.1:11434/api/tags | head
If the request fails:
1. Install Ollama from https://ollama.com/download. 2. Start it (the desktop app runs the daemon, or run `ollama serve`). 3. Confirm the daemon answers: `curl -s http://127.0.0.1:11434/api/tags`.
If no models are installed, suggest pulling one:
> You need at least one model. For example: > > ```bash > ollama pull gemma3:1b # Small, fast (~1GB) > ollama pull llama3.2 # Good general purpose (~2GB) > ollama pull qwen3-coder:30b # Best for code tasks (~18GB) > ```
This skill reaches into both the container (Bun) tree and the host (Node) tree, so its files go into both, alongside the integration points they cover.
S=.claude/skills/add-ollama-tool # Container (Bun) tree — the MCP server and the registration wiring test cp $S/ollama-mcp-stdio.ts container/agent-runner/src/ollama-mcp-stdio.ts cp $S/ollama-registration.test.ts container/agent-runner/src/ollama-registration.test.ts # Host (Node) tree — the env-forwarding helper and the wiring test cp $S/ollama-env.ts src/ollama-env.ts cp $S/ollama-wiring.test.ts src/ollama-wiring.test.ts
Edit `container/agent-runner/src/index.ts`. Find the `mcpServers` object that currently looks like this:
const mcpServers: Record<string, { command: string; args: string[]; env: Record<string, string> }> = {
nanoclaw: {
command: 'bun',
args: ['run', mcpServerPath],
env: {},
},
};Add an `ollama` entry alongside `nanoclaw`:
const mcpServers: Record<string, { command: string; args: string[]; env: Record<string, string> }> = {
nanoclaw: {
command: 'bun',
args: ['run', mcpServerPath],
env: {},
},
ollama: {
command: 'bun',
args: ['run', path.join(__dirname, 'ollama-mcp-stdio.ts')],
env: {
...(process.env.OLLAMA_HOST ? { OLLAMA_HOST: process.env.OLLAMA_HOST } : {}),
...(process.env.OLLAMA_ADMIN_TOOLS ? { OLLAMA_ADMIN_TOOLS: process.env.OLLAMA_ADMIN_TOOLS } : {}),
},
},
};`ollama-registration.test.ts` asserts this entry is present and points at the server module — the tool only appears to the agent if it is registered here.
The container receives `TZ` and OneCLI networking vars by default; any other host env var the MCP subprocess needs must be forwarded explicitly. The forwarding logic lives in the copied `src/ollama-env.ts` (`ollamaEnv()`) — `OLLAMA_HOST` (the daemon base URL) and `OLLAMA_ADMIN_TOOLS` (the library-management opt-in flag). Both are configuration, not credentials (Ollama itself is local and keyless), so they belong on the composed `env` literal — a credential-NAMED key would need the `contributedEnv` lane instead (see `add-atomic-chat-tool` for that shape).
Import it in `src/container-runner.ts` (alongside the other local imports):
import { ollamaEnv } from './ollama-env.js';Then, in `composeSessionSpec`, find the `env` literal (the `TZ` line) and spread the helper right after it:
const env: Record<string, string> = {
TZ: containerConfig.timezone ?? TIMEZONE,
...ollamaEnv(),
};`ollama-wiring.test.ts` asserts this `...ollamaEnv()` spread exists inside `composeSessionSpec`.
> **Shared block.** This rewrites the driver's container-stderr logger, which other local-model tools (e.g. `add-atomic-chat-tool` for `[ATOMIC]`) also edit to surface their own prefix. Touch only the `[OLLAMA]` branch and leave the rest of the block intact, so the edits coexist and removal restores it cleanly.
Container stderr now lands in the Docker driver: in `src/drivers/docker-driver.ts`, inside `DockerHandle.start()`, find the stderr handler:
proc.onStderr((line) => {
log.debug(line, { container: this.name });
this.#stderrTail.pushA lightweight alternative to OpenClaw that runs in containers for security. Connects to WhatsApp, Telegram, Slack, Discord, Gmail and other messaging apps,, has memory, scheduled jobs, and runs directly on Anthropic's Agents SDK
Repo: nanocoai/nanoclaw
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
Convert an attached Word document, presentation, spreadsheet, OpenDocument file, RTF, EPUB, CSV, or text-based PDF into local Markdown. Use when a message…
Add Atomic Chat MCP server so the container agent can call local models served by the Atomic Chat desktop app via its OpenAI-compatible API.
Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired…
Use Codex (OpenAI's codex app-server) as a full agent provider — planning, tool orchestration, MCP tools, server-side history, session resume — alongside or…
Add a monitoring dashboard to NanoClaw. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots.