File size: 5,482 Bytes
d9aa575
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/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"
)

# Start Ollama in background
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 ""

# ── [2/3] Verify Ollama Cloud sign-in ───────────────────────────────────────
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 ""

# ── [3/3] Pull all 7 nicholasjmcleod/ cloud models ──────────────────────────
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