Send files from your browser
to anywhere. Securely.
CloudSend is the server-side piece that makes your browser tools smarter. Upload a screenshot from OmniCapt, a file from ZumiFiles, or any file from any web app — and send it directly to Jira, Slack, GitHub, Miro, Google Drive, S3, or Confluence. Your API keys stay on the server. The browser never sees them.
A secure bridge between your browser tools and your cloud services.
Browser extensions and web apps can't safely hold API keys — they can be extracted. CloudSend moves those keys to a server you control, and exposes a single authenticated API your clients use instead.
Your secrets on your server. Your clients stay clean.
OmniCapt, ZumiFiles, or any web app sends a file to CloudSend with a JWT token. CloudSend verifies the token, looks up which cloud target you want, and delivers the file using the API credentials stored only on the server. The client never has access to Jira API tokens, Slack bot keys, or GitHub personal access tokens.
OmniCapt · ZumiFiles · any app
API keys live here only
Send to the tools your team already uses.
Each target has a full browse-and-upload flow: navigate the hierarchy (projects → issues, channels, boards) then send the file exactly where it needs to go.
Pick the integration style that fits your project.
All three approaches call the same REST API underneath — choose based on how much you want to build yourself.
<zumilabs-cloudsend> element to any page. It renders a complete UI: target picker, browse tree, file queue, and upload button. Two lines of HTML. Works in any framework.
Your credentials never leave your server.
CloudSend's entire purpose is to keep secrets out of the browser. Here's exactly how.
sub (user ID) and custom:tenant_id claim. CloudSend uses these for tenant-scoped file paths and routing — making it straightforward to deploy as shared infrastructure in a SaaS product where multiple teams use the same server with isolated storage.Common questions.
Yes. CloudSend is a Node.js/Express server you run on your own infrastructure. This is by design — keeping your API credentials on a server you control is the core security model. You can run it locally during development, or on any Node.js-compatible host (VPS, container, cloud function) in production.
No. Configure only the targets you need by adding the relevant environment variables to your .env file. Unconfigured targets show an amber "Not configured" badge on the status page and return a clear error if called. Everything else works normally.
OmniCapt can send captures to CloudSend directly after taking a screenshot. In OmniCapt settings, you configure the CloudSend server URL and your JWT. After each capture, a "Send via CloudSend" panel appears in the popup — select the target and destination, hit send. OmniCapt hands the file to CloudSend; CloudSend delivers it.
Not currently. CloudSend is designed to be self-hosted so your credentials remain entirely within your infrastructure. If a managed option is something you'd find valuable, get in touch — we're interested in hearing what teams need.