#!/bin/bash # Clawbridge Runner Installer # Usage: curl -fsSL https://clawbridge.cloud/install | bash set -e GITHUB_REPO="LeeTheBuilder/ClawBridge" LATEST_DOWNLOAD_BASE="https://github.com/LeeTheBuilder/ClawBridge/releases/latest/download" INSTALL_DIR="/usr/local/bin" BINARY_NAME="clawbridge" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo "" echo -e "${GREEN}🌉 Clawbridge Runner Installer${NC}" echo " Release: latest" echo "" # Detect OS and architecture detect_platform() { OS="$(uname -s)" ARCH="$(uname -m)" case "${OS}" in Linux*) OS="linux" ;; Darwin*) OS="macos" ;; MINGW*|MSYS*|CYGWIN*) OS="win" ;; *) echo -e "${RED}Error: Unsupported operating system: ${OS}${NC}" exit 1 ;; esac case "${ARCH}" in x86_64|amd64) ARCH="x64" ;; arm64|aarch64) ARCH="arm64" ;; *) echo -e "${RED}Error: Unsupported architecture: ${ARCH}${NC}" exit 1 ;; esac PLATFORM="${OS}-${ARCH}" echo -e "Detected platform: ${BLUE}${PLATFORM}${NC}" } # Download and install the binary install_binary() { BINARY_SUFFIX="" if [ "${OS}" = "win" ]; then BINARY_SUFFIX=".exe" fi DOWNLOAD_URL="${LATEST_DOWNLOAD_BASE}/clawbridge-${PLATFORM}${BINARY_SUFFIX}" echo "" echo "Downloading from: ${DOWNLOAD_URL}" # Create temp directory TMP_DIR="$(mktemp -d)" TMP_FILE="${TMP_DIR}/clawbridge${BINARY_SUFFIX}" # Download if command -v curl &> /dev/null; then if ! curl -fsSL "${DOWNLOAD_URL}" -o "${TMP_FILE}"; then echo -e "${RED}Error: Failed to download binary.${NC}" echo "Please check if the release exists at: https://github.com/${GITHUB_REPO}/releases" rm -rf "${TMP_DIR}" exit 1 fi elif command -v wget &> /dev/null; then if ! wget -q "${DOWNLOAD_URL}" -O "${TMP_FILE}"; then echo -e "${RED}Error: Failed to download binary.${NC}" echo "Please check if the release exists at: https://github.com/${GITHUB_REPO}/releases" rm -rf "${TMP_DIR}" exit 1 fi else echo -e "${RED}Error: Neither curl nor wget found. Please install one of them.${NC}" rm -rf "${TMP_DIR}" exit 1 fi # Verify download if [ ! -f "${TMP_FILE}" ] || [ ! -s "${TMP_FILE}" ]; then echo -e "${RED}Error: Downloaded file is empty or missing.${NC}" rm -rf "${TMP_DIR}" exit 1 fi # Make executable chmod +x "${TMP_FILE}" # Install to system path echo "" echo "Installing to ${INSTALL_DIR}/${BINARY_NAME}..." if [ -w "${INSTALL_DIR}" ]; then mv "${TMP_FILE}" "${INSTALL_DIR}/${BINARY_NAME}" else echo "Requesting sudo access to install to ${INSTALL_DIR}..." sudo mv "${TMP_FILE}" "${INSTALL_DIR}/${BINARY_NAME}" fi # Cleanup rm -rf "${TMP_DIR}" echo "" echo -e "${GREEN}✅ Clawbridge installed successfully!${NC}" } # Verify installation verify_installation() { echo "" if command -v clawbridge &> /dev/null; then echo "Installed version:" clawbridge --version 2>/dev/null || echo " clawbridge (version check not available)" else echo -e "${YELLOW}Note: You may need to restart your terminal or add ${INSTALL_DIR} to your PATH.${NC}" fi } # Install OpenClaw skill if openclaw is available install_openclaw_skill() { echo "" if command -v openclaw &> /dev/null; then echo -e "${BLUE}📦 OpenClaw detected — installing Clawbridge skill...${NC}" if openclaw skills install clawbridge-skill-latest 2>/dev/null || clawhub install clawbridge-skill-latest; then echo -e "${GREEN}✅ Skill installed. Use /clawbridge in OpenClaw chat.${NC}" else echo -e "${YELLOW}⚠️ Skill install skipped (optional). You can install later:${NC}" echo -e " ${YELLOW}openclaw skills install clawbridge-skill-latest${NC}" fi else echo -e "${RED}Error: OpenClaw not found. Please install it first.${NC}" echo " If you use OpenClaw, install the skill to use /clawbridge in chat:" echo -e " ${YELLOW}openclaw skills install clawbridge-skill-latest${NC}" fi } # Print next steps print_next_steps() { echo "" echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo "" echo -e "${GREEN}Next steps:${NC}" echo "" echo " 1. Create a workspace at https://clawbridge.cloud" echo " Sign in and create a new workspace to get your connect code" echo "" echo " 2. Link your workspace:" echo -e " ${YELLOW}clawbridge link CB-XXXXXX${NC}" echo "" echo " 3. Run:" echo -e " ${YELLOW}clawbridge run${NC}" echo "" echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo "" } # Main main() { detect_platform install_binary verify_installation install_openclaw_skill print_next_steps } main