by weidlu
Upload pasted or dropped images to SilentFlow and insert public image links.
SilentFlow Image Host
Upload images pasted or dropped into Obsidian to SilentFlow and insert public image links as Markdown.
Features
- Upload image files on paste or drop; each behavior can be turned off.
- Keep text-only paste and events handled by other plugins unchanged.
- Replace unique upload placeholders even when you edit the surrounding text.
- Upload up to three images concurrently.
- Optional file-name alt text, off by default.
- Check storage and traffic usage from settings or the Check usage command.
- Desktop and mobile support using Obsidian's
requestUrl.
Install
- Community plugins: in Obsidian, open Settings → Community plugins → Browse, search for SilentFlow, then install and enable SilentFlow Image Host. Listing: community.obsidian.md/plugins/silentflow-image-host.
- Manual: build locally or obtain
main.js,manifest.json, andstyles.cssfrom a release. Copy those three files into your vault's.obsidian/plugins/silentflow-image-host/folder. Reload Obsidian, then enable SilentFlow Image Host in Community plugins.
Setup
- Get a free key.
- Open the plugin settings and enter your API key (
sk_…orsf_agent_…). - Leave API address at
https://slnt.dev, unless you use a different SilentFlow instance. HTTPS is required; HTTP is accepted only forlocalhostor127.0.0.1. - Optionally turn on Use file name as alt text or check usage.
Agent keys need files:write to upload and files:read to check usage.
Usage
Paste or drop image files into a note editor. A temporary ![Uploading silentflow-…]() placeholder appears and is replaced with  after upload. With file-name alt text enabled, the name without its extension becomes the alt text; generic clipboard names such as image.png become pasted-image. Failures remove the placeholder and show a notice. If you delete a placeholder before upload finishes, the plugin leaves your text alone.
Without an API key, pasting images follows Obsidian's default behavior and shows a reminder once per session. Text-only paste is unaffected. Use Check usage in settings or in the command palette for a usage summary; no default shortcut is assigned.
Uploaded image URLs are public. Keep local backups of original images.
Free plan
The server's free plan provides 500 MB storage, 1 GB monthly traffic, and a 2 MB maximum per image. The limits use binary units: 500 × 1024², 1024³, and 2 × 1024² bytes, respectively. Account limits returned by the server take precedence. Upgrade options are on the pricing section.
Network use
The plugin contacts only the configured API address (default: https://slnt.dev), and only when uploading an image or checking usage.
- Upload:
POST /v1/filessends image file bytes in multipart form data with the file name and MIME type, and the API key in theAuthorization: Bearer …header. - Check usage:
GET /v1/usagesends the API key in the same Bearer header; no image or note content is sent.
The plugin makes no telemetry or advertising requests and loads no remote code. Documentation and settings links open only when you choose to follow them.
Privacy
Settings, including your API key, are stored in plain text in the plugin's data.json inside your vault. The key is not encrypted. Protect access to your vault and account for any vault backup or sync that includes plugin settings. The plugin does not log the API key or request headers. There is no telemetry or advertising. Uploaded images are publicly accessible through the returned links; note contents are not uploaded.
Troubleshooting
- 401: your key is invalid or revoked. Check it in the plugin settings.
- Storage quota: delete files through SilentFlow or upgrade your plan at the pricing section above.
- Image size: use an image within your account's per-file limit (2 MB on the free plan).
- Unsupported type: the server determines supported types from file bytes, independently of the supplied file name and MIME type.
- Network: check your connection and API address. Invalid API addresses are rejected before sending requests.
- 403 with an agent key: check its scopes and the account's images subscription; the server's explanation is shown.
Development
Requires Node.js and npm for development only; the installed plugin has no runtime dependencies.
npm install
npm run dev
npm run build
npm test
npx tsc --noEmit
npm run dev watches and bundles source. npm run build checks types and creates main.js. Vitest covers pure utilities, event/editor behavior, and the API against a local HTTP server with fake credentials; tests do not contact SilentFlow. npm version <version> updates the manifest and version compatibility file through the version script.
The release workflow builds and attaches main.js, manifest.json, and styles.css when a numeric tag such as 0.1.0 is pushed to a future GitHub repository. Use tags without a v prefix.
License
MIT, copyright 2026 Silent Lab.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.