Welcome!

We’re Cloudinary, but open source. Powered by Cloudflare. Openinary is an open source, Cloudflare-native media CDN that lets you upload, transform, and deliver images and videos from the edge. Built for developers, no-code builders, and indie creators who want fast, modern, self-hostable media infrastructure.
Openinary is currently under active development. This documentation evolves with the project.

Why Openinary?

Most media CDNs are closed, expensive, and built for enterprise. We’re building Openinary to be:

Open

MIT-licensed, transparent, easy to contribute to

Fast

Edge-first with Cloudflare Workers and R2

Modular

Easily pluggable in any stack or tool

Focused

Just the essentials: upload, transform, deliver

Technical Stack

Openinary leverages the Cloudflare ecosystem to deliver optimal performance:
LayerTechnologyRole
CDN & LogicCloudflare WorkersEdge processing and API
StorageCloudflare R2Distributed object storage
UIReact + Tailwind (via Pages)Modern user interface
Upload UXREST API + drag & drop UIUpload experience
InfraWrangler CLIDeployment and management

Key Features

These features represent Openinary’s MVP roadmap. Development is ongoing.

Use Cases

Openinary is perfect for:

Personal Sites

You’re building a personal site and need fast image delivery.

No-Code Tools

You’re a no-code tool developer looking to offer media uploads.

Self-Hosted Apps

You’re self-hosting a blog, app or internal tool with image needs.

Cloudinary Alternative

You want to escape Cloudinary’s limits and take control.

Project Architecture

Openinary is organized as a monorepo with multiple applications:
The main API that handles uploads, transformations, and media delivery.
// API structure
apps/api/
├── src/
│   ├── index.ts      // Worker entry point
│   └── types.d.ts    // TypeScript definitions
├── wrangler.toml     // Cloudflare configuration
└── package.json

Run Locally

1

Clone the repository

git clone https://github.com/openinary/openinary.git
cd openinary
2

Install dependencies

pnpm install
Openinary uses pnpm for dependency management and Turbo for the monorepo.
3

Configure environment

Set up your Cloudflare environment variables in each application.
You’ll need a Cloudflare account with access to Workers and R2.
4

Start development

pnpm dev
All applications will start in parallel thanks to Turbo.

Contributing

We’re just getting started — and we’d love your help! Whether you’re into backend or UI, you’re welcome. Start by checking the issues or say hi in Discussions.

License

MIT License

Use it freely. Fork it. Improve it. Let’s build it together.

This documentation evolves with the project. Feel free to contribute to improve it!