hermes-skills/ai-providers/ollama-on-vps/SKILL.md
Ollama LLM running on VPS as arifOS/A-FORGE fallback — models, endpoints, embedding setup
npx skillsauth add ariffazil/openclaw-workspace ollama-on-vpsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Container: ollama-engine-prod
Image: ollama/ollama:latest
Network: docker bridge / compose network
qwen2.5:7b — chat model (used by arifOS call_llm Tier 2 fallback)
bge-m3:latest — embedding model (used by A-FORGE LongTermMemory)
POST http://127.0.0.1:11434/api/generate
{
"model": "qwen2.5:7b",
"prompt": "...",
"stream": false,
"temperature": 0.3,
"options": {"num_predict": 1200}
}
Response: {"response": "...", "done": true}
POST http://127.0.0.1:11434/api/embeddings
{
"model": "bge-m3:latest",
"prompt": "..."
}
Response: {"embedding": [...], "done": true}
GET http://127.0.0.1:11434/api/tags
Response: {"models": [{"name": "qwen2.5:7b"}, {"name": "bge-m3:latest"}]}
File: /root/arifOS/arifosmcp/runtime/llm_client.py
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL") or os.getenv("OLLAMA_URL", "http://ollama:11434")
OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "qwen2.5:7b")
async def _call_ollama(system, user, response_schema, temperature, max_tokens=1200):
prompt = f"{system}\n\n{user}"
payload = {
"model": OLLAMA_MODEL,
"prompt": prompt,
"stream": False,
"temperature": temperature,
"options": {"num_predict": max_tokens},
}
if response_schema:
payload["format"] = "json"
# ... httpx POST to /api/generate
arifOS calls Ollama when SEA-LION Tier 1 fails. All 3 LLM tools (mind_reason, heart_critique, reply_compose) fall back here.
File: /root/A-FORGE/src/memory/LongTermMemory.ts
const OLLAMA_URL = process.env.OLLAMA_URL ?? "http://localhost:11434";
const response = await fetch(`${OLLAMA_URL}/api/embeddings`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ model: "bge-m3:latest", prompt }),
});
From inside other containers (arifOS MCP, A-FORGE):
http://ollama:11434 (Docker compose service name)
From VPS host:
http://127.0.0.1:11434
Ollama not responding:
curl -s http://127.0.0.1:11434/api/tags
# Empty = container down
docker ps | grep ollama
Model not loaded:
"model 'qwen2.5:7b' not found"
→ docker exec ollama-engine-prod ollama pull qwen2.5:7b
arifOS still trying SEA-LION: Check logs — if you see "SEA-LION HTTP 401" repeatedly, Tier 1 is failing and falling through to Ollama. This is EXPECTED behavior when SEA-LION key is invalid.
docker exec -it ollama-engine-prod ollama pull <model>
# e.g.:
docker exec -it ollama-engine-prod ollama pull llama3:8b
docker exec -it ollama-engine-prod ollama pull nomic-embed-text
Update arifOS to use new model:
# In .env
OLLAMA_MODEL=llama3:8b
Update A-FORGE embedding model:
# In A-FORGE .env
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
testing
OpenClaw edge agent bridge — operational triage, doctor, restart, and A2A bridge routing for the federation edge (Telegram surface). USE WHEN: "openclaw unhealthy", "gateway down", "edge bot not responding", "a2a bridge disconnected", "watchdog tripped", "openclaw doctor", "openclaw restart". NOT for token/security audit — use FORGE-telegram-audit.
tools
Generate images, videos, TTS, voice clone, and music via MiniMax MCP server. Use when user asks to "draw", "generate image", "create picture", "make a photo", "text to image", "image generation".
testing
Single load-bearing constitutional-judgment skill. Routes all F1–F13, verdict, hold, seal, scope, authority and floor-check calls through the live arif_judge surface. Replaces 7 overlapping predecessors (arifos-constitutional-judge, arifos-constitutional-judge, arifos-constitutional-judge, arifos-constitutional-judge, arifos-constitutional-judge, arifos-constitutional-judge, arifos-constitutional-judge).
development
MANDATORY LSP grounding gate BEFORE any code mutation on .ts, .py, .js, .tsx, .jsx files. Forces the agent to read real-time compiler diagnostics and structural project context before editing — eliminating blind guesses and anchoring every mutation in F2 (TRUTH). Routes through arifOS kernel (:8088) for centralized gate logic.