Appearance
vision-fallback
FreshSource: BIBLE.md (Phase 12 Phase 5, vision-fallback 6 routes), ROADMAP.md (Phase 5.3)
Every platform action gets a vision fallback path. CDP works: use CDP (fast). CDP fails or gets detected: seamlessly switch to Ender Eyes vision mode (screenshot, VLM, click). No code change needed at the action level. The routing layer decides.
How it works
flowchart TD A[Action: click Submit] --> TR[Try CDP path] TR -- ok --> D[Done] TR -- fail or flagged --> V[Switch to vision] V --> SS[Screenshot] SS --> VLM[VLM: find Submit button] VLM --> C[OS click coords] C --> D
Makes Ghost Engine nearly invisible because it falls back to behaving exactly like a human looking at a screen.
13 Ender Eyes scripts as foundation
The vision-fallback plugin builds on the 11 Ender Eyes scripts in plugins/ender-eyes/:
eyes.mjs: generic visual agentdo-pinterest.mjspinterest-complete.mjsquora-complete.mjs,quora-final.mjs,quora-finish.mjs,quora-oneshot.mjs,quora-post.mjshighground-branded-gig.mjs,highground-continue.mjs,highground-finish.mjs
Routes (6)
| Method | Route | What |
|---|---|---|
| POST | /vision-fallback/route | Decide CDP or vision for an action |
| GET | /vision-fallback/stats | Success/failure stats per platform |
| POST | /vision-fallback/override | Force a platform to use vision |
| GET | /vision-fallback/platforms | Per-platform mode overrides |
| POST | /vision-fallback/test | Test an action with both paths |
| GET | /vision-fallback/history | Recent routing decisions |
Per-platform overrides
Some platforms default to CDP, some to vision:
yaml
platforms:
reddit: vision-first # high detection
linkedin: vision-first
yelp: cdp-with-fallback
youtube: cdp # low detection
google: cdp