-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
104 lines (94 loc) · 4.98 KB
/
Copy path.env.example
File metadata and controls
104 lines (94 loc) · 4.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Public env vars used by the MiniApp (exposed to the browser bundle).
# Canonical site URL — used for OG tags, sitemap, robots, Farcaster manifest.
NEXT_PUBLIC_SITE_URL=https://perkos.xyz
# PerkOS backend API base URL. This stays server-side: browser requests go to
# the App's same-origin /api/platform/* proxy to avoid CORS and hide the
# upstream topology. NEXT_PUBLIC_PERKOS_API_URL remains a temporary fallback
# for existing deployments and can be removed after their env is migrated.
PERKOS_API_URL=https://nexus-api.perkos.xyz/api
# Alpha-access whitelist.
# Comma-separated list of authorized wallet addresses (EVM 0x… or Solana base58).
# Comparison is case-insensitive. If unset or empty, NO wallet has access.
# Example:
# NEXT_PUBLIC_PERKOS_WHITELIST=0xabc...,0xdef...
NEXT_PUBLIC_PERKOS_WHITELIST=
# Firebase web app config (public — these are safe to expose to the browser)
NEXT_PUBLIC_FIREBASE_API_KEY=AIzaSy...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=perkos-app.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=perkos-app
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=perkos-app.firebasestorage.app
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=123456789012
NEXT_PUBLIC_FIREBASE_APP_ID=1:123456789012:web:abc123def456
# Alchemy API key — baked into wagmi transports for Base mainnet +
# baseSepolia. Without it, those chains fall back to the public chain
# default (heavily rate-limited; produces 429 errors in the browser).
# Celo isn't on Alchemy and always uses the public RPC.
NEXT_PUBLIC_ALCHEMY_API_KEY=
# Optional: only if you enabled Google Analytics
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX
# Firebase Admin SDK (server-side only — never NEXT_PUBLIC_)
FIREBASE_PROJECT_ID=perkos-app
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@perkos-app.iam.gserviceaccount.com
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
# LLM provider keys (server-side only).
# If neither is set, /api/assistant/chat returns a stub reply — handy in dev.
# A wallet with its own BYOK key (stored in /agent_secrets) overrides these.
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
ANTHROPIC_API_KEY=
ANTHROPIC_MODEL=claude-sonnet-4-5
# PerkOS LLM gateway — used by /api/agents/launch to mint per-agent Bearer
# keys when provisioning a runtime in PerkOS-mode (no BYOK). The runtime
# container authenticates against the gateway with the minted key as a
# Bearer token instead of relying on the legacy nginx IP allowlist.
#
# PERKOS_LLM_GATEWAY_URL defaults to https://api.llm.perkos.xyz if unset.
# PERKOS_LLM_ADMIN_TOKEN must match ADMIN_TOKEN on the gateway VPS
# (/opt/Perkos-llm/.env). When unset, /api/agents/launch falls back to
# provisioning the agent without a gateway-issued key — the agent boots
# but LLM calls 401 until you re-provision with the token configured.
PERKOS_LLM_GATEWAY_URL=https://api.llm.perkos.xyz
PERKOS_LLM_ADMIN_TOKEN=
# Transactional email via Resend (server-side only). Powers the team
# notifications for the /api/contact and /api/request-access forms.
# If RESEND_API is unset, the forms still persist to Firestore and the
# email step is skipped (logged, non-fatal) — fine for local dev.
RESEND_API=
# Sender must be a verified Resend domain/identity.
EMAIL_FROM="PerkOS <noreply@perkos.xyz>"
CONTACT_EMAIL_TO=contact@perkos.xyz
ACCESS_EMAIL_TO=access@perkos.xyz
# ---- perkos-a2a bridge sidecar ----
# When PERKOS_A2A_BRIDGE_ENABLED=true, every newly-provisioned ECS task
# gets a second container running @perkos/perkos-a2a-bridge. The bridge
# connects to chat.perkos.xyz + transport.perkos.xyz on the agent's
# behalf, which is what makes the per-agent chat surface in the miniapp
# actually deliver messages to the agent's runtime.
#
# Prereqs before flipping this to true:
# 1. The perkos-a2a-bridge image must exist in ECR
# (089332276762.dkr.ecr.us-east-1.amazonaws.com/perkos-a2a-bridge).
# PerkOS-Containers builds the image; add it to the existing
# build-push-ecr workflow.
# 2. The task-execution role (perkos-spark-ecs-execution) needs
# secretsmanager:GetSecretValue on perkos-agents/* — already
# attached (it was set up for the LLM-key secrets).
# 3. Optional but recommended: stand up the Platform-Tools-API
# shared JWT secret in Secrets Manager at
# perkos-platform/{env}/tools-jwt-secret
# then set PERKOS_TOOLS_API_URL + A2A_TOOLS_JWT_SECRET below so
# the bridge can mint per-conv JWTs and the runtime can call
# the Tools API as the active wallet.
PERKOS_A2A_BRIDGE_ENABLED=false
# Pin a specific bridge image tag. "latest" tracks the head of
# PerkOS-A2A main; pin to a release tag (e.g. 0.10.0) in prod.
PERKOS_A2A_BRIDGE_IMAGE_TAG=latest
# Default endpoints for the bridge — override only if pointing at a
# staging chat/transport instance.
PERKOS_TRANSPORT_URL=wss://transport.perkos.xyz/a2a
PERKOS_CHAT_URL=wss://chat.perkos.xyz/chat
# Tools API integration (optional). When both are set, the bridge
# starts its tools-token listener so the runtime plugin can fetch
# short-lived JWTs.
PERKOS_TOOLS_API_URL=
A2A_TOOLS_JWT_SECRET=