The file backend behind CourseLit and SendLit
An agent saves a report. You check it in the dashboard. Your app serves it from the same URL. Nobody copies files between tools.
Storing user files in S3 yourself means presigned URLs, CORS rules, thumbnails, a database of what you stored and a job to clean up what nobody uses. MediaLit already does all of that, so you write one API call instead.
Your server hands out a short-lived signature and the browser uploads directly. Your API key never leaves your server.
Uploads stay temporary until your app decides to keep them. Anything nobody keeps is deleted after 24 hours, so abandoned uploads never pile up.
Public files get a permanent URL. Private files are served through signed URLs that expire.
Large files upload in chunks and pick up where they left off after a dropped connection.
Thumbnails are generated for images and videos on upload, with optional WebP conversion.
List your files with their details, paginated and filtered by group or access, without keeping your own database.
Connect an agent, upload from your terminal or call it from your code. Same account, same files.
Add the MCP server in Claude, ChatGPT, Cursor or any MCP client, then sign in. In Claude Code:
claude mcp add --transport http medialit https://api.medialit.cloud/mcpInstall the CLI, sign in once, and upload. In a CI job, set MEDIALIT_API_KEY instead of logging in.
npm install -g @medialit/cli
medialit login
medialit upload photo.jpg --publicUse the Node.js SDK on your server, or the REST API from any language.
const medialit = new MediaLit({ apiKey: process.env.MEDIALIT_API_KEY });
const media = await medialit.upload("./photo.jpg", { access: "public" });Start free. Upgrade when you need more room. Every plan gets the API, the MCP server, the CLI and the dashboard.
Is MediaLit just a wrapper around object storage?
No. Storing bytes is the easy part. MediaLit adds what you would otherwise build around it: browser uploads without exposing keys, resumable uploads, automatic cleanup of unused uploads, public and private access, a list of your files with their details, thumbnails, quotas, an MCP server for agents, a dashboard and a CLI.
Can I upload from the browser without exposing my API key?
Yes. Your server creates a short-lived upload signature and the browser uploads with it. The React uploader handles this for you.
Which AI assistants work with MediaLit?
Any client that supports remote MCP servers, including Claude, ChatGPT, Cursor and VS Code. You sign in with OAuth, so there is no API key to paste.
Can I upload from the terminal, a CI job or a coding agent?
Yes, with the CLI. Run medialit login on your machine, and you and any coding agent running there can use it. In CI, set MEDIALIT_API_KEY instead of logging in.
Can I use my own S3 or R2 bucket?
Yes, by self-hosting MediaLit on AWS S3, Cloudflare R2, MinIO or any S3-compatible storage. The hosted service at medialit.cloud stores files in its own storage.
Is the open-source version limited?
No. Everything that runs medialit.cloud is in the GitHub repository, licensed under AGPL-3.0.
What happens when I run out of storage?
New uploads are refused until you free up space or upgrade to Pro. Files you already have stay online and keep their URLs.
Who can see my files?
Only you, unless you make a file public. Public files get a permanent URL that anyone with the link can open. Private files can only be opened through signed URLs that expire. An agent gets access only after you sign in and connect it.