Files and image sharing
Upload images and other files, copy short URLs as a personal pastebin, paste from the toolbar or shortcuts panel, and pick HTTP or SSH transport.
Files in Moshi is a small, dedicated upload surface that turns anything on your phone — a screenshot, a photo, a PDF, a log file, an exported .zip — into a short, expiring URL you can paste anywhere a URL works.
For the agent-prompt paste flow that mimics desktop Cmd-V, see Image paste. This page covers the broader pastebin and file-sharing use cases.
What it is for
- Uploading screenshots, photos, PDFs, log files, configs, or any document on your phone.
- Copying a short, expiring URL you can drop into Slack, a GitHub issue, an agent prompt, or your own desktop browser.
- Keeping a history of recent uploads so you can re-grab a URL without re-uploading.
- Sending content to coding agents that can fetch URLs but cannot read the iOS clipboard.
Pastebin use case
Files works as a personal pastebin even when no agent is involved. A few examples:
- Snap a photo of a stack trace on a teammate's monitor, upload, paste the URL into Slack — no Slack mobile detour.
- Export a
.harfrom Safari, upload, paste the URL into a debugging session on your laptop. - Generate a screenshot for an issue, upload, paste the URL straight into
gh issue create.
The URLs expire on their own, so you do not have to remember to clean up later.
Beyond images
Files is not limited to images. From the Shortcuts panel in the terminal toolbar you can pick:
- An image (photo library, clipboard, camera).
- Any document the iOS file picker can reach (PDFs, code, archives, configs, logs).
The non-image picker hands the file off to the same upload pipeline. The result is the same kind of short URL — agents can fetch it, you can share it, you can re-grab it from the Files screen.
Upload methods
Settings include an upload method preference:
- Ask: choose each time.
- HTTP: upload through Moshi's web service and copy a URL.
- SSH: write the file to the remote host directly when an SSH connection is active.
Use Ask if you move between hosts or want control per upload.
Why HTTP exists
HTTP uploads do not need an active SSH session, so they work in situations where SSH cannot:
- Mosh-only connections — mosh transports terminal traffic over UDP and cannot move file data.
- Hosts that are temporarily unreachable but where you still want a URL.
- Connections from a host you don't control (a friend's machine, a temporary VPS) where you would rather not write to its filesystem.
- Slow or flaky cellular where a small upload to Moshi's service is faster than SFTP through a long round-trip path.
The HTTP path also makes Files a real pastebin: the URL is not tied to any host you happen to be SSH'd into. You can paste it into a desktop browser, a chat app, or a different terminal session entirely.
Why SSH exists
SSH uploads write the file directly to the remote host, then return a path. Use it when:
- The agent or shell needs the file as a real local path, not a URL.
- You're in a private or air-gapped environment where the file should never traverse a public service.
- You're already SSH'd in and want to keep everything on one transport.
HTTP uploads reuse the push notification token for authentication, so push notifications must be enabled for HTTP to work. SSH uploads need an active SSH (not mosh-only) connection to the host.
Image list
The Files screen shows uploaded images with thumbnails, creation time, and expiration status. Tap an active image to copy its URL. Swipe to delete an image from the list.
Expired images cannot be copied as working links. Delete old entries to keep the list clean.
Access from the shortcuts panel
The toolbar's Shortcuts panel is the fastest way to start an upload mid-session. Open it and pick:
- Image — go straight to the photo / clipboard / camera picker.
- File — open the iOS document picker for anything else.
This avoids leaving the terminal screen and is the path most users actually use day to day. The Files screen is the audit trail; the shortcuts panel is the daily driver.
Remote clipboard
Moshi can copy upload results to the remote clipboard when the feature is enabled and the remote path supports it. This is useful when the next paste should happen inside a shell or agent running on the host.
Home screen visibility
You can choose whether Files appears on the home screen. Turn it on if uploads are part of your regular agent or sharing workflow; leave it off if you only use it occasionally from Settings.
Good prompt pattern
After copying a URL, paste it into your agent with a direct instruction:
$> Review this screenshot and tell me which UI element is misaligned: https://...
Short, explicit prompts work better than only pasting a URL.