#!/bin/sh
set -eu
# Content-free, fail-closed staging profile for Gate 5. Secrets and the database
# URL must already be present in the runtime identity's environment.
: "${DATABASE_URL:?DATABASE_URL is required}"
: "${GITHUB_CLIENT_ID:?GITHUB_CLIENT_ID is required}"
: "${GITHUB_CLIENT_SECRET:?GITHUB_CLIENT_SECRET is required}"
: "${GITHUB_TOKEN_ENCRYPTION_KEY:?GITHUB_TOKEN_ENCRYPTION_KEY is required}"
: "${GITHUB_TOKEN_ENCRYPTION_KEY_ID:?GITHUB_TOKEN_ENCRYPTION_KEY_ID is required}"
# The content vault's own key (VAULT-001, issue #193). No bridge exists to
# another vault's key, so an unset value is a refused boot rather than two
# vaults sealing under one key.
: "${CONTENT_ENCRYPTION_KEY:?CONTENT_ENCRYPTION_KEY is required}"
: "${OPENAI_API_KEY:?OPENAI_API_KEY is required}"
: "${SECRET_KEY_BASE:?SECRET_KEY_BASE is required}"
export GITHUB_OAUTH_SCOPES="user:email"
export GITHUB_REDIRECT_URI="https://staging.openagents.com/auth/github/callback"
# Written as an explicit default rather than ${VAR:-{}}: POSIX expansion ends
# at the first `}`, so a preset value came back corrupted with a trailing
# brace and failed JSON validation downstream.
if [ -z "${GITHUB_TOKEN_DECRYPTION_KEYS_JSON:-}" ]; then
export GITHUB_TOKEN_DECRYPTION_KEYS_JSON='{}'
fi
export OPENAGENTS_ALLOWED_ORIGINS="https://staging.openagents.com"
export OPENAGENTS_CODING_JOBS_DIR="/var/lib/openagents/coding-jobs"
export OPENAGENTS_DATABASE_IPV6="false"
export OPENAGENTS_DATABASE_MODE="url"
export OPENAGENTS_DIST_PORT_MAX="9115"
export OPENAGENTS_DIST_PORT_MIN="9100"
export OPENAGENTS_ENVIRONMENT="staging"
export OPENAGENTS_FEATURE_BOOT_CONVERGENCE="false"
export OPENAGENTS_FEATURE_COMPUTERS="false"
export OPENAGENTS_FEATURE_CONVERSATION_RESET="false"
export OPENAGENTS_FEATURE_DEPLOYMENT_CONTROL_PLANE="false"
export OPENAGENTS_FEATURE_EXPERIENCE_MEMORY="false"
export OPENAGENTS_FEATURE_FORGE="false"
export OPENAGENTS_FEATURE_FORGE_DEPLOY="false"
export OPENAGENTS_FEATURE_GRAPH_MEMORY="false"
export OPENAGENTS_FEATURE_HORDE="true"
export OPENAGENTS_FEATURE_INCIDENT_FIXER="false"
export OPENAGENTS_FEATURE_MEMORY_EMBEDDINGS="false"
export OPENAGENTS_FEATURE_MEMORY_PORTABILITY="false"
export OPENAGENTS_FEATURE_RA="false"
export OPENAGENTS_FEATURE_SEMANTIC_MEMORY="false"
export OPENAGENTS_FEATURE_SHADOW_PROGRAMS="false"
export OPENAGENTS_FEATURE_SYSTEM_MEMORY_RECALL="false"
export OPENAGENTS_FEATURE_TOOL_EMBEDDINGS="false"
export OPENAGENTS_FEATURE_TOOLS="true"
export OPENAGENTS_FEATURE_TURN_RECOVERY="false"
export OPENAGENTS_FEATURE_VOICE="false"
export OPENAGENTS_FEATURE_VOICE_RECORDING="false"
export OPENAGENTS_FEATURE_VOICE_RETENTION="false"
export OPENAGENTS_FEATURE_WORK="false"
export OPENAGENTS_FORGE_ARTIFACT_DIR="/var/lib/openagents/artifacts"
export OPENAGENTS_FORGE_ARTIFACT_STORE="local"
export OPENAGENTS_FORGE_BUILD_DIR="/var/lib/openagents/workspace/build"
export OPENAGENTS_FORGE_BUILD_EXECUTOR="sidecar"
export OPENAGENTS_FORGE_BUILD_QUEUE_DIR="/var/lib/openagents/workspace/build-queue"
export OPENAGENTS_FORGE_BUILD_TIMEOUT_MS="300000"
export OPENAGENTS_FORGE_BUILD_OUTPUT_RETENTION_MS="604800000"
export OPENAGENTS_FORGE_DEPLOY_TIMEOUT_MS="15000"
export OPENAGENTS_FORGE_DEPLOY_TOKEN_TTL_MS="120000"
export OPENAGENTS_FORGE_BOOT_RETRY_MIN_MS="1000"
export OPENAGENTS_FORGE_BOOT_RETRY_MAX_MS="30000"
export OPENAGENTS_FORGE_DATA_DIR="/var/lib/openagents/forge"
export OPENAGENTS_FORGE_EXPECTED_FLEET_SIZE="1"
export OPENAGENTS_FORGE_INTERNAL_GIT_URL="http://127.0.0.1:8080/OpenAgentsInc"
export OPENAGENTS_FORGE_OPERATOR_TOKEN=""
export OPENAGENTS_FORGE_OWNER="OpenAgentsInc"
export OPENAGENTS_FORGE_REPOSITORIES="openagents.com"
export OPENAGENTS_FORGE_WAL_ADAPTER="local"
export OPENAGENTS_FORGE_WAL_BUCKET=""
export OPENAGENTS_FORGE_WAL_DIR="/var/lib/openagents/forge-wal"
export OPENAGENTS_HTTPS_ALIASES=""
export OPENAGENTS_IMAGE_DIGEST=""
export OPENAGENTS_INFERENCE_PROXY_URL=""
export OPENAGENTS_MACHINE_TOKEN_TTL_SECONDS="2592000"
export OPENAGENTS_MIGRATE_ON_BOOT="true"
export OPENAGENTS_FORGE_ROLLING_PROVIDER=""
export OPENAGENTS_GCP_IMAGE_REPOSITORY=""
export OPENAGENTS_GCP_COMPUTE_TIMEOUT_MS="300000"
export OPENAGENTS_GCP_ROLLING_INSTANCES_JSON=""
export OPENAGENTS_GCP_ROLLING_PROJECT_ID=""
export OPENAGENTS_GCP_ROLLING_RPC_TIMEOUT_MS="5000"
export OPENAGENTS_GCP_ROLLING_ZONE=""
export OPENAGENTS_PRODUCTION_PROJECT_ID=""
export OPENAGENTS_PRODUCTION_DEPLOY_ENABLED="false"
export OPENAGENTS_RA_DATA_DIR="/var/lib/openagents/ra"
export OPENAGENTS_RA_EXPECTED_SIZE="3"
export OPENAGENTS_SECURE_COOKIES="true"
export OPENAGENTS_STAGING_GATE="5"
export OPENAGENTS_STAGING_CLEANUP_ENABLED="false"
export PHX_HOST="staging.openagents.com"
export POOL_SIZE="${POOL_SIZE:-10}"
export VOICE_RECORDING_ENCRYPTION_KEY=""
exec "$@"