Add fleet setup: Mac OpenClaw deployment scripts and workspace templates
- mac-setup.sh: Install script for OpenClaw on MacBook Air - mac-workspace/: BOOTSTRAP.md, SOUL.md, USER.md templates - DISCORD_BOT_SETUP.md: Guide for creating Discord bots per machine - README.md: Fleet overview and deployment instructions Part of multi-machine OpenClaw network (OC-5070, OC-Mac, OC-Beast)
This commit is contained in:
126
fleet/mac-setup.sh
Executable file
126
fleet/mac-setup.sh
Executable file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# OpenClaw Mac Setup - Mikes-MacBook-Air
|
||||
# Run this on the Mac after cloning the ClaudeTools repo from Gitea
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
|
||||
echo "[INFO] OpenClaw Mac Setup - Starting"
|
||||
echo "================================================"
|
||||
|
||||
# --- Step 1: Install OpenClaw ---
|
||||
echo ""
|
||||
echo "[INFO] Step 1: Installing OpenClaw..."
|
||||
if command -v openclaw &>/dev/null; then
|
||||
echo "[OK] OpenClaw already installed: $(openclaw --version)"
|
||||
else
|
||||
echo "[INFO] Installing via install script..."
|
||||
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
|
||||
fi
|
||||
|
||||
# --- Step 2: Install 1Password CLI (if needed) ---
|
||||
echo ""
|
||||
echo "[INFO] Step 2: Checking 1Password CLI..."
|
||||
if command -v op &>/dev/null; then
|
||||
echo "[OK] op CLI found: $(op --version)"
|
||||
else
|
||||
echo "[INFO] Installing 1Password CLI via brew..."
|
||||
brew install --cask 1password-cli
|
||||
fi
|
||||
|
||||
# --- Step 3: Verify Ollama ---
|
||||
echo ""
|
||||
echo "[INFO] Step 3: Checking Ollama..."
|
||||
if command -v ollama &>/dev/null; then
|
||||
echo "[OK] Ollama found"
|
||||
echo "[INFO] Available models:"
|
||||
ollama list
|
||||
|
||||
# Pull required models if missing
|
||||
for model in "qwen3:14b" "codestral:22b" "nomic-embed-text"; do
|
||||
if ! ollama list | grep -q "$model"; then
|
||||
echo "[INFO] Pulling $model..."
|
||||
ollama pull "$model"
|
||||
else
|
||||
echo "[OK] $model already available"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "[WARNING] Ollama not found. Install from https://ollama.com/download"
|
||||
echo " Then run: ollama pull qwen3:14b codestral:22b nomic-embed-text"
|
||||
fi
|
||||
|
||||
# --- Step 4: Install tmux (needed for 1Password) ---
|
||||
echo ""
|
||||
echo "[INFO] Step 4: Checking tmux..."
|
||||
if command -v tmux &>/dev/null; then
|
||||
echo "[OK] tmux found: $(tmux -V)"
|
||||
else
|
||||
echo "[INFO] Installing tmux..."
|
||||
brew install tmux
|
||||
fi
|
||||
|
||||
# --- Step 5: Onboard OpenClaw ---
|
||||
echo ""
|
||||
echo "[INFO] Step 5: OpenClaw onboarding..."
|
||||
echo "[INFO] You'll need your Anthropic API key."
|
||||
echo "[INFO] If stored in 1Password, retrieve it first:"
|
||||
echo " op item get 'Anthropic' --fields label=credential --reveal"
|
||||
echo ""
|
||||
echo "[INFO] Run: openclaw onboard"
|
||||
echo "[INFO] Select Anthropic, enter API key, install daemon."
|
||||
echo ""
|
||||
echo "[WARNING] DO NOT run onboard automatically - it needs interactive input."
|
||||
echo " Run it manually after this script completes."
|
||||
|
||||
# --- Step 6: Post-onboard configuration ---
|
||||
# This generates a script to run AFTER onboarding completes
|
||||
cat > /tmp/oc-mac-post-onboard.sh << 'POSTEOF'
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "[INFO] Post-onboard configuration..."
|
||||
|
||||
# Set model chain: Claude primary, Ollama fallback
|
||||
openclaw config set agents.defaults.model '{"primary":"anthropic/claude-opus-4-6","fallbacks":["ollama/qwen3:14b"]}'
|
||||
echo "[OK] Model chain configured: Claude Opus -> ollama/qwen3:14b"
|
||||
|
||||
# Enable Ollama auto-discovery
|
||||
# The systemd/launchd service needs OLLAMA_API_KEY in env
|
||||
# On macOS with launchd, we set it in the config instead
|
||||
openclaw config set models.providers.ollama.apiKey "ollama-local" 2>/dev/null || true
|
||||
|
||||
# Enable web search
|
||||
openclaw config set tools.web.search.enabled true
|
||||
openclaw config set tools.web.search.provider duckduckgo
|
||||
|
||||
# Enable plugins
|
||||
openclaw config set plugins.entries.duckduckgo.enabled true
|
||||
|
||||
echo "[OK] Post-onboard config applied"
|
||||
echo "[INFO] Restart gateway: openclaw gateway restart"
|
||||
echo ""
|
||||
echo "[INFO] Next steps:"
|
||||
echo " 1. Set up Discord bot (get token from Mike/OC-5070)"
|
||||
echo " 2. Configure workspace files (AGENTS.md, SOUL.md, etc.)"
|
||||
echo " 3. Connect to Tailscale mesh"
|
||||
echo ""
|
||||
echo "[OK] Mac setup complete!"
|
||||
POSTEOF
|
||||
chmod +x /tmp/oc-mac-post-onboard.sh
|
||||
|
||||
echo ""
|
||||
echo "================================================"
|
||||
echo "[OK] Pre-onboard setup complete!"
|
||||
echo ""
|
||||
echo "Next steps (in order):"
|
||||
echo " 1. Run: openclaw onboard"
|
||||
echo " - Select Anthropic provider"
|
||||
echo " - Enter API key"
|
||||
echo " - Install daemon: yes"
|
||||
echo " 2. Run: bash /tmp/oc-mac-post-onboard.sh"
|
||||
echo " 3. Set up Discord bot (see fleet/DISCORD_BOT_SETUP.md)"
|
||||
echo " 4. Copy fleet/mac-workspace/* into OpenClaw workspace:"
|
||||
echo " cp fleet/mac-workspace/* \$(openclaw config get agents.defaults.workspace)/"
|
||||
echo " 5. Start chatting - bot will read BOOTSTRAP.md and set itself up"
|
||||
echo "================================================"
|
||||
Reference in New Issue
Block a user