Media library
Upload, browse, and manage files. Images, video, PDF — any file type. Served at /orbiter/media/[id].
Uploading
In the admin sidebar, click Media. Drag files onto the page or click Upload. Multiple files can be uploaded at once.
Files can also be uploaded directly from the editor's media picker — the image is inserted immediately after upload.
Serving media in Astro
<img src={`/orbiter/media/${post.data.image}`} alt={post.data.title} /> The /orbiter/media/[id] route is injected by @a83/orbiter-integration. It serves the file from whatever backend is configured — BLOB from SQLite, file from disk, or a 302 redirect to a CDN URL. No change needed in your templates when switching backends.
Adding external links
To reference a file hosted elsewhere (Dropbox, Google Drive, Cloudinary, any public URL) without downloading it, use the External link tab in the editor's image picker or POST /api/media/add-link.
Orbiter makes a HEAD request to detect the mime type, then stores only the URL in _media.url. Serving issues a 302 redirect — no proxy, no egress cost.
Folders
Assign files to folders at upload time. The library can be filtered by folder. Folder names are free-form strings stored in _media.folder.
Alt text
Add alt text at upload time or edit it later in the media library. The alt field is returned alongside the media metadata in the API.
Deleting files
Select a file and click Delete. For the local backend, the file is also removed from disk. For the github backend, a deletion commit is made via the GitHub API. For s3, a DeleteObject request is sent. Blob and external-link items are removed from _media in the pod.
API access
GET /api/media — list all files (no binary data) GET /api/media/:id/raw — serve the file POST /api/media — upload (multipart/form-data) POST /api/media/import-url — server-side fetch from a URL POST /api/media/add-link — store an external URL reference DELETE /api/media/:id — delete