Skip to content

Configuration

Arkyc is configured via environment variables. The API reads apps/api/.env; the dashboard and playground read their own .env files (Vite). Copy each .env.example and adjust.

API (apps/api/.env)

Core

VariableExamplePurpose
APP_NAMEArkstackApplication name.
APP_URLhttp://localhost:3100Public base URL of the API.
APP_PORT3100Port the API listens on.
APP_HOSTlocalhostBind host.

Database

VariableExamplePurpose
DATABASE_URLpostgres://arkyc:arkyc@localhost:5432/arkycPostgreSQL connection.

Match this to your Postgres. The bundled docker-compose.yml provisions arkyc:arkyc@localhost:5432/arkyc.

Auth & crypto

VariableExamplePurpose
JWT_SECRETa-long-random-secretSigns dashboard session JWTs.
JWT_EXPIRES_IN1hDashboard token lifetime.
TWO_FACTOR_ENCRYPTION_KEY(32-byte key)Encrypts 2FA secrets.
CLIENT_TOKEN_TTL_SECONDS900Client-token lifetime (15 min).

Providers

VariableDefaultNotes
OCR_DRIVERmockmock, tesseract, ai, or external.
LIVENESS_DRIVER / FACE_MATCH_DRIVERmockmock or external.
OCR_FALLBACK_DRIVERmockUsed when OCR_DRIVER=ai but a project isn't granted AI access.
OCR_API_KEYAnthropic API key for OCR_DRIVER=ai.
OCR_AI_MODELclaude-haiku-4-5-20251001Vision model for the ai driver.
OCR_AI_MAX_EDGE1568Longest uploaded image edge (px) for the ai driver.
OCR_ENDPOINT / LIVENESS_ENDPOINT / FACE_MATCH_ENDPOINTexternal HTTP endpoint (or API base override for ai).
LIVENESS_API_KEY / FACE_MATCH_API_KEYOptional bearer for the endpoint.

See Provider drivers.

Storage

VariableDefaultNotes
FILESYSTEM_DISKlocallocal, s3, gcs, or ftp.
S3 (s3 disk)AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET, AWS_ENDPOINT, AWS_URL.
GCS (gcs disk)GOOGLE_CLOUD_PROJECT, GOOGLE_APPLICATION_CREDENTIALS, GOOGLE_CLOUD_STORAGE_BUCKET.

MinIO and Cloudflare R2 speak the S3 API — use the s3 disk and point AWS_ENDPOINT at them.

Queue

VariableDefaultNotes
QUEUE_CONNECTIONsyncsync (inline), database (durable), or redis.
QUEUE_TABLEjobsTable for the database connection.
QUEUE_RETRY_AFTER90Seconds before a reserved job is reclaimed.
REDIS_HOST / REDIS_PORT / REDIS_PASSWORD / REDIS_QUEUE_DBFor the redis connection.

With database or redis, run workers — see Self-hosting.

Mail

MAIL_HOST, MAIL_PORT, MAIL_SECURE, MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM_ADDRESS — for invitation and verification emails. In dev, a Mailpit container on 1025 works well.

Dashboard (apps/dashboard/.env)

VariableExamplePurpose
VITE_API_ENVdevelopmentSelects which API URL below is used.
VITE_DEV_API_URLhttp://localhost:3100API base in development.
VITE_STAGING_API_URL / VITE_PROD_API_URL / VITE_API_URLAPI base for other environments.

Playground (apps/playground/.env)

VariableExamplePurpose
ARKYC_SECRET_KEYsk_…Project secret key (server-side only).
ARKYC_API_URLhttp://localhost:3100API base the playground proxies to.
ARKYC_WEBHOOK_SECRET(signing secret)Verifies received webhooks (optional).
PORT5174Playground dev-server port.

Released under the MIT License.