# Qwen local worker verification

Session learning: the user's local Qwen llama-server runs on the host and is reachable from the Hermes/OpenClaw VM over Tailscale.

## Known-good endpoint

- Host/Tailscale peer: `PC-1`
- Direct Tailscale IP observed: `100.101.173.25`
- Port: `11435`
- Base URL: `http://100.101.173.25:11435/v1`
- Model alias: `qwen-3.6-agent`

Prefer the direct Tailscale IP over hostname if Tailscale DNS reports healthcheck issues.

## Direct Hermes helper

Use the read-only helper created for Hermes-native Qwen access:

```bash
~/.hermes/scripts/qwen_readonly.py probe
printf 'Text...' | ~/.hermes/scripts/qwen_readonly.py summarize
printf 'Text...' | ~/.hermes/scripts/qwen_readonly.py extract
printf 'Text...' | ~/.hermes/scripts/qwen_readonly.py classify
```

This bypasses OpenClaw completely and calls the local OpenAI-compatible endpoint directly.

## Verification recipe

1. Check Tailscale peer status and identify the host:
   ```bash
   tailscale status
   ```
2. Probe TCP connectivity:
   ```bash
   nc -vz 100.101.173.25 11435
   ```
3. Check OpenAI-compatible model listing:
   ```bash
   curl -sS http://100.101.173.25:11435/v1/models | jq .
   ```
4. Send a tiny chat-completions probe:
   ```bash
   curl -sS http://100.101.173.25:11435/v1/chat/completions \
     -H 'Content-Type: application/json' \
     -d '{"model":"qwen-3.6-agent","messages":[{"role":"user","content":"Reply with exactly: pong"}],"max_tokens":8,"temperature":0}' | jq -r '.choices[0].message.content'
   ```

Expected response: `pong`.

## Policy reminder

Use Qwen only as a read-only worker for extraction, summarization, classification, and low-risk drafting. Do not use it for final health/finance decisions, irreversible actions, code/system architecture changes, or any operation requiring secrets or external side effects without explicit approval and a stronger model.
