{"id":13548302,"url":"https://github.com/dasch-swiss/sipi","last_synced_at":"2026-04-02T00:03:25.093Z","repository":{"id":42528378,"uuid":"54192472","full_name":"dasch-swiss/sipi","owner":"dasch-swiss","description":"Simple Image Presentation Interface","archived":false,"fork":false,"pushed_at":"2026-03-20T23:56:36.000Z","size":461244,"stargazers_count":36,"open_issues_count":60,"forks_count":9,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-03-21T06:05:13.622Z","etag":null,"topics":["iiif","image-conversion","image-processing"],"latest_commit_sha":null,"homepage":"https://sipi.io","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dasch-swiss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-03-18T10:14:34.000Z","updated_at":"2026-03-20T16:25:50.000Z","dependencies_parsed_at":"2025-08-25T17:24:56.058Z","dependency_job_id":null,"html_url":"https://github.com/dasch-swiss/sipi","commit_stats":null,"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/dasch-swiss/sipi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch-swiss%2Fsipi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch-swiss%2Fsipi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch-swiss%2Fsipi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch-swiss%2Fsipi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasch-swiss","download_url":"https://codeload.github.com/dasch-swiss/sipi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch-swiss%2Fsipi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: 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":["iiif","image-conversion","image-processing"],"created_at":"2024-08-01T12:01:08.540Z","updated_at":"2026-04-02T00:03:25.064Z","avatar_url":"https://github.com/dasch-swiss.png","language":"C++","funding_links":[],"categories":["C++","Image Servers","image-processing"],"sub_categories":["IIIF Extensions"],"readme":"[![Build Status](https://github.com/dasch-swiss/sipi/actions/workflows/docker-build.yml/badge.svg?branch=main)](https://github.com/dasch-swiss/sipi/actions)\n\n# Sipi - Simple Image Presentation Interface\n\n## Overview\n\nSimple Image Presentation Interface (SIPI) is a multithreaded, high-performance, IIIF compatible media server developed by\nthe [Swiss National Data and Service Center for the Humanities](https://dasch.swiss) at the\n[University of Basel](https://www.unibas.ch). It is designed to\nbe used by archives, libraries, and other institutions that need to\npreserve high-quality images while making them available online.\n\nSIPI implements the Image API 3.0 of the International Image Interoperability Framework\n([IIIF](https://iiif.io/)), and efficiently converts between image\nformats, preserving metadata contained in image files. In particular, if\nimages are stored in [JPEG 2000](https://jpeg.org/jpeg2000/) format,\nSipi can convert them on the fly to formats that are commonly used on\nthe Internet. SIPI offers a flexible framework for specifying\nauthentication and authorization logic in [Lua](https://www.lua.org/)\nscripts, and supports restricted access to images, either by reducing\nimage dimensions or by adding watermarks. It can easily be integrated\nwith [Knora](https://dsp.dasch.swiss/). In addition SIPI preserves most of\nthe [EXIF](http://www.exif.org),\n[IPTC](https://iptc.org/standards/photo-metadata/iptc-standard/) and\n[XMP](http://www.adobe.com/products/xmp.html) metadata and can preserve\nor transform [ICC](https://en.wikipedia.org/wiki/ICC_profile) color\nprofiles.\n\nIn addition, a simple webserver is integrated. The server is able to\nserve most common file types. In addition Lua scripts and embedded Lua\n(i.e., Lua embedded into HTML pages using the tags\n\u0026lt;lua\u0026gt;…\u0026lt;/lua\u0026gt; are supported.\n\nSIPI can also be used from the command line to convert images to/from\nTIFF-, [JPEG 2000](https://jpeg.org/jpeg2000/), JPEG- and PNG-\nformats. For all these conversion, SIPI tries to preserve all embedded\nmetadata such as\n- [IPTC](https://iptc.org/standards/photo-metadata/iptc-standard/)\n- [EXIF](https://www.exif.org/)\n- [XMP](https://www.adobe.com/products/xmp.html)\n- [ICC](https://en.wikipedia.org/wiki/ICC_profile) color profiles.\nHowever, due to the limitations of some file formats, it cannot be\nguaranteed that all metadata and ICC profiles are preserved.\n- [JPEG2000](https://jpeg.org/jpeg2000/) (J2k) does not allow all types of ICC profiles\n  profiles. Unsupported profile types will be added to the J2k header as comment and will be\n\nSIPI is a [free software](http://www.gnu.org/philosophy/free-sw.en.html),\nreleased under the [GNU Affero General Public\nLicense](http://www.gnu.org/licenses/agpl-3.0.en.html). It is written in\nC++ and runs on Linux and macOS. Note: In order to compile SIPI, the user has\nto provide a licensed source of the [kakadu software](https://kakadusoftware.com).\n\nIt is written in C++ and runs on Linux (including Debian, Ubuntu, and CentOS) and\nmacOS.\n\nFreely distributable binary releases are available\n[daschswiss/sipi](https://hub.docker.com/r/daschswiss/sipi) as docker image.\n\n## Documentation\n\nThe documentation is online at https://sipi.io.\n\nTo build it locally, you will need [MkDocs](https://www.mkdocs.org/).\nIn the root the source tree, type:\n\n```\nmake docs-build\n```\n\nYou will then find the manual under `site/index.html`.\n\n## Building from source\n\nAll commands are run from the repository root via `make`. Run `make help` for a full list of targets.\n\n### Build and test with Docker (recommended)\n```bash\nmake docker-build    # build Docker image (compiles + runs unit tests)\nmake test-smoke      # run smoke tests against Docker image\n```\n\n### Build and test with Nix (native development)\n```bash\nnix develop          # enter Nix development shell (GCC)\nmake nix-build       # build SIPI (debug + coverage)\nmake nix-test        # run unit tests\nmake nix-test-e2e    # run end-to-end tests\nmake nix-run         # start SIPI server\n```\n\n### Build on macOS (not recommended)\n```bash\nmkdir -p ./build-mac \u0026\u0026 cd build-mac \u0026\u0026 cmake .. \u0026\u0026 make \u0026\u0026 ctest --verbose\n```\n\nSee [Building SIPI from Source Code](https://sipi.io/development/building/) for full details.\n\n## Sentry.io\nIf you would like to use Sentry.io for error reporting, you can set the environment variable\n`SIPI_SENTRY_DSN` to the DSN of your Sentry project. If you do not set this variable, Sentry.io will not be used.\n\nFurther variables can be set to configure the Sentry client:\n- `SIPI_SENTRY_ENVIRONMENT`: The environment in which the application is running. Defaults to `development`.\n- `SIPI_SENTRY_RELEASE`: The release version number of the application.\n\nSentry captures two categories of events:\n- **Fatal crashes** (SIGSEGV, SIGABRT) — captured in both server and CLI modes.\n- **Image processing failures** (CLI mode) — when a CLI conversion fails, a Sentry event is sent with rich image context (dimensions, colorspace, channels, bits/sample, ICC profile type, file paths). Events are tagged with `sipi.phase`, `sipi.colorspace`, `sipi.bps`, and `sipi.output_format` for filtering and alerting.\n\nSee [docs/src/running.md](docs/src/running.md) for full details on CLI exit codes, error output format, and integration guidance for calling services.\n\n## Releases\n\nReleases are published on Dockerhub: https://hub.docker.com/repository/docker/daschswiss/sipi\n\n## How should I write my commits?\n\nWe are using [Conventional Commit messages](https://www.conventionalcommits.org/).\n\nThe most important prefixes you should have in mind are:\n\n* `fix:` which represents bug fixes, and correlates to a [SemVer](https://semver.org/)\n  patch.\n* `feat:` which represents a new feature, and correlates to a SemVer minor.\n* `feat!:`,  or `fix!:`, `refactor!:`, etc., which represent a breaking change\n  (indicated by the `!`) and will result in a SemVer major.\n\nThis is the complete list of what is defined and if it is visible in the\nchangelog:\n- 'feat' -\u003e section: 'Features'\n- 'feature' -\u003e section: 'Features'\n- 'fix' -\u003e section: 'Bug Fixes'\n- 'perf' -\u003e section: 'Performance Improvements'\n- 'revert' -\u003e section: 'Reverts'\n- 'docs' -\u003e section: 'Documentation', hidden: true\n- 'style' -\u003e section: 'Styles', hidden: true\n- 'chore' -\u003e section: 'Miscellaneous Chores', hidden: true\n- 'refactor' -\u003e section: 'Code Refactoring', hidden: true\n- 'test' -\u003e section: 'Tests', hidden: true\n- 'build' -\u003e section: 'Build System', hidden: true\n- 'ci' -\u003e section: 'Continuous Integration', hidden: true\n```\n\n# Contact Information\n\nDaSCH Support `\u003csupport@dasch.swiss\u003e`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasch-swiss%2Fsipi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasch-swiss%2Fsipi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasch-swiss%2Fsipi/lists"}