Environment
Hermes Desktop connected to a remote gateway/dashboard — desktop app on
machine A, backend runtime on machine B (e.g. a Linux mini-PC backend with the
desktop app on a laptop over a private network).
Repro
- Connect the desktop to a remote backend.
- Paste or drag an image into the composer and send.
Actual
The image never reaches the model. tui_gateway logs
native image attachment skipped … unreadable path(s); image.attach resolves
the path on the backend host and can't find it.
Root cause
The Electron app writes composer images to its own machine
(app.getPath('userData')/composer-images/…) and represents attachments only by
a local filesystem path (ComposerAttachment has no bytes field). On a remote
session the backend is on a different host and cannot read that path. There is no
attachment byte-upload endpoint on the dashboard — /api/audio/transcribe exists
for audio, but there is no equivalent for image attachments.
Expected
On a remote session the desktop uploads the attachment bytes to the backend, and
the chat references a backend-readable path.
Note
The unreadable attachment is currently dropped silently; surfacing a warning
would make this failure visible.
Environment
Hermes Desktop connected to a remote gateway/dashboard — desktop app on
machine A, backend runtime on machine B (e.g. a Linux mini-PC backend with the
desktop app on a laptop over a private network).
Repro
Actual
The image never reaches the model.
tui_gatewaylogsnative image attachment skipped … unreadable path(s);image.attachresolvesthe path on the backend host and can't find it.
Root cause
The Electron app writes composer images to its own machine
(
app.getPath('userData')/composer-images/…) and represents attachments only bya local filesystem path (
ComposerAttachmenthas no bytes field). On a remotesession the backend is on a different host and cannot read that path. There is no
attachment byte-upload endpoint on the dashboard —
/api/audio/transcribeexistsfor audio, but there is no equivalent for image attachments.
Expected
On a remote session the desktop uploads the attachment bytes to the backend, and
the chat references a backend-readable path.
Note
The unreadable attachment is currently dropped silently; surfacing a warning
would make this failure visible.