SIGNING_MODE controls how presigned upload/download URLs and headers are signed.
| Mode | Default | Use for | Extra env vars needed |
|---|---|---|---|
static |
yes | AWS S3, MinIO, GCS with an HMAC key | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, MINIO_ENDPOINT, REGION_NAME |
gcs-impersonation |
no | GCS only, no static keys (e.g. GKE Workload Identity) | none — signs via ambient credentials + IAM signBlob |
Common to both modes:
BUCKET(orAWS_BUCKET, kept for existing deployments —BUCKETwins if both are set) — bucket name, required.BUCKET_PREFIX— key prefix, defaultaiobotocore(historical, kept for backward compat).LINK_TTL— presigned URL/header validity in seconds, default600.
- Install pyenv and poetry globally
- Install python3.12 python globally using pyenv
- Inside the app directory, run
poetry env use /path/to/python312 - Run
poetry install - Run
poetry shellto activate virtual environment - Run
autohooks activateto activate git hooks
- Run Aidbox anywhere but make
host.docker.internalavailable from the Aidbox to access the host machine - Run
cp .env.example .env docker-compose up
- Run
cp .env.tests.local.example .env.tests.local - Put your dev aidbox license key into
AIDBOX_LICENSE_TESTin.env.tests.local - Run
docker compose -f compose.test-env.yaml buildat the first time and every time once dependencies are updated/added - Run
./run_test.sh - You can kill the containers when complete to work with tests by run:
docker compose -f compose.test-env.yaml down
Strongly recommended to use ruff and mypy plugins for IDE