mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
<!-- Clearly explain the need for these changes: --> If we bounce too many emails from Postmark, they will be really upset with us, which is not so good. We need a way to react when we bounce emails, so we set it up so they notify us via webhooks. We also need to build authentication into those webhooks to prevent random people from sending us fake webhooks. All this together means we need a new route for the inbound webhook. To do this, we need a way to track if the email address is valid. So, after chatting with @itsababseh, we are adding a validated email field that defaults to `True` because all the users are already validated in prod. In dev, we may suffer. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds special API Key auth handler to the libs so that we can easily test stuff on the /docs endpoint and re-use it if needed - Adds New Secret for this API key from postmark - Adds a validatedEmail boolean to the`User` table - Adds a postmark endpoint to the routers list for handling the inbound webhook from Postmark - "Handle" all the various things this endpoint could send us (most of them we do nothing about) ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] Sign up with john@example.com email (the one postmark uses in webhooks) - [x] Set email validation to true - [x] Send the bounce webhook notice - [x] Check it gets set to false #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**)
187 lines
5.3 KiB
Plaintext
187 lines
5.3 KiB
Plaintext
DB_USER=postgres
|
|
DB_PASS=your-super-secret-and-long-postgres-password
|
|
DB_NAME=postgres
|
|
DB_PORT=5432
|
|
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:${DB_PORT}/${DB_NAME}?connect_timeout=60&schema=platform"
|
|
PRISMA_SCHEMA="postgres/schema.prisma"
|
|
|
|
BACKEND_CORS_ALLOW_ORIGINS=["http://localhost:3000"]
|
|
|
|
# generate using `from cryptography.fernet import Fernet;Fernet.generate_key().decode()`
|
|
ENCRYPTION_KEY='dvziYgz0KSK8FENhju0ZYi8-fRTfAdlz6YLhdB_jhNw='
|
|
|
|
REDIS_HOST=localhost
|
|
REDIS_PORT=6379
|
|
REDIS_PASSWORD=password
|
|
|
|
ENABLE_CREDIT=false
|
|
STRIPE_API_KEY=
|
|
STRIPE_WEBHOOK_SECRET=
|
|
|
|
# What environment things should be logged under: local dev or prod
|
|
APP_ENV=local
|
|
# What environment to behave as: "local" or "cloud"
|
|
BEHAVE_AS=local
|
|
PYRO_HOST=localhost
|
|
SENTRY_DSN=
|
|
|
|
# Email For Postmark so we can send emails
|
|
POSTMARK_SERVER_API_TOKEN=
|
|
POSTMARK_SENDER_EMAIL=invalid@invalid.com
|
|
POSTMARK_WEBHOOK_TOKEN=
|
|
|
|
## User auth with Supabase is required for any of the 3rd party integrations with auth to work.
|
|
ENABLE_AUTH=true
|
|
SUPABASE_URL=http://localhost:8000
|
|
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
|
|
SUPABASE_JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
|
|
|
|
# RabbitMQ credentials -- Used for communication between services
|
|
RABBITMQ_HOST=localhost
|
|
RABBITMQ_PORT=5672
|
|
RABBITMQ_DEFAULT_USER=rabbitmq_user_default
|
|
RABBITMQ_DEFAULT_PASS=k0VMxyIJF9S35f3x2uaw5IWAl6Y536O7
|
|
|
|
## GCS bucket is required for marketplace and library functionality
|
|
MEDIA_GCS_BUCKET_NAME=
|
|
|
|
## For local development, you may need to set FRONTEND_BASE_URL for the OAuth flow
|
|
## for integrations to work. Defaults to the value of PLATFORM_BASE_URL if not set.
|
|
# FRONTEND_BASE_URL=http://localhost:3000
|
|
|
|
## PLATFORM_BASE_URL must be set to a *publicly accessible* URL pointing to your backend
|
|
## to use the platform's webhook-related functionality.
|
|
## If you are developing locally, you can use something like ngrok to get a publc URL
|
|
## and tunnel it to your locally running backend.
|
|
PLATFORM_BASE_URL=http://localhost:3000
|
|
|
|
## == INTEGRATION CREDENTIALS == ##
|
|
# Each set of server side credentials is required for the corresponding 3rd party
|
|
# integration to work.
|
|
|
|
# For the OAuth callback URL, use <your_frontend_url>/auth/integrations/oauth_callback,
|
|
# e.g. http://localhost:3000/auth/integrations/oauth_callback
|
|
|
|
# GitHub OAuth App server credentials - https://github.com/settings/developers
|
|
GITHUB_CLIENT_ID=
|
|
GITHUB_CLIENT_SECRET=
|
|
|
|
# Google OAuth App server credentials - https://console.cloud.google.com/apis/credentials, and enable gmail api and set scopes
|
|
# https://console.cloud.google.com/apis/credentials/consent ?project=<your_project_id>
|
|
|
|
# You'll need to add/enable the following scopes (minimum):
|
|
# https://console.developers.google.com/apis/api/gmail.googleapis.com/overview ?project=<your_project_id>
|
|
# https://console.cloud.google.com/apis/library/sheets.googleapis.com/ ?project=<your_project_id>
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
|
|
# Twitter (X) OAuth 2.0 with PKCE Configuration
|
|
# 1. Create a Twitter Developer Account:
|
|
# - Visit https://developer.x.com/en and sign up
|
|
# 2. Set up your application:
|
|
# - Navigate to Developer Portal > Projects > Create Project
|
|
# - Add a new app to your project
|
|
# 3. Configure app settings:
|
|
# - App Permissions: Read + Write + Direct Messages
|
|
# - App Type: Web App, Automated App or Bot
|
|
# - OAuth 2.0 Callback URL: http://localhost:3000/auth/integrations/oauth_callback
|
|
# - Save your Client ID and Client Secret below
|
|
TWITTER_CLIENT_ID=
|
|
TWITTER_CLIENT_SECRET=
|
|
|
|
# Linear App
|
|
# Make a new workspace for your OAuth APP -- trust me
|
|
# https://linear.app/settings/api/applications/new
|
|
# Callback URL: http://localhost:3000/auth/integrations/oauth_callback
|
|
LINEAR_CLIENT_ID=
|
|
LINEAR_CLIENT_SECRET=
|
|
|
|
# To obtain Todoist API credentials:
|
|
# 1. Create a Todoist account at todoist.com
|
|
# 2. Visit the Developer Console: https://developer.todoist.com/appconsole.html
|
|
# 3. Click "Create new app"
|
|
# 4. Once created, copy your Client ID and Client Secret below
|
|
TODOIST_CLIENT_ID=
|
|
TODOIST_CLIENT_SECRET=
|
|
|
|
## ===== OPTIONAL API KEYS ===== ##
|
|
|
|
# LLM
|
|
OPENAI_API_KEY=
|
|
ANTHROPIC_API_KEY=
|
|
GROQ_API_KEY=
|
|
OPEN_ROUTER_API_KEY=
|
|
|
|
# Reddit
|
|
# Go to https://www.reddit.com/prefs/apps and create a new app
|
|
# Choose "script" for the type
|
|
# Fill in the redirect uri as <your_frontend_url>/auth/integrations/oauth_callback, e.g. http://localhost:3000/auth/integrations/oauth_callback
|
|
REDDIT_CLIENT_ID=
|
|
REDDIT_CLIENT_SECRET=
|
|
REDDIT_USER_AGENT="AutoGPT:1.0 (by /u/autogpt)"
|
|
|
|
# Discord
|
|
DISCORD_BOT_TOKEN=
|
|
|
|
# SMTP/Email
|
|
SMTP_SERVER=
|
|
SMTP_PORT=
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
|
|
# D-ID
|
|
DID_API_KEY=
|
|
|
|
# Open Weather Map
|
|
OPENWEATHERMAP_API_KEY=
|
|
|
|
# SMTP
|
|
SMTP_SERVER=
|
|
SMTP_PORT=
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
|
|
# Medium
|
|
MEDIUM_API_KEY=
|
|
MEDIUM_AUTHOR_ID=
|
|
|
|
# Google Maps
|
|
GOOGLE_MAPS_API_KEY=
|
|
|
|
# Replicate
|
|
REPLICATE_API_KEY=
|
|
|
|
# Ideogram
|
|
IDEOGRAM_API_KEY=
|
|
|
|
# Fal
|
|
FAL_API_KEY=
|
|
|
|
# Exa
|
|
EXA_API_KEY=
|
|
|
|
# E2B
|
|
E2B_API_KEY=
|
|
|
|
# Mem0
|
|
MEM0_API_KEY=
|
|
|
|
# Nvidia
|
|
NVIDIA_API_KEY=
|
|
|
|
# Apollo
|
|
APOLLO_API_KEY=
|
|
|
|
# SmartLead
|
|
SMARTLEAD_API_KEY=
|
|
|
|
# ZeroBounce
|
|
ZEROBOUNCE_API_KEY=
|
|
|
|
# Logging Configuration
|
|
LOG_LEVEL=INFO
|
|
ENABLE_CLOUD_LOGGING=false
|
|
ENABLE_FILE_LOGGING=false
|
|
# Use to manually set the log directory
|
|
# LOG_DIR=./logs
|