Files
openclaude-LLM-local/docs/rag-mcp-starter/status.sh
T
2026-04-21 15:30:47 +10:00

105 lines
3.1 KiB
Bash
Executable File

#!/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"