{"id":19558722,"url":"https://github.com/threeaccents/oriio","last_synced_at":"2026-02-18T14:31:56.627Z","repository":{"id":48522528,"uuid":"460199516","full_name":"threeaccents/oriio","owner":"threeaccents","description":"HTTP service for file uploading, processing, serving, and storage.","archived":false,"fork":false,"pushed_at":"2022-12-14T14:28:46.000Z","size":4160,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-13T00:46:27.832Z","etag":null,"topics":["chunked-uploads","distributed","elixir","file-transformation","file-upload","libvips"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/threeaccents.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-16T22:30:45.000Z","updated_at":"2024-12-13T15:33:07.000Z","dependencies_parsed_at":"2023-01-28T23:45:59.910Z","dependency_job_id":null,"html_url":"https://github.com/threeaccents/oriio","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/threeaccents/oriio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threeaccents%2Foriio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threeaccents%2Foriio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threeaccents%2Foriio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threeaccents%2Foriio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/threeaccents","download_url":"https://codeload.github.com/threeaccents/oriio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threeaccents%2Foriio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29582318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T13:56:48.962Z","status":"ssl_error","status_checked_at":"2026-02-18T13:54:34.145Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chunked-uploads","distributed","elixir","file-transformation","file-upload","libvips"],"created_at":"2024-11-11T04:48:01.132Z","updated_at":"2026-02-18T14:31:51.618Z","avatar_url":"https://github.com/threeaccents.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oriio \n\nOriio is an all-in-one HTTP service for file uploading, processing, serving, and storage. Oriio supports chunked, resumable, and concurrent uploads. Oriio uses Libvips behind the scenes making it extremely fast and memory efficient.\n\nOriio currently supports any s3 compatible storage, which includes (AWS s3, DO Spaces, Wasabi, Backblaze B2). The specific storage engine can be set in the config.\n\nOriio is also distributed using Erlang's built in clustering and DeltaCrdt for syncing state between the cluster.\n\n## Features\n - [Uploads](https://github.com/threeaccents/oriio#uploads) upload files easily via our Web API.\n - [Chunked, Concurrent, Resumable Uploads](https://github.com/threeaccents/oriio#large-file-uploads) upload large files by chunking them and uploading them to our Web API.\n - [Distributed](#) run in cluster\n - [Fault Taulerant](#) distributed process handoff, with process state handoff.\n - [Signed Uploads](#) Secure uploads from your front end application.\n - [Flexible File Storage](#) store your files in S3, Spaces, Wasabi, B2, locally with more options coming soon.\n - [Image Processing](https://github.com/threeaccents/oriio#file-transformations) resize, convert, and crop with ease.\n\n## Install \nLibvips must be installed on your machine. \n### Ubuntu\n```bash\nsudo apt install libvips libvips-dev libvips-tools\n```\n### MacOS\n```bash\nbrew install vips\n```\nFor other systems check out instructions [here](https://github.com/libvips/libvips/wiki#building-and-installing).\n\n## Uploads\nFiles are uploaded to Oriio via `multipart/form-data` requests. Along with passing in the file data, you must also provide the `application_id`.\nOriio will handle processing and storing the file blob in the application's storage engine along with storing the file meta-data in the database.\nTo view an example upload response check out the [Web API](https://oriio-api-docs.threeaccents.com/#req_25f7dce3e796456e9f80ce43deba705b)\n\n## Large File Uploads\nWhen dealing with large files, it is best to split the file into small chunks and upload each chunk separately. Oriio easily handles chunked uploads storing each chunk and then re-building the whole file. Once the whole file is re-built Oriio uploads the file to the application's storage engine.\nTo view an example upload response check out the [Web API](https://oriio-api-docs.threeaccents.com/#req_649a25397026402b82397975292fbc4f)\n\nOther benefits of chunking up files are the ability to resume uploads and uploading multiple chunks concurrently. Oriio handles both scenarios for you with ease.\n\n## Signed Uploads\ntodo\n\n## File Transformations (More Coming Soon)\nOriio supports file transformations via URL query params. Currently, the supported operations are:\n - Resize (width, height) `?width=100\u0026height=100`\n - Smart Crop `?crop=true`\n - Flip `?flip=true`\n - Flop `?flop=true`\n - Zoom `?zoom=2`\n - Black and White `?bw=true`\n - Quality(JPEG), Compression(PNG) `?quality=100` `?compression=10`\n - Format conversion `format is based on the file extension. To transform a png to webp, just use the .webp extension.`\n\nAll queries can be used together. For example, to resize the width, make the image black and white, and change the format to webp the params would look like this:\n```\nhttps://yourdomain.com/myimage.webp?width=100\u0026bw=true\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreeaccents%2Foriio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthreeaccents%2Foriio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreeaccents%2Foriio/lists"}