.env.
Generate the keys
Add to .env
Copy each base64 string — the entire output, as one continuous string with no line breaks — into your.env:
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Generate an RSA 4096-bit key pair and add it to your .env file.
.env.
# Generate 4096-bit RSA key pair in PEM format
ssh-keygen -t rsa -b 4096 -m PEM -f jwt.key -N '""'
# Print the base64-encoded private key
[Convert]::ToBase64String([IO.File]::ReadAllBytes("jwt.key"))
# Print the base64-encoded public key
[Convert]::ToBase64String([IO.File]::ReadAllBytes("jwt.key.pub"))
# Generate 4096-bit RSA private key
openssl genrsa -out private.pem 4096
# Extract the public key
openssl rsa -in private.pem -pubout -out public.pem
# Print base64-encoded private key (no line breaks)
base64 -w 0 private.pem # Linux
base64 private.pem # macOS
# Print base64-encoded public key
base64 -w 0 public.pem # Linux
base64 public.pem # macOS
.env:
JWT_PRIVATE_KEY=LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS…(long string)
JWT_PUBLIC_KEY=LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5C…(long string)
.gitignore already includes these patterns:*.key
*.pem
*.der
jwt-keys.txt
.gitignore before making any commits.Local development → one key pair
Staging → different key pair
Production → different key pair