- AGENTS.md: Sofiia Chief AI Architect role definition - SOFIIA_IN_OPENCODE.md, SOFIIA_NODA2_SETUP.md: NODA2 setup documentation - agromatrix_stepan_noda1_APPLY.md, agromatrix_stepan_noda1_prod.patch: AgroMatrix production patch - docker-compose.memory-node2.yml: memory service for NODA2 - docker-compose.node2-sofiia-supervisor.yml: sofiia supervisor for NODA2 - gateway-bot/gateway_boot.py, monitor_prompt.txt, vision_guard.py: gateway extras - models/Modelfile.qwen3.5-35b-a3b: Qwen model definition for NODA3 - opencode.json: OpenCode providers and agents config - scripts/init-sofiia-memory.py, scripts/node2/*, start-memory-node2.sh: NODA2 init scripts - setup_sofiia_node2.sh: NODA2 full setup script Made-with: Cursor
38 lines
1.0 KiB
Bash
Executable File
38 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
MODEL_TAG="qwen3.5:35b-a3b"
|
|
MODELS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/models"
|
|
TEMPLATE_FILE="$MODELS_DIR/Modelfile.qwen3.5-35b-a3b"
|
|
TMP_FILE="$MODELS_DIR/.Modelfile.qwen3.5-35b-a3b.rendered"
|
|
|
|
if ! command -v ollama >/dev/null 2>&1; then
|
|
echo "[error] ollama not found in PATH"
|
|
exit 1
|
|
fi
|
|
|
|
if ollama list | awk '{print $1}' | grep -qx "$MODEL_TAG"; then
|
|
echo "[ok] $MODEL_TAG is already installed"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ -z "${MODEL_SOURCE:-}" ]]; then
|
|
echo "[error] MODEL_SOURCE is not set"
|
|
echo "Set MODEL_SOURCE to GGUF source, e.g.:"
|
|
echo " export MODEL_SOURCE='hf.co/your-org/Qwen3.5-35B-A3B-GGUF:Q4_K_M'"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$TEMPLATE_FILE" ]]; then
|
|
echo "[error] Modelfile template not found: $TEMPLATE_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
sed "s|\${MODEL_SOURCE}|${MODEL_SOURCE}|g" "$TEMPLATE_FILE" > "$TMP_FILE"
|
|
|
|
echo "[info] Creating $MODEL_TAG from MODEL_SOURCE=$MODEL_SOURCE"
|
|
ollama create "$MODEL_TAG" -f "$TMP_FILE"
|
|
|
|
rm -f "$TMP_FILE"
|
|
echo "[ok] Installed $MODEL_TAG"
|