.env.sample from the repository root to .env and fill in the values before starting any service.
API Gateway
Host address the API Gateway binds to. Default:
0.0.0.0.Port the API Gateway HTTP server listens on. Default:
5000.Protocol used for API Gateway URLs in Swagger server list. Example:
http.Secure protocol variant. Example:
https.Host and port used when building Swagger server URLs. Example:
localhost:5000.Port component for
API_ENDPOINT. Example: 5000.WebSocket host URL. Example:
http://localhost:5000.Comma-separated list of origins allowed by CORS. Leave empty to disable CORS restrictions. Example:
https://app.example.com,https://dashboard.example.com.When
true, hides OID4VC, OID4VP, and x509 controller routes from the OpenAPI documentation. Default: true.Localhost API URL added as a Swagger server entry.
Development environment API URL added as a Swagger server entry.
QA environment API URL added as a Swagger server entry.
Production environment API URL added as a Swagger server entry.
Sandbox environment API URL added as a Swagger server entry.
Application-level protocol identifier used in SSO redirect flows.
Runtime mode. Example:
DEV.Platform identity
Display name of the platform. Used as the Swagger API title. Example:
CREDEBL.URL of the platform logo image shown in emails and the web UI.
Public URL of the platform web application.
Base URL for the platform API. Example:
https://devapi.credebl.id.Support email address displayed to users.
Organization name shown in “powered by” attribution.
URL linked to the “powered by” attribution.
Domain used to construct public URLs for uploaded logo files.
URL of the front-end application. Example:
http://localhost:3000.Domain of the S3 bucket that stores shortened URL objects. Example:
https://bucket-name.s3.ap-east-1.amazonaws.com.Domain used to generate deep-links. The platform appends
url as a query parameter. Example: https://your-deeplink-domain?url=.Email address of the platform administrator account.
Deployment environment label. Example:
production.Maximum number of out-of-band invitations dispatched in a single batch. Default:
10.Maximum concurrent proof-request connections. Default:
10.Database
Full Prisma-compatible PostgreSQL connection string. Example:
postgresql://postgres:password@localhost:5432/postgres?schema=public.Pooled connection string (e.g., via Supabase PgBouncer). Used when connection pooling is required.
PostgreSQL host. Example:
0.0.0.0.PostgreSQL port. Default:
5432.PostgreSQL username. Default:
postgres.PostgreSQL password.
Name of the PostgreSQL database.
When
true, enables email alerts when the ledger_id column in org_agents is set to null. Requires the utility microservice.Comma-separated list of email addresses that receive database alerts.
Comma-separated Prisma log types. Example:
error,warn. Adding query produces verbose logging for every SQL statement.NATS messaging
NATS server URL(s). Multiple servers can be provided as comma-separated values. Example:
nats://0.0.0.0:4222.NATS server hostname. Example:
0.0.0.0.NATS server port. Default:
4222.Authentication method for NATS connections. One of:
nkey, creds, usernamePassword, none. Default: nkey.NATS username. Required when
NATS_AUTH_TYPE=usernamePassword.NATS password. Required when
NATS_AUTH_TYPE=usernamePassword.
Absolute path to a NATS credentials file. Required when
NATS_AUTH_TYPE=creds. Example: /platform/app_user.creds.Auth type override for the notification service NATS connection. Accepts the same values as
NATS_AUTH_TYPE.Enables the NATS-based notification pathway. Default:
false.Per-service NKEY seeds
Each microservice authenticates to NATS using its own NKey seed. Required whenNATS_AUTH_TYPE=nkey.
NKey seed for the
api-gateway service.NKey seed for the
user service.NKey seed for the
organization service.NKey seed for the
agent-provisioning service.NKey seed for the
agent-service service.NKey seed for the
verification service.NKey seed for the
issuance service.NKey seed for the
connection service.NKey seed for the
ecosystem service.NKey seed for the
credential-definition service.NKey seed for the
schema service.NKey seed for the
utilities service.NKey seed for the
geo-location service.NKey seed for the
x509 service.NKey seed for the
oid4vc-issuance service.NKey seed for the
oid4vc-verification service.JetStream / streaming
Name of the JetStream aggregate stream. Default:
aggregate.Name of the JetStream DID notification stream. Default:
did-notify.Name of the JetStream pull consumer. Default:
hub-pull-consumer.Acknowledgement wait time in nanoseconds. Default:
10_000.Maximum delivery attempts before a message is considered dead. Default:
4.Redis
Redis server host. Example:
0.0.0.0.Redis server port. Default:
6379.Time-to-live in milliseconds for the file-upload cache stored in Redis.
Maximum number of concurrent sessions a user can hold.
Maximum file upload size in bytes. Default:
10485760 (10 MB).Authentication
Supabase
URL of your Supabase project. Example:
https://xyzcompany.supabase.co.Supabase anonymous (public) API key.
JWT secret from your Supabase project settings. Used to verify tokens server-side.
Keycloak
Base URL of the Keycloak server. Example:
http://localhost:8080/.Keycloak admin console URL. Example:
http://localhost:8080.Name of the Keycloak master realm.
Client ID of the management client in Keycloak.
Secret of the management client.
Keycloak realm used by the platform. Example:
credebl-platform.Client ID of the Keycloak client created for the platform admin console. Example:
adminClient.Secret of the platform admin Keycloak client.
Previous client ID — used when migrating users after a Keycloak client rename.
SSO clients
To support multiple SSO clients, add a set of four variables for each client and append its name to
SUPPORTED_SSO_CLIENTS. The variable names follow the pattern {CLIENT-NAME}_CLIENT_ALIAS, {CLIENT-NAME}_DOMAIN, {CLIENT-NAME}_KEYCLOAK_MANAGEMENT_CLIENT_ID, and {CLIENT-NAME}_KEYCLOAK_MANAGEMENT_CLIENT_SECRET.Comma-separated list of enabled SSO client names. Example:
CREDEBL,VERIFIER.Alias token that identifies the default CREDEBL SSO client. Example:
CREDEBL.Redirect URL for the default CREDEBL client after login. Example:
http://localhost:3000.Encrypted Keycloak management client ID for the CREDEBL SSO client. Encrypt using
CRYPTO_PRIVATE_KEY.Encrypted Keycloak management client secret for the CREDEBL SSO client.
Crypto
Private key used to encrypt/decrypt sensitive configuration values (e.g., Keycloak client secrets). Must match the key used in the Studio UI.
FIDO / WebAuthn
Host and port of the FIDO (WebAuthn) server. Example:
http://localhost:8000.AWS / storage
General AWS credentials
AWS access key ID for the public assets bucket.
AWS secret access key for the public assets bucket.
AWS region for the public assets bucket. Example:
ap-south-1.Name of the S3 bucket used for public assets.
Name of the S3 bucket used for organization logos.
General AWS access key ID.
General AWS secret access key.
General AWS region. Example:
us-east-1.General S3 bucket name.
AWS account ID.
ARN of the S3 bucket. Example:
arn:aws:s3:::bucket-name.S3 object store (dedicated credentials)
AWS access key ID for the object-store S3 bucket.
AWS secret access key for the object-store S3 bucket.
AWS region for the object-store S3 bucket.
Name of the S3 bucket used for stored objects.
ECS (agent provisioning)
ECS cluster name for Credo controller agents. Example:
CREDO-CONTROLLER-CLUSTER.ECS task definition family name. Example:
CREDO-CONTROLLER-TASKDEFINITION.Security group ID for ECS tasks.
Subnet ID for ECS tasks.
EFS filesystem ID used by ECS tasks.
ARN of the inbound target group for agent load balancing.
ARN of the admin target group for agent load balancing.
Active email provider. One of:
resend, sendgrid, ses, smtp.API key for the Resend email service. Required when
EMAIL_PROVIDER=resend. Example: re_xxxxxxxxxx.
API key for SendGrid. Required when
EMAIL_PROVIDER=sendgrid. Example: SG.xxxxxxx.
AWS region for SES. Required when
EMAIL_PROVIDER=ses. Example: ap-south-1.AWS access key ID for SES.
AWS secret access key for SES.
SMTP server hostname. Required when
EMAIL_PROVIDER=smtp. Example: smtp.gmail.com.SMTP server port. Example:
587.SMTP username / sender address.
SMTP password.
Agent
SSH-style address of the agent host VM. Example:
[email protected].Protocol for agent communication. Example:
http.API key for the base agent wallet. Must be at least 16 characters. Example:
supersecret-that-too-16chars.
Docker image tag for the AFJ (Aries Framework JavaScript) agent. Example:
afj-0.4.1:latest.Absolute path to the agent startup shell script. Example:
/apps/agent-provisioning/AFJ/scripts/start_agent.sh.Directory path for agent endpoint configuration files. Example:
/apps/agent-provisioning/AFJ/endpoints/.Host (IP address) of the PostgreSQL database used for agent wallet storage.
Port of the wallet storage database. Default:
5432.Username for the wallet storage database. Default:
postgres.Password for the wallet storage database.
Name of the platform administrator wallet. Default:
platform-admin.Encrypted password for the platform wallet. Encrypt with
crypto-js using CRYPTO_PRIVATE_KEY.
32-character seed used when creating the platform DID.
Unique identifier for this platform instance.
URL of the file server used to host tails files and other agent assets.
Port of the file server. Default:
8081.Username for file server SSH access. Default:
credebl.Hostname or IP of the file server. Example:
0.0.0.0.URL of the schema file server (used for Polygon-based W3C schemas).
Authentication token for the schema file server.
Protocol used by agent endpoint URLs. Example:
http.Observability
ELK Stack
Enables ELK-based structured logging. Example:
true.Enables console output of ELK-format logs. Example:
true.Log verbosity level. Example:
debug.Elasticsearch endpoint for log ingestion. Example:
http://localhost:9200/.Elasticsearch username. Example:
elastic.Elasticsearch password.
Organization label attached to log entries. Example:
credebl.Context label attached to log entries. Example:
platform.Application label attached to log entries. Example:
api.Hostname or unique identifier for this service instance. Example:
localhost.OpenTelemetry
Enables the OpenTelemetry SDK. Default:
false.Logical service name shown in observability tools such as SigNoz. Example:
CREDEBL-PLATFORM-SERVICE.Service version reported to the OTel collector. Example:
1.0.0.OTLP/HTTP endpoint for trace export. Example:
http://localhost:4318/v1/traces.OTLP/HTTP endpoint for log export. Example:
http://localhost:4318/v1/logs.API key or token used to authenticate with the OTel collector.
Name of the OpenTelemetry logger. Example:
credebl-platform-logger.