Setup

Shared variables

In Railway → Project Settings → Shared Variables, add the third-party secrets you control. Internal service API keys are generated and cross-referenced by the template (for example s3-server PRESIGN_API_KEY via secret formula, then main-server reads that service variable). You should not manually invent matching keys for those.

Third-party keys (you provide)

OPENROUTER_API_KEY=...
SUNO_API_KEY=...
FAL_KEY=...
YOUTUBE_CLIENT_ID=....apps.googleusercontent.com
YOUTUBE_CLIENT_SECRET=...
# Email — pick Resend OR ZeptoMail (see Email sender / Deploy guide)
EMAIL_SERVER=resend

Wire each service to ${{shared.NAME}} where the template expects it — including YOUTUBE_CLIENT_ID / YOUTUBE_CLIENT_SECRET for youtube-server. Do not paste Polar organization tokens into the buyer project. Fal keys: create at https://fal.ai/dashboard/keys with ADMIN scope if you want sidebar balances (API scope hides balances).

Internal keys (template / Railway)

  • Service secrets use Railway formulas such as ${{secret(32)}} so each deploy gets unique values.
  • Consumers reference the producing service (e.g. main-server S3_SERVER_API_KEY → s3-server.PRESIGN_API_KEY).
  • You normally leave these alone unless you are debugging a mis-wired reference.

Email (pick one)

Add EMAIL_SERVER plus the Resend or ZeptoMail keys to Shared Variables. See the Deploy guide and Email sender pages for signup links and plan notes.