Skip to content
convert-to-apple-container logo

Convert to Apple Container

convert-to-apple-container

Switch from Docker to Apple Container for macOS-native container isolation. Use when the user wants Apple Container instead of Docker, or is setting up on macOS and prefers the native runtime. Triggers on "apple container", "convert to apple container", "switch to apple container", or "use apple ...

sskarz/nanoclawbster0installs2stars

SKILL.md

Full skill instructions

Convert to Apple Container

This skill switches NanoClawbster's container runtime from Docker to Apple Container (macOS-only). It uses the skills engine for deterministic code changes, then walks through verification.

What this changes:

  • Container runtime binary: docker → container
  • Mount syntax: -v path:path:ro → --mount type=bind,source=...,target=...,readonly
  • Startup check: docker info → container system status (with auto-start)
  • Orphan detection: docker ps --filter → container ls --format json
  • Build script default: docker → container

What stays the same:

  • Dockerfile (shared by both runtimes)
  • Container runner code (src/​container-runner.ts)
  • Mount security/​allowlist validation
  • All other functionality

Prerequisites

Verify Apple Container is installed:

container --version && echo "Apple Container ready" || echo "Install Apple Container first"

If not installed:

Apple Container requires macOS. It does not work on Linux.

Phase 1: Pre-flight

Check if already applied

Read .nanoclawbster/​state.yaml. If convert-to-apple-container is in applied_skills, skip to Phase 3 (Verify). The code changes are already in place.

Check current runtime

grep "CONTAINER_RUNTIME_BIN" src/​container-runtime.ts

If it already shows 'container', the runtime is already Apple Container. Skip to Phase 3.

Phase 2: Apply Code Changes

Run the skills engine to apply this skill's code package. The package files are in this directory alongside this SKILL.md.

Initialize skills system (if needed)

If .nanoclawbster/ directory doesn't exist yet:

npx tsx scripts/​apply-skill.ts --init

Or call initSkillsSystem() from skills-engine/​migrate.ts.

Apply the skill

npx tsx scripts/​apply-skill.ts .claude/​skills/​convert-to-apple-container

This deterministically:

  • Replaces src/​container-runtime.ts with the Apple Container implementation
  • Replaces src/​container-runtime.test.ts with Apple Container-specific tests
  • Updates container/​build.sh to default to container runtime
  • Records the application in .nanoclawbster/​state.yaml

If the apply reports merge conflicts, read the intent files:

  • modify/​src/​container-runtime.ts.intent.md — what changed and invariants
  • modify/​container/​build.sh.intent.md — what changed for build script

Validate code changes

npm test
npm run build

All tests must pass and build must be clean before proceeding.

Phase 3: Verify

Ensure Apple Container runtime is running

container system status || container system start

Build the container image

./​container/​build.sh

Test basic execution

echo '{}' | container run -i --entrypoint /​bin/​echo nanoclawbster-agent:latest "Container OK"

Test readonly mounts

mkdir -p /​tmp/​test-ro && echo "test" > /​tmp/​test-ro/​file.txt
container run --rm --entrypoint /​bin/​bash \
  --mount type=bind,source=/​tmp/​test-ro,target=/​test,readonly \
  nanoclawbster-agent:latest \
  -c "cat /​test/​file.txt && touch /​test/​new.txt 2>&1 || echo 'Write blocked (expected)'"
rm -rf /​tmp/​test-ro

Expected: Read succeeds, write fails with "Read-only file system".

Test read-write mounts

mkdir -p /​tmp/​test-rw
container run --rm --entrypoint /​bin/​bash \
  -v /​tmp/​test-rw:/​test \
  nanoclawbster-agent:latest \
  -c "echo 'test write' > /​test/​new.txt && cat /​test/​new.txt"
cat /​tmp/​test-rw/​new.txt && rm -rf /​tmp/​test-rw

Expected: Both operations succeed.

Full integration test

npm run build
launchctl kickstart -k gui/​$(id -u)/​com.nanoclawbster

Send a message via WhatsApp and verify the agent responds.

Troubleshooting

Apple Container not found:

Runtime won't start:

container system start
container system status

Image build fails:

# Clean rebuild — Apple Container caches aggressively
container builder stop && container builder rm && container builder start
./​container/​build.sh

Container can't write to mounted directories: Check directory permissions on the host. The container runs as uid 1000.

Summary of Changed Files

FileType of Change
src/​container-runtime.tsFull replacement — Docker → Apple Container API
src/​container-runtime.test.tsFull replacement — tests for Apple Container behavior
container/​build.shDefault runtime: docker → container

More skills from sskarz

add-telegram-swarm logo
sskarz/nanoclawbster

add-telegram-swarm

Add Agent Swarm (Teams) support to Telegram. Each subagent gets its own bot identity in the group. Requires Telegram channel to be set up first (use /add-telegram). Triggers on "agent swarm", "agent teams telegram", "telegram swarm", "bot pool".

2 0
View
get-qodo-rules logo
sskarz/nanoclawbster

get-qodo-rules

Loads org- and repo-level coding rules from Qodo before code tasks begin, ensuring all generation and modification follows team standards. Use before any code generation or modification task when rules are not already loaded. Invoke when user asks to write, edit, refactor, or review code, or when...

2 0
View
mcp-builder logo
sskarz/nanoclawbster

mcp-builder

Build, register, and use custom MCP servers within this environment. Use this when asked to create a new tool, capability, or integration as an MCP server.

2 0
View
customize logo
sskarz/nanoclawbster

customize

Add new capabilities or modify NanoClawbster behavior. Use when user wants to add channels (Telegram, Slack, email input), change triggers, add integrations, modify the router, or make any other customizations. This is an interactive skill that asks questions to understand what the user wants.

2 0
View
update logo
sskarz/nanoclawbster

update

Update NanoClawbster from upstream. Fetches latest changes, merges with your customizations and skills, runs migrations. Triggers on \"update\", \"pull upstream\", \"sync with upstream\", \"get latest changes\".

2 0
View
debug logo
sskarz/nanoclawbster

debug

Debug container agent issues. Use when things aren't working, container fails, authentication problems, or to understand how the container system works. Covers logs, environment variables, mounts, and common issues.

2 0
View
x-integration logo
sskarz/nanoclawbster

x-integration

X (Twitter) integration for NanoClawbster. Post tweets, like, reply, retweet, and quote. Use for setup, testing, or troubleshooting X functionality. Triggers on "setup x", "x integration", "twitter", "post tweet", "tweet".

2 0
View
agent-browser logo
sskarz/nanoclawbster

agent-browser

Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data, and test web pages. Use whenever a browser would be useful, not just when the user explicitly asks.

2 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View