Deploy on Render
Render offers a free tier that's adequate for testing and a paid tier for production. Same shape as Railway, slightly different mechanics.
Why Render
- Free tier for hobby/test use ($0/month, with limitations).
- Paid tier from $7/month.
- Public HTTPS URL out of the box.
- Auto-deploy from GitHub.
- Persistent disk available on paid plans.
Free vs paid
The free tier has a critical limitation for caput: services on the free tier go to sleep after 15 minutes of inactivity. Wake-on-request is fine for marketing sites, but the caput bot needs to be polling the AMM continuously to fire liquidation when needed. A sleeping bot cannot fire liquidation.
Do not use the free tier for production caput contracts. Use it only for testing on testnet.
For mainnet contracts, use the paid tier ($7/month for the Standard plan, which keeps the service always-on).
Prerequisites
- A Render account (free signup at render.com).
- A GitHub repo containing your caput bundle.
- A credit card on file for the paid tier.
Steps
1. Push your bundle to GitHub
Initialize a git repo in the directory where you extracted your bundle:
git init
git add .
git commit -m "Initial caput bundle"
Create a private repo on GitHub and push:
git remote add origin git@github.com:yourusername/caput-bot.git
git push -u origin main
2. Create a new Web Service on Render
In your Render dashboard, click New → Web Service → connect your GitHub repo.
Select your caput-bot repo.
3. Configure the service
- Name:
caput-bot(or whatever you want; this becomes part of your URL). - Region: pick the closest to where you operate.
- Branch:
main. - Runtime: Node (autodetected from the bundle's package.json once Phase 2+ ships).
- Build Command:
npm install(when Phase 2+ ships; Phase 0 placebuyer bundle requires no build). - Start Command:
node caput-bot(when Phase 2+ ships). - Plan: Standard ($7/month) — do not pick the free tier for production.
4. Environment variables
In the Environment section, add the variables from your config.env. Each line in the bundle's config.env becomes one environment variable on Render.
Important:
XRPL_NETWORK—testnetfor testing,mainnetwhen ready.PUBLIC_HOST— set to the Render URL (visible after the first deploy completes; format likehttps://caput-bot.onrender.com).LICENSE_TX_HASHandLICENSE_WALLET— already baked, don't change.
5. Add persistent disk (for state)
The bot stores state in SQLite. Without persistent disk, every restart wipes your state — including remaining uses, open positions, and pre-signed transactions.
In Disks, add a 1GB disk mounted at /data. Update config.env:
STATE_DB_PATH=/data/caput.db
This costs $0.25/GB/month on top of the service plan, so ~$7.25/month total for a 1GB disk.
6. Deploy
Render auto-deploys on push to main. Check the Logs tab for startup output.
7. Set up uptime monitoring
Same as Railway — add an external uptime monitor hitting your bot's /health endpoint. Render's auto-restart handles crashes, but external monitoring catches platform-level issues.
8. First-run setup
Visit your Render URL with the admin setup token from the deploy logs:
https://caput-bot.onrender.com/admin?setup=XXXX-XXXX-XXXX
Complete first-run: connect wallet adapter, verify license tx, see dashboard.
9. Testnet validation
Before any mainnet contract, test the full lifecycle on testnet. See the testnet checklist in the Railway deploy guide — it applies identically here.
Costs
- Render Standard plan: $7/month
- Persistent disk (1GB): $0.25/month
- Total: ~$7.25/month
- Plus XRPL transaction fees from your wallet.
Updating
Push to GitHub. Render auto-deploys.
State persists on the mounted disk across deploys.
Support
Render docs at render.com/docs.
Caput-specific issues: read the source.