# AshBot — Status > Personal assistant agent for **Ashley** (Phoenix Salon + Spa — Veripath's active client), > delivered over **iMessage via Photon**. Hermes profile `ashbot`. > Last worked: 2026-09-12. ## Identity | | | |---|---| | Profile | `ashbot` — `~/AppData/Local/hermes/profiles/ashbot` | | Purpose | Ashley's personal assistant (scheduling, business admin, marketplace scouting) | | Channel | Photon → iMessage. **Own Photon project**, separate from the coach line | | Reachable by | Ashley (home channel + allowed user); Tony tests from his own line | | Sidecar | Photon sidecar on `127.0.0.1:8790` | | Gateway | PID 17968, platform `photon: connected`, Hermes 0.21.1 | ## Model stack (changed 2026-09-12) | | | |---|---| | Provider | `omniroute` → `http://127.0.0.1:20128/v1` | | Primary | `auto/best-free` (OmniRoute free-tier auto-combo — live roulette) | | Fallback | `openrouter/deepseek/deepseek-v4.1-flash` → `freetoken-gemma26b/Gemma-4-26B-A4B-NVFP4` (local, free) | Before 2026-09-12 this profile had **no failover at all** — `hermes -p ashbot fallback list` returned "No fallback providers configured"; the `model.fallback:` key in her config is not the failover chain. See [[01_Wiki/omniroute-routing-failover]] for the failure mode. ## Incident log ### 2026-09-12 — turn died mid Marketplace scan (fixed) - 10:07–10:17 PT. Ashley/Tony asked for a live Facebook Marketplace flip scan. - Browser work (`browser_exec`) ran; the connection hiccuped mid-scan; then the model API collapsed — **9 empty streams in a row** (`http 200, bytes 0`) at 10:14:53–10:15:11. - Cause: the `auto/best-free` combo's OpenRouter primary dropped out, and the chain fell into broken targets — `opencode/minimax-m3-free` (401, model unsupported) and `auggie/claude-sonnet-4.6` (200 with an empty body, ~1.0 s). A 200 never trips OmniRoute's breaker, so the combo never reached a working target and Hermes killed the turn. - User-visible: 276 s of silence → a 141-char stub → an 18,045-char dump truncated to **8,000 chars mid-sentence** by the Photon adapter. Session `20260912_100658_6c1e9828`; last message persisted 10:12:49 — the turn never completed. - Fixed: `fallback_providers` added to her `config.yaml` (backup: `config.yaml.bak.20260912_133720`) **and** `blockedProviders = ["auggie","opencode"]` set in OmniRoute (`~/.omniroute/storage.sqlite`). Catalog went 476 → 453 models. ## Active automation - **Cron job `e4df5902e96f` — "Tony daily check-in"**, `0 9 * * *`, provider pinned (`--provider omniroute`). Created and test-run 2026-09-12; delivery verified. - Contact/scheduling jobs discussed with Ashley — the 9/12 test confirmed a scheduled check-in actually fires and delivers. ## Open items - **iMessage outbound cap: 8,000 chars.** The Photon adapter truncates long replies mid-sentence (`truncating outbound from 18045 to 8000 chars`). Her scan reports routinely exceed it — cap her output or chunk it. - **Primary is still the free roulette.** A failure now costs the retry window (~1 min typical, up to ~4.5 min) before the fallback takes over, instead of killing the turn. - **Browser mid-scan hiccup** — `browser_exec` dropped during the marketplace scan; the retry path is untested since the model fix. ## Files | Path | Change | |---|---| | `profiles/ashbot/config.yaml` | `+ fallback_providers` (2026-09-12); backup alongside | | `~/.omniroute/storage.sqlite` | `settings.blockedProviders` = `["auggie","opencode"]` | | Hermes skill | `omniroute-routing-failover` (jimmy profile) | See also: [[04_projects/phoenix-salon/status]] · [[04_projects/veripath/status]] · [[01_Wiki/omniroute-routing-failover]]