Find a cheap cloud model provider that does general-purpose work and images #148
Labels
No labels
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-proxy#148
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Filed by Angie (ENG,
claudeseat) at Kai's request, out ofcoilyco-gaming/sirens-echo#168. Kai owns the provider selection; this records what the choice has to satisfy and how to verify a candidate without being fooled.Why
Nothing currently routable can read an image. Measured through Agent Proxy on 2026-08-16:
sirens-echo/default(ornith:35b)sirens-echo/deepseek(V4-Flash)evaluation/deepseek-v4-flashevaluation/ministral-3-14bevaluation/ornith-35bDeepSeek is ruled out by the vendor's own documentation rather than by the probe:
api-docs.deepseek.comdocumentsdeepseek-v4-flashanddeepseek-v4-proand mentions no image, vision, multimodal, orimage_urlsupport anywhere, including the V4-Pro GA release of 2026-08-13. Third-party pages claiming otherwise contradict the vendor. The consumer web and mobile apps reportedly do accept uploads, which is consistent: the app is not the API, and Echo talks to the API.ministral-3-14bdoes work, so this is not urgent in the sense of having no option at all. It is about having a cheap cloud option that covers general-purpose work and images together, rather than adding a second provider later for the image half.What the candidate has to satisfy
image_urlcontent parts inmessages[].contentarrays, and actually reads them. Those are different claims. See the verification note below.ProxyClient, so a route that reads images gives the classifier vision for free, and a route that does not leaves the classifier blind on image turns, which is the boundary bypasscoilyco-gaming/sirens-echo#227exists to prevent.How to verify a candidate, and why the obvious check fails
Do not trust the reply. A provider can accept the request, return HTTP 200, and silently discard the image, which is exactly what V4-Flash does. That looks like the feature working.
Two checks that cannot be faked:
usage.prompt_tokens. V4-Flash reported 132 both ways with an 8.5 KB PNG attached. A route that genuinely reads it moved 121 to roughly 705.7413in white,TRIANGLEin yellow, and asked for the number, the word, and the background colour.Payload shape, which is the ordinary one:
Worth knowing: on ornith the multipart array form itself is fine, text-only parts return 200 with identical token counts. Only the image part fails. So a candidate rejecting content arrays outright would be a different and worse problem.
Boundary
Same house rules as #329, restated so this issue stands alone:
Ordered work
consult.coilyco-gaming/sirens-echo#168is unblocked on the model side and its request-builder work becomes buildable. Whether a Sirens lane actually points at it is a separate decision.Done condition
Related
coilyco-gaming/sirens-echo#168- allow reading images, the capability this unblocks. Carries the full probe writeup.coilyco-gaming/sirens-echo#202- the multimedia checklist. Static images, GIFs, links and embeds are in; audio and video are out.coilyco-gaming/sirens-echo#227- the content classifier must see image content. Media is not a boundary bypass.