A real-time prediction market game with autonomous NPCs, perpetual futures, and gamified social mechanics.
NOTE: This is currently in development. We expect to launch publicly around December 1st, 2025. This repo will change heavily in the meantime.
Requirements:
- Node.js >= 18.0.0 (for Error cause support)
- Bun >= 1.3.0
git clone https://github.com/BabylonSocial/babylon.git
cd babylon
bun install
# Setup environment & database
cp .env.example .env
bun run db:push# 1. Install
bun install
# 2. Configure environment
cp .env.example .env
# (Optional) Create .env.local for Next.js-only overrides
# Edit .env (and optionally .env.local) with your Privy credentials + GROQ_API_KEY
# 3. Setup database
bun run db:push
bun run db:seed
# 4. (Optional) Enable Agent0 Integration
# Add to .env:
# AGENT0_ENABLED=true
# BASE_SEPOLIA_RPC_URL=...
# BABYLON_GAME_PRIVATE_KEY=...
# Then configure Agent0: babylon agent agent0-config
# 5. Start development
bun run dev # ← Automatically starts web + game engine!Visit http://localhost:3000 - everything runs and generates content automatically!
Default Mode (Recommended):
bun run dev # ← Web + Game Engine (both automatically!)Runs web server plus the local cron simulator. Content is generated via cron endpoints every 60 seconds.
Web Only (UI/API only, no local cron simulator):
bun run dev:webUse if you're only working on frontend and don't need live cron-driven content.
Next.js Only (Run Next directly):
bun run dev:next-onlyUseful if you want to bypass Turbo and run the Next dev flow directly.
The application uses Server-Sent Events (SSE) for real-time updates (Vercel-compatible):
- Feed updates (new posts)
- Market price changes
- Breaking news
- Chat messages
For Production (Vercel): Optionally set up Redis for cross-instance broadcasting:
# Add to Vercel environment variables
UPSTASH_REDIS_REST_URL=https://your-redis-url.upstash.io
UPSTASH_REDIS_REST_TOKEN=your-token# Start dev server
bun run dev
# Build & test
bun run build
bun run typecheck
bun run lint
bun run testVisit http://localhost:3000
This repo uses Ruler to centralize AI coding instructions in .ruler/**.
# Install deps
bun install
# Generate local agent config files (gitignored)
bun run ruler:apply- Edit rules in
.ruler/**only (generated files likeAGENTS.md,CLAUDE.md, MCP configs should not be edited manually). - For OpenAI Codex CLI to pick up the project config/MCP, set
CODEX_HOME="$(pwd)/.codex".
bun run test:unit # Unit tests
bun run test:integration # Integration tests
bun run test:e2e # E2E tests
bun run contracts:test # Smart contractsnpm i -g vercel
vercel deploy --prodRequired Environment Variables:
DATABASE_URL- PostgreSQL connectionNEXT_PUBLIC_PRIVY_APP_ID- AuthenticationOPENAI_API_KEY- AI agents
See .env.example for complete list.
- Smart Contracts:
bun run deploy:local|testnet - RL Training: See
packages/training/README.md - Game Control:
babylon game start|pause|status(via CLI)
Babylon is configured as a Farcaster Mini App with automatic authentication. Users opening your app from any Farcaster client (e.g., Warpcast) are logged in automatically!
- Privy account with Farcaster enabled
- Production deployment at
https://babylon.market
Visit https://dashboard.privy.io/ and configure:
Enable Farcaster:
- Navigate to: User management → Authentication → Socials
- Enable Farcaster
- Navigate to: Configuration → App settings → Domains
- Add these domains:
- ✅
https://babylon.market(your production domain) ⚠️ https://farcaster.xyz← REQUIRED for Mini Apps!- ✅
http://localhost:3000(for development)
- ✅
Why
https://farcaster.xyz? Required for iframe-in-iframe support that Farcaster Mini Apps use.
Set Callback URL:
- Add:
https://babylon.market/api/auth/farcaster/callback
Ensure these are set in production:
NEXT_PUBLIC_PRIVY_APP_ID=your_privy_app_id
PRIVY_APP_SECRET=your_privy_app_secretvercel --prodCreate a cast in a Farcaster client (e.g., Warpcast):
Check out Babylon! 🏛️
https://babylon.market
Click to launch → Users are automatically logged in! ✨
- Mini App SDK detects Farcaster context
- Auto-login triggers via Privy +
@farcaster/miniapp-sdk - User approves once
- Instant authentication - no forms or passwords!
import { useFarcasterMiniApp } from '@/components/providers/FarcasterFrameProvider'
function MyComponent() {
const { isMiniApp, fid, username } = useFarcasterMiniApp()
if (isMiniApp) {
return <div>Welcome from Farcaster, {username}!</div>
}
return <div>Welcome to Babylon!</div>
}- Farcaster Mini Apps: https://miniapps.farcaster.xyz/
- Privy Recipe: https://docs.privy.io/recipes/farcaster/mini-apps
- Mini Apps SDK: https://github.com/farcaster/miniapp-sdk