Sign inSign up

eslazarev/open-recognition

By eslazarev

•Updated 4 months ago

Self-hosted boto3-compatible AWS Rekognition Faces API - Helm chart (pgvector)

Helm
API management
Web servers
0

41

eslazarev/open-recognition repository overview

⁠open-recognition

Self-hosted, boto3-compatible AWS Rekognition Faces API. Detect, index, compare and search faces using YuNet (detection) + SFace (128-d embeddings), backed by PostgreSQL/pgvector for similarity search, with a built-in HTMX playground UI.

It speaks the AWS Rekognition JSON-1.1 protocol, so an unmodified boto3 client works against it by swapping endpoint_url — no AWS account, no per-call billing, your images never leave your infrastructure.

This repository hosts the Helm chart (OCI artifact). The application container image is published separately.

⁠Install

helm install rekog oci://registry-1.docker.io/eslazarev/open-recognition --version 0.1.0

This deploys the API as a Deployment + Service and, by default, a bundled pgvector StatefulSet for storage. To use an external managed Postgres instead:

helm install rekog oci://registry-1.docker.io/eslazarev/open-recognition --version 0.1.0 \
  --set postgresql.enabled=false \
  --set externalDatabase.url="postgresql://user:pass@host:5432/open_recognition"

The external database must have the pgvector extension available — the app runs CREATE EXTENSION IF NOT EXISTS vector on startup.

⁠Use it with boto3

import boto3

rekog = boto3.client(
    "rekognition",
    endpoint_url="http://localhost:8080",   # or your Ingress URL
    region_name="us-east-1",
    aws_access_key_id="x", aws_secret_access_key="x",
)
rekog.create_collection(CollectionId="people")
rekog.index_faces(CollectionId="people", Image={"Bytes": open("face.jpg", "rb").read()})

The HTMX playground is served at /ui, OpenAPI docs at /docs.

⁠Key values

KeyDefaultDescription
image.repositoryeslazarev/open-recognitionApplication container image
postgresql.enabledtrueDeploy a bundled pgvector StatefulSet
externalDatabase.url""DSN used when postgresql.enabled=false
ingress.enabledfalseExpose via Ingress
service.typeClusterIPService type

See the chart values.yaml for the full list.

Tag summary

Content type

Helm

Digest

sha256:e5abf37ae…

Size

7.9 kB

Last updated

4 months ago

helm pull oci://registry-1.docker.io/eslazarev/open-recognition --version 0.1.0