#!/usr/bin/env bash set -euo pipefail # Compact status dashboard for local OpenClaude stack. # # Usage: # ./status.sh # ./status.sh --model qwen2.5:3b # QDRANT_COLLECTION=mydocs ./status.sh MODEL="${MODEL:-qwen2.5-coder:7b}" QDRANT_URL="${QDRANT_URL:-http://127.0.0.1:6333}" QDRANT_COLLECTION="${QDRANT_COLLECTION:-docs}" WORKDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ok() { printf "✅ %s\n" "$1"; } bad() { printf "❌ %s\n" "$1"; } info() { printf "• %s\n" "$1"; } echo "=== OpenClaude Local Stack Status ===" echo "time: $(date '+%Y-%m-%d %H:%M:%S')" echo # OpenClaude if command -v openclaude >/dev/null 2>&1; then oc_path="$(command -v openclaude)" ok "openclaude found ($oc_path)" else bad "openclaude not found" fi # Ollama process/API if command -v ollama >/dev/null 2>&1; then ok "ollama CLI found" else bad "ollama CLI not found" fi if curl -fsS "http://127.0.0.1:11434/api/tags" >/dev/null 2>&1; then ok "ollama API reachable (127.0.0.1:11434)" else bad "ollama API unavailable" fi # Model check if command -v ollama >/dev/null 2>&1 && ollama list | awk '{print $1}' | rg "^${MODEL}$" >/dev/null 2>&1; then ok "model present: $MODEL" else bad "model not found locally: $MODEL" info "pull with: ollama pull $MODEL" fi # Qdrant API / collection stats if curl -fsS "${QDRANT_URL}/collections" >/dev/null 2>&1; then ok "qdrant reachable (${QDRANT_URL})" if stats="$(curl -fsS "${QDRANT_URL}/collections/${QDRANT_COLLECTION}")"; then ok "collection exists: ${QDRANT_COLLECTION}" vectors="$(printf "%s" "$stats" | rg -o '"vectors_count"\s*:\s*[0-9]+' | rg -o '[0-9]+' | head -n 1 || true)" points="$(printf "%s" "$stats" | rg -o '"points_count"\s*:\s*[0-9]+' | rg -o '[0-9]+' | head -n 1 || true)" [[ -n "${vectors:-}" ]] && info "vectors_count: $vectors" [[ -n "${points:-}" ]] && info "points_count: $points" else bad "collection missing: ${QDRANT_COLLECTION}" info "index docs with: python index.py" fi else bad "qdrant API unavailable (${QDRANT_URL})" fi # Python venv/deps if [[ -x "${WORKDIR}/.venv/bin/python" ]]; then ok "python venv found (${WORKDIR}/.venv)" if "${WORKDIR}/.venv/bin/python" -c "import fastmcp, qdrant_client, requests" >/dev/null 2>&1; then ok "python deps installed" else bad "python deps missing in venv" fi else bad "python venv not found" fi # Disk usage echo echo "=== Disk Snapshot ===" df -h "$WORKDIR" | sed -n '1,2p' if [[ -d /var/lib/docker ]]; then info "docker dir: $(du -sh /var/lib/docker 2>/dev/null | awk '{print $1}' || echo n/a)" fi if [[ -d /usr/share/ollama || -d /var/lib/ollama ]]; then info "ollama storage: check with sudo du -h --max-depth=2 /usr/share/ollama /var/lib/ollama 2>/dev/null | sort -h | tail -n 20" fi echo echo "=== Quick Commands ===" echo "local run (bash):" echo " export CLAUDE_CODE_USE_OPENAI=1" echo " export OPENAI_BASE_URL=http://127.0.0.1:11434/v1" echo " export OPENAI_MODEL=$MODEL" echo " openclaude" echo "local run (Windows PowerShell):" echo ' $env:CLAUDE_CODE_USE_OPENAI="1"' echo ' $env:OPENAI_BASE_URL="http://127.0.0.1:11434/v1"' echo " \$env:OPENAI_MODEL=\"$MODEL\"" echo " openclaude"