# image_pipe v0.1.0 - Table of Contents

> A Plug-based image optimization server with a declarative path API.

## Pages

- Getting started
  - [ImagePipe documentation](overview.md)
  - [Installation](installation.md)
  - [Getting started with the server](server-getting-started.md)
  - [Getting started with Phoenix](phoenix-getting-started.md)
  - [Processing images in Elixir](processing-in-elixir.md)
  - [Elixir API](elixir-api.md)
  - [Building URLs for the server](building-server-urls.md)

- Requesting images
  - [Requesting images](requesting-images.md)
  - [Processing options](processing.md)
  - [Resize and layout](resize.md)
  - [Orientation and cropping](crop.md)
  - [Effects](effects.md)
  - [Watermarks](watermark.md)
  - [Output and encoding](output.md)
  - [Request controls](request.md)

- Running ImagePipe
  - [Deploying image_pipe_server](server-deployment.md)
  - [Limiting work per request](deployment.md)
  - [Image sources](sources.md)
  - [Serving images from local files](serving-local-files.md)
  - [Serving from an HTTP origin](serving-from-http.md)
  - [Serving images from S3](serving-from-s3.md)
  - [Caching processed images](caching-processed-images.md)
  - [Serving images through a CDN](serving-through-a-cdn.md)
  - [Signing URLs and rotating keys](signing-urls.md)
  - [Defining presets](defining-presets.md)
  - [Enabling detection](enabling-detection.md)
  - [Limiting concurrent processing](processing-controls.md)
  - [Choosing a quality target](choosing-an-autoquality-target.md)
  - [Monitoring with telemetry](telemetry.md)
  - [Exporting traces to Jaeger](opentelemetry-jaeger.md)
  - [Serving and processing in one app](combined-usage.md)
  - [Fetching images from the server](fetching-from-the-server.md)

- Concepts
  - [Processing order and groups](processing-order.md)
  - [Caching and freshness](caching-and-freshness.md)
  - [Failures during streaming](streaming-failures.md)
  - [Signing and source concealment](urls.md)
  - [Presets](presets.md)
  - [Content-aware cropping](content-aware-gravity.md)
  - [Source network policy](source-network-policy.md)
  - [Request tracing](tracing.md)

- Extending
  - [Writing a custom source](custom-sources.md)
  - [Writing a custom detector](custom-detectors.md)
  - [Storing presets in a database](storing-presets-in-a-database.md)

- Reference
  - [Elixir configuration](configuration.md)
  - [Configuring image_pipe_server](server-configuration.md)
  - [Shared URL settings](shared-url-settings.md)
  - [Cache storage](cache.md)
  - [HTTP cache headers](cdn-http-cache.md)
  - [Error responses](errors.md)
  - [Telemetry event reference](telemetry-events.md)
  - [Debug response headers](debug_headers.md)

- Project
  - [ImagePipe](readme.md)
  - [Changelog](changelog.md)
  - [LICENSE](license.md)

## Modules

- [ImagePipe.PresetLookup](ImagePipe.PresetLookup.md): Resolves presets that the static `:presets` map does not define, while a
request is served.

- Application API
  - [ImagePipe](ImagePipe.md): Processes images in your own code, and holds the configuration that
`ImagePipe.Plug` serves images with.
  - [ImagePipe.Config](ImagePipe.Config.md): Reusable host configuration shared by the Plug and direct execution.
  - [ImagePipe.Plug](ImagePipe.Plug.md): Serves ImagePipe's image API from a Plug or Phoenix router. Each place it is
plugged in is a mount, with its own options.
  - [ImagePipe.Plug.StreamAbortedError](ImagePipe.Plug.StreamAbortedError.md): Raised by `ImagePipe.Plug` when a response fails after its `200` status and
headers were sent.
  - [ImagePipe.ProcessingPool](ImagePipe.ProcessingPool.md): Limits how many images are processed at once, with a queue for requests that
wait for a turn and a deadline for each image.
  - [ImagePipe.Result](ImagePipe.Result.md): The complete output of `ImagePipe.run/4` or `ImagePipe.write/5`.

- Sources
  - [ImagePipe.Source](ImagePipe.Source.md): Behaviour for source adapters, and the shape of the `:sources` option of
`ImagePipe.config/1`.
  - [ImagePipe.Source.File](ImagePipe.Source.File.md): Source adapter for image files below a directory.
  - [ImagePipe.Source.HTTP](ImagePipe.Source.HTTP.md): Source adapter for images fetched over HTTP and HTTPS.
  - [ImagePipe.Source.S3](ImagePipe.Source.S3.md): Source adapter for objects in S3 and S3-compatible storage.

- Source adapter types
  - [ImagePipe.Source.CachePolicy](ImagePipe.Source.CachePolicy.md): Cache storage and freshness policy for originals and processed images.
  - [ImagePipe.Source.CacheSemantics](ImagePipe.Source.CacheSemantics.md): Source-owned cache facts used by internal and HTTP cache decisions.
  - [ImagePipe.Source.CacheSettings](ImagePipe.Source.CacheSettings.md): Cache settings shared by source adapters.
  - [ImagePipe.Source.Origin](ImagePipe.Source.Origin.md): Origin cache evidence, kept separately from the source's byte identity.
  - [ImagePipe.Source.Resolved](ImagePipe.Source.Resolved.md): Validated source information returned by an adapter's `c:ImagePipe.Source.resolve/3`.
  - [ImagePipe.Source.Response](ImagePipe.Source.Response.md): Source bytes returned by an `ImagePipe.Source` adapter.

- S3 credentials
  - [ImagePipe.Source.S3.AssumeRole](ImagePipe.Source.S3.AssumeRole.md): Credential provider that assumes an IAM role with STS `AssumeRole`, usually
a role in another account.
  - [ImagePipe.Source.S3.ContainerCredentials](ImagePipe.Source.S3.ContainerCredentials.md): Credential provider for ECS, Fargate, and EKS container credentials.
  - [ImagePipe.Source.S3.CredentialProvider](ImagePipe.Source.S3.CredentialProvider.md): Behaviour for S3 credential providers.
  - [ImagePipe.Source.S3.CredentialWarmup](ImagePipe.Source.S3.CredentialWarmup.md): Fetches S3 credentials from a provider at startup, so the first request
for a bucket doesn't wait for them.
  - [ImagePipe.Source.S3.InstanceRole](ImagePipe.Source.S3.InstanceRole.md): Credential provider for the IAM role attached to an EC2 instance, including
Elastic Beanstalk, read from the instance metadata service (IMDSv2).
  - [ImagePipe.Source.S3.WebIdentity](ImagePipe.Source.S3.WebIdentity.md): Credential provider for EKS IAM roles for service accounts (IRSA), using
STS `AssumeRoleWithWebIdentity`.

- Cache
  - [ImagePipe.Cache.FileSystem](ImagePipe.Cache.FileSystem.md): Cache adapter that stores processed images, or originals, as files on local disk.

- Content detection
  - [ImagePipe.Transform.Detector](ImagePipe.Transform.Detector.md): Behaviour for detectors that find faces and objects for `detect` and
`anchor=smart-face` crops.
  - [ImagePipe.Transform.Detector.Composite](ImagePipe.Transform.Detector.Composite.md): Routes requested classes to an ordered list of detectors and merges their regions.
  - [ImagePipe.Transform.Detector.ImageVision.Face](ImagePipe.Transform.Detector.ImageVision.Face.md): `ImagePipe.Transform.Detector` for faces, backed by the optional `image_vision`
dependency (`Image.FaceDetection`, YuNet). The dependency is not declared by
ImagePipe — hosts opt in. When absent, `available?/1` is false and callers fall
back gracefully.
  - [ImagePipe.Transform.Detector.ImageVision.Objects](ImagePipe.Transform.Detector.ImageVision.Objects.md): `ImagePipe.Transform.Detector` for general objects, backed by the optional
`image_vision` dependency (`Image.Detection`, RT-DETR, COCO-80). The dependency
is not declared by ImagePipe — hosts opt in. When absent, `available?/1` is
false and callers fall back gracefully.
  - [ImagePipe.Transform.Detector.Warmup](ImagePipe.Transform.Detector.Warmup.md): One-shot worker that pre-loads a detector's models at boot.

- Telemetry
  - [ImagePipe.Telemetry](ImagePipe.Telemetry.md): Attaches ImagePipe's optional Logger handler and span tracer.
  - [ImagePipe.Telemetry.Trace](ImagePipe.Telemetry.Trace.md): Public facade for the opt-in span tracer.
  - [ImagePipe.Telemetry.Trace.Context](ImagePipe.Telemetry.Trace.Context.md): Immutable, serializable trace context that crosses process/node/HTTP seams.
  - [ImagePipe.Telemetry.Trace.Exporter](ImagePipe.Telemetry.Trace.Exporter.md): Behaviour for receiving the spans the tracer captures, one call per
finished span.
  - [ImagePipe.Telemetry.Trace.LogExporter](ImagePipe.Telemetry.Trace.LogExporter.md): An `ImagePipe.Telemetry.Trace.Exporter` that logs one `Logger.info` line
per finished span.
  - [ImagePipe.Telemetry.Trace.OpenTelemetryExporter](ImagePipe.Telemetry.Trace.OpenTelemetryExporter.md): An `ImagePipe.Telemetry.Trace.Exporter` that replays spans into the
OpenTelemetry SDK your application runs, through the public OpenTelemetry
API.
  - [ImagePipe.Telemetry.Trace.OtelIdGenerator](ImagePipe.Telemetry.Trace.OtelIdGenerator.md): OpenTelemetry SDK id generator that lets `OpenTelemetryExporter` export
untraced requests as true root spans carrying ImagePipe's own trace id.
  - [ImagePipe.Telemetry.Trace.Span](ImagePipe.Telemetry.Trace.Span.md): A captured span handed to an `ImagePipe.Telemetry.Trace.Exporter`.

