| #!/bin/bash |
| set -e |
|
|
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "β Agent-Q3 β Ollama Cloud Model Stack β" |
| echo "β ALL inference via Ollama Cloud β no local GGUFs β" |
| echo "β Account: nicholasjmcleod@gmail.com / LN-8RDGA90Ultra β" |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "" |
|
|
| NAMESPACE="${OLLAMA_NAMESPACE:-nicholasjmcleod}" |
|
|
| declare -A CLOUD_TAGS=( |
| ["reasoner"]="${NAMESPACE}/kimi-linear:q6_k" |
| ["tandem"]="${NAMESPACE}/harmonic-hermes:q6_k" |
| ["coder"]="${NAMESPACE}/ultracoder:q4_k_m" |
| ["fallback"]="${NAMESPACE}/qwopus:q8_0" |
| ["coder_dedicated"]="${NAMESPACE}/qwen3-coder-53b:q6_k" |
| ["genstruct"]="${NAMESPACE}/genstruct:q6_k" |
| ["infinity_parser"]="${NAMESPACE}/infinity-parser:latest" |
| ) |
|
|
| declare -A DISPLAY_NAMES=( |
| ["reasoner"]="Kimi-Linear-48B" |
| ["tandem"]="Harmonic-Hermes-9B" |
| ["coder"]="Ultra-Coder-Brain" |
| ["fallback"]="Qwopus3.6-27B" |
| ["coder_dedicated"]="Qwen3-Coder-53B" |
| ["genstruct"]="Genstruct-7B" |
| ["infinity_parser"]="Infinity-Parser2-Pro" |
| ) |
|
|
| |
| ollama serve & |
| OLLAMA_PID=$! |
|
|
| echo "[1/3] Waiting for Ollama daemon..." |
| MAX_WAIT=60 |
| WAITED=0 |
| until curl -sf http://localhost:11434/ > /dev/null 2>&1; do |
| sleep 2 |
| WAITED=$((WAITED + 2)) |
| if [ $WAITED -ge $MAX_WAIT ]; then |
| echo "ERROR: Ollama did not start within ${MAX_WAIT}s" |
| exit 1 |
| fi |
| done |
| echo " β Ollama ready after ${WAITED}s" |
| echo "" |
|
|
| |
| echo "[2/3] Verifying Ollama Cloud authentication..." |
| if [ -f /root/.ollama/id_ed25519 ]; then |
| echo " β Device key found: LN-8RDGA90Ultra" |
| echo " β All cloud models accessible via ollama.com" |
| else |
| echo "" |
| echo " ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo " β β CLOUD SIGN-IN REQUIRED β" |
| echo " β β" |
| echo " β No device key at /root/.ollama/id_ed25519 β" |
| echo " β β" |
| echo " β Option A β Mount your host ~/.ollama (recommended): β" |
| echo " β volumes: β" |
| echo " β - ~/.ollama:/root/.ollama β" |
| echo " β β" |
| echo " β Option B β Sign in interactively: β" |
| echo " β docker exec -it agent-q3-ollama ollama signin β" |
| echo " β Account: nicholasjmcleod@gmail.com β" |
| echo " ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "" |
| echo " Continuing β all cloud model calls will fail until signed in." |
| fi |
| echo "" |
|
|
| |
| echo "[3/3] Pulling Ollama Cloud models (nicholasjmcleod/ namespace)..." |
| echo "" |
|
|
| ROLES=("reasoner" "tandem" "coder" "fallback" "coder_dedicated" "genstruct" "infinity_parser") |
| FAILED=0 |
|
|
| for role in "${ROLES[@]}"; do |
| tag="${CLOUD_TAGS[$role]}" |
| name="${DISPLAY_NAMES[$role]}" |
| echo -n " [${role}] ${name} β ${tag} ... " |
| if ollama pull "${tag}" > /dev/null 2>&1; then |
| echo "β" |
| else |
| echo "β pull failed (will retry on first request)" |
| FAILED=$((FAILED + 1)) |
| fi |
| done |
|
|
| echo "" |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo " Role β Ollama Cloud Model (nicholasjmcleod/ namespace):" |
| echo "" |
| echo " reasoner ${CLOUD_TAGS[reasoner]} /v1/instruct /v1/chat" |
| echo " tandem+monitor ${CLOUD_TAGS[tandem]} /v1/tandem /v1/monitor/analyze" |
| echo " coder+remediate ${CLOUD_TAGS[coder]} /v1/code /v1/monitor/remediate" |
| echo " fallback ${CLOUD_TAGS[fallback]} /v1/fallback" |
| echo " coder_dedicated ${CLOUD_TAGS[coder_dedicated]} /v1/coder" |
| echo " genstruct ${CLOUD_TAGS[genstruct]} /v1/generate" |
| echo " parser ${CLOUD_TAGS[infinity_parser]} /v1/parse" |
| echo "" |
| if [ $FAILED -gt 0 ]; then |
| echo " β ${FAILED} model(s) failed to pull β check Ollama Cloud sign-in" |
| else |
| echo " β All 7 models ready" |
| fi |
| echo "" |
| echo " Ollama API: http://0.0.0.0:11434" |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
|
|
| wait $OLLAMA_PID |
|
|