NanoClaw is an AI assistant that runs agents inside separate Linux containers, isolating their files and execution environments. People use it to connect agents to messaging services and run assistants with memory and scheduled jobs. The catalogue contains skills and instructions for extending or operating NanoClaw.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add nanocoai/nanoclaw --skill add-ollama-providergit clone --depth 1 https://github.com/nanocoai/nanoclawWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nanocoai/nanoclaw/add-ollama-provider)<a href="https://agentmods.dev/skills/nanocoai/nanoclaw/add-ollama-provider"><img src="https://agentmods.dev/badge/skills/nanocoai/nanoclaw/add-ollama-provider/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/nanocoai/nanoclaw/add-ollama-provider"><img src="https://agentmods.dev/badge/skills/nanocoai/nanoclaw/add-ollama-provider.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 8 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 72 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
- high Agent Snooping · line 129 Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.Fix: Remove all code or instructions that access agent configuration directories (.claude/, .codex/, .gemini/). If configuration values are needed, pass them explicitly as parameters or environment variabl
- medium Privilege Escalation · line 72 Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.Fix: Avoid sudo/root unless strictly required. Prefer least-privilege patterns. If elevation is needed, document the justification and scope.
- medium Privilege Escalation · line 72 Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.Fix: Avoid sudo/root unless strictly required. Prefer least-privilege patterns. If elevation is needed, document the justification and scope.
- medium Rogue Agent · line 118 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
- medium Rogue Agent · line 139 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
- medium Rogue Agent · line 140 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
- medium Rogue Agent · line 140 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00088 | $0.01637 |
| Opus 5 | $0.00044 | $0.00818 |
| Sonnet 5 | $0.00018 | $0.00327 |
| Haiku 4.5 | $0.00009 | $0.00164 |
Grade C, and why
add-ollama-provider scanned grade C with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
If it shows `chmod 755`, change it to `chmod 777` so any uid can write there. Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
file, not from env vars. This file is bind-mounted into the container as `~/.claude/settings.json`. Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
1. **Ollama is installed and running** on the host — verify: `curl -s http://localhost:11434/api/tags` Copies of this mod
2 near-identical copies found in the catalogue:
- add-ollama-provider — 100% identical, 2 lines differ
- add-ollama-provider — 95% identical, 15 lines differ
How it starts
The opening of the file, as written. The whole thing — 183 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add Ollama Provider
Routes an agent group to a local Ollama instance instead of the Anthropic API.
See docs/ollama.md for how this works and the tradeoffs involved.
Prerequisites
- Ollama is installed and running on the host — verify:
curl -s http://localhost:11434/api/tags - A model is pulled — e.g.
ollama pull gemma4orollama pull qwen3-coder - The agent group already exists — run
/init-first-agentfirst if needed
1. Check source support
The feature requires two fields in ContainerConfig (env and blockedHosts) and their
corresponding wiring in container-runner.ts. Check if already present:
grep -c 'blockedHosts' src/container-config.ts src/container-runner.ts
If either count is 0, apply the changes in steps 1a and 1b. Otherwise skip to step 2.
1a. Extend ContainerConfig
In src/container-config.ts, add to the ContainerConfig interface:
env?: Record<string, string>;
blockedHosts?: string[];
And in readContainerConfig, add inside the returned object:
env: raw.env,
blockedHosts: raw.blockedHosts,
1b. Wire into container-runner
In src/container-runner.ts, after the NANOCLAW_MCP_SERVERS block, add:
// Per-agent-group env overrides — applied last to win over OneCLI values.
if (containerConfig.env) {
for (const [key, value] of Object.entries(containerConfig.env)) {
args.push('-e', `${key}=${value}`);
}
}
// Blocked hosts: resolve to 0.0.0.0 so they are unreachable inside the container.
if (containerConfig.blockedHosts) {
for (const host of containerConfig.blockedHosts) {
args.push('--add-host', `${host}:0.0.0.0`);
}
}
1c. Fix home directory permissions (if not already done)
The container may run as your host uid (not uid 1000). Check the Dockerfile:
grep 'chmod.*home/node' container/Dockerfile
If it shows chmod 755, change it to chmod 777 so any uid can write there.
Then rebuild the container image: ./container/build.sh
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 183 lines · 88 tokens per session scan C 33de02478ba4
add-ollama-provider is a skill published in the GitHub repository nanocoai/nanoclaw (30,736 stars, last pushed yesterday), licensed MIT. It adds 88 tokens to every session and 1,637 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 3 findings (asks for root, reads agent configuration directories, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
Pynchy Development
Use when running pynchy locally — running the app, tests, linting, formatting, prek hooks, or rebuilding the agent container. Also use when determining whether you're on the live Pynchy host or a local machine, and for debugging agent behavior-- session transcript branching, inspecting message history and agent traces…
Pynchy Plugin Authoring
Use when creating, scaffolding, or updating a pynchy plugin, including channels, MCP servers, skills, agent cores, workspace specs, and container runtime plugins. Also use when users ask how to register plugins via config.toml, add entry points, or validate plugin hook wiring.
x-integration
Post tweets, like, reply, retweet, and quote on X (Twitter) using browser automation. Use when the user asks you to interact with X/Twitter.
slack-token-extractor
Refresh expired Slack browser tokens (xoxc/xoxd) using persistent browser sessions. Use when Slack MCP tools fail with authentication errors.
Documentation Manager
Use when writing or reviewing pynchy documentation, deciding where to document things, updating the docs, checking doc consistency, or fixing broken links. Covers information architecture, writing philosophy, tree-shaped navigation, doc-code coupling, no hard-coded usernames, extensibility framing for pluggable…
python-heredoc
When running multi-line Python code or code with quotes, apostrophes, or f-strings via Bash, always use heredoc syntax instead of python -c to avoid shell quoting issues.