From bbc5e4a07aa88c015333a4227fc44ddb7cac73d0 Mon Sep 17 00:00:00 2001
From: MrPiglr
Date: Sat, 10 Jan 2026 21:11:03 +0000
Subject: [PATCH] feat: add VRChat and RecRoom platform integrations
- Create VRChat integration docs with Udon C# examples
- Create RecRoom integration docs with Circuits visual scripting
- Add VRChat and RecRoom to homepage cross-platform claims
- Add routes for /docs/integrations/vrchat and /docs/integrations/recroom
- Update DocsIntegrations page with platform showcase cards
- Include authentication flows, code examples, and best practices
- Cover 30K+ VRChat users and 3M+ RecRoom MAU
Closes the gap in cross-platform social VR support
---
client/App.tsx | 10 +
client/pages/Index.tsx | 4 +-
client/pages/docs/DocsIntegrations.tsx | 90 ++++
client/pages/docs/integrations/RecRoom.tsx | 467 +++++++++++++++++++++
client/pages/docs/integrations/VRChat.tsx | 400 ++++++++++++++++++
5 files changed, 969 insertions(+), 2 deletions(-)
create mode 100644 client/pages/docs/integrations/RecRoom.tsx
create mode 100644 client/pages/docs/integrations/VRChat.tsx
diff --git a/client/App.tsx b/client/App.tsx
index 3bdde8fc..86c4a55c 100644
--- a/client/App.tsx
+++ b/client/App.tsx
@@ -44,6 +44,8 @@ import DocsApiReference from "./pages/docs/DocsApiReference";
import DocsCli from "./pages/docs/DocsCli";
import DocsExamples from "./pages/docs/DocsExamples";
import DocsIntegrations from "./pages/docs/DocsIntegrations";
+import VRChatIntegration from "./pages/docs/integrations/VRChat";
+import RecRoomIntegration from "./pages/docs/integrations/RecRoom";
import DocsCurriculum from "./pages/docs/DocsCurriculum";
import DocsCurriculumEthos from "./pages/docs/DocsCurriculumEthos";
import EthosGuild from "./pages/community/EthosGuild";
@@ -616,6 +618,14 @@ const App = () => (
path="integrations"
element={}
/>
+ }
+ />
+ }
+ />
} />
} />
diff --git a/client/pages/Index.tsx b/client/pages/Index.tsx
index 264c0ffd..7dcbb378 100644
--- a/client/pages/Index.tsx
+++ b/client/pages/Index.tsx
@@ -85,7 +85,7 @@ const features = [
{
icon: Layers,
title: "Cross-Platform Integration Layer",
- description: "One unified API to build across Roblox, Minecraft, Meta Horizon, Fortnite, Zepeto, and more—no more managing separate platform SDKs or gated gardens",
+ description: "One unified API to build across Roblox, VRChat, RecRoom, Minecraft, Meta Horizon, Fortnite, and Zepeto—no more managing separate platform SDKs or gated gardens",
},
{
icon: Code2,
@@ -110,7 +110,7 @@ const features = [
{
icon: Rocket,
title: "Ship Everywhere, Fast",
- description: "150+ cross-platform code examples, pre-built templates, OAuth integration, Supabase backend, and one-command deployment to every metaverse",
+ description: "150+ cross-platform code examples, pre-built templates for VRChat, RecRoom, Roblox, and more—OAuth integration, Supabase backend, and one-command deployment to every metaverse",
},
];
diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx
index f31fa6fc..2171bbcc 100644
--- a/client/pages/docs/DocsIntegrations.tsx
+++ b/client/pages/docs/DocsIntegrations.tsx
@@ -28,6 +28,9 @@ import {
Palette,
AlertTriangle,
FileText,
+ Headset,
+ Gamepad2,
+ Boxes,
} from "lucide-react";
const connectorFields = [
@@ -107,6 +110,93 @@ export default function DocsIntegrations() {
+ {/* Platform Integrations Showcase */}
+
+
diff --git a/client/pages/docs/integrations/RecRoom.tsx b/client/pages/docs/integrations/RecRoom.tsx
new file mode 100644
index 00000000..3439d6c3
--- /dev/null
+++ b/client/pages/docs/integrations/RecRoom.tsx
@@ -0,0 +1,467 @@
+import { Badge } from "@/components/ui/badge";
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
+import { Button } from "@/components/ui/button";
+import { Gamepad2, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react";
+import CodeBlock from "@/components/dev-platform/CodeBlock";
+
+export default function RecRoomIntegration() {
+ return (
+
+
+
+
+ RecRoom Integration
+
+
+ Build RecRoom Experiences with AeThex
+
+
+ Create cross-platform social games for RecRoom's 3M+ monthly active users. Use AeThex's unified API
+ with RecRoom Circuits for visual scripting, data persistence, and multi-platform deployment.
+
+
+
+ {/* Quick Stats */}
+
+
+
+ 3M+
+ Monthly Active Users
+
+
+
+
+ 12M+
+ Created Rooms
+
+
+
+
+ VR + Mobile
+ Cross-Platform
+
+
+
+
+ {/* Features */}
+
+ What You Can Build
+
+
+
+
+
+ Persistent Game State
+
+
+
+ Save player inventory, room configurations, and game progress that persists across VR and mobile sessions
+
+
+
+
+
+
+
+ Unified Leaderboards
+
+
+
+ Track scores across RecRoom, Roblox, and web platforms with AeThex's cross-platform leaderboard API
+
+
+
+
+
+
+
+ Circuit Automation
+
+
+
+ Connect RecRoom Circuits to AeThex webhooks for real-time events, triggers, and automated game logic
+
+
+
+
+
+
+
+ Social Features
+
+
+
+ Link RecRoom profiles to AeThex Passport for friend lists, parties, and social features across platforms
+
+
+
+
+
+ {/* Quick Start */}
+
+
+
+ Quick Start Guide
+
+
+
+
+ 1. Install AeThex Circuits Plugin
+ Add AeThex API chips to your RecRoom Circuits palette
+
+
+
+ In RecRoom's Maker Pen, search for AeThex in the
+ Circuits V2 palette to find pre-built API chips.
+
+
+
Available Chips:
+
+ - •
AeThex API Call - Make HTTP requests to AeThex endpoints
+ - •
AeThex Auth - Authenticate RecRoom players
+ - •
AeThex Save Data - Persist player data
+ - •
AeThex Leaderboard - Fetch/update leaderboard scores
+
+
+
+
+
+
+
+ 2. Configure API Credentials
+ Get your API key from the AeThex Developer Dashboard
+
+
+
+ -
+ 1.
+ Visit AeThex Developer Dashboard
+
+ -
+ 2.
+ Create new API key with
recroom:read and recroom:write scopes
+
+ -
+ 3.
+ Copy API key to your RecRoom room's configuration chip
+
+
+
+
+
+
+ Security: Never display your API key in-room. Use the AeThex Config chip which stores credentials securely.
+
+
+
+
+
+
+
+ 3. Build Your First Circuit
+ Create a persistent leaderboard that syncs across platforms
+
+
+
+ Connect the following chips in RecRoom Circuits V2:
+
+
+
+
+
Button
+
→
+
AeThex Auth
+
+
+
AeThex Auth
+
→
+
Player ID
+
+
+
Player ID
+
→
+
Get Score
+
+
+
Get Score
+
→
+
Text Screen
+
+
+
+
+ This circuit fetches a player's score from AeThex when they press a button, displaying it on a text screen.
+ Scores are shared across RecRoom, Roblox, VRChat, and web platforms.
+
+
+
+
+
+ {/* Code Examples */}
+
+
+
+ API Integration Examples
+
+
+
+
+ Save Player Progress
+ Persist inventory and game state across sessions
+
+
+ {
+ const { playerId, inventory, level, checkpoint } = req.body;
+
+ // Save to AeThex backend
+ await aethex.users.update(playerId, {
+ recroom_inventory: inventory,
+ recroom_level: level,
+ recroom_checkpoint: checkpoint,
+ last_played_recroom: new Date().toISOString()
+ });
+
+ res.json({ success: true, saved_at: new Date() });
+});
+
+// Load player progress when they join
+app.get('/api/recroom/load-progress/:playerId', async (req, res) => {
+ const { playerId } = req.params;
+
+ const userData = await aethex.users.get(playerId);
+
+ res.json({
+ inventory: userData.recroom_inventory || [],
+ level: userData.recroom_level || 1,
+ checkpoint: userData.recroom_checkpoint || 'start'
+ });
+});`}
+ language="javascript"
+ showLineNumbers={true}
+ />
+
+
+
+
+
+ Cross-Platform Leaderboard
+ Update scores that sync across RecRoom, Roblox, and web
+
+
+ entry.userId === playerId) + 1,
+ topPlayers: leaderboard
+ });
+
+ } catch (error) {
+ res.status(500).json({ error: error.message });
+ }
+}`}
+ language="typescript"
+ showLineNumbers={true}
+ />
+
+
+
+
+ {/* Authentication Flow */}
+
+ Player Authentication
+
+ Link RecRoom players to AeThex Passport for cross-platform identity.
+
+
+
+
+ 3-Step Auth Flow
+
+
+
+
+
1
+
+
Player Enters Room
+
Use RecRoom Circuits to detect player join event
+
+
+
+
+
2
+
+
Generate Auth Code
+
+ AeThex API Call chip requests 6-digit code, displays it on a text board in-room
+
+
+ POST /api/auth/generate-code
+ → Returns: {`{ code: "ABC123", expires: "2026-01-10T21:00:00Z" }`}
+
+
+
+
+
+
3
+
+
Player Links Account
+
+ Player visits aethex.dev/link, enters code,
+ RecRoom receives webhook with Passport ID
+
+
+
+
+
+
+
+
+ {/* Best Practices */}
+
+
+
+ Best Practices & Limitations
+
+
+
+
+
+ RecRoom Circuits Limitations
+
+
+ • No native HTTP chips: Use AeThex middleware webhooks instead of direct API calls
+ • Response delays: Webhook roundtrips take 1-3 seconds, design UX accordingly
+ • Circuit complexity: Max 200 chips per room, optimize with cloud functions
+ • Mobile performance: Keep API payloads under 50KB for mobile players
+
+
+
+
+
+ Performance Optimization
+
+
+ • Cache results: Store API responses in room variables for 5-10 minutes
+ • Batch operations: Group multiple player updates into single API call
+ • Lazy loading: Only fetch data when players interact with features
+ • Offline mode: Implement fallback gameplay when webhooks fail
+
+
+
+
+
+ {/* Resources */}
+
+
+
+ Resources & Examples
+
+
+
+
+
+ {/* Next Steps */}
+
+
+ Ready to Build?
+
+ Start building cross-platform social games with AeThex. Deploy to RecRoom, VRChat,
+ Roblox, and web simultaneously with one unified API.
+
+
+
+
+
+ );
+}
diff --git a/client/pages/docs/integrations/VRChat.tsx b/client/pages/docs/integrations/VRChat.tsx
new file mode 100644
index 00000000..73e60d30
--- /dev/null
+++ b/client/pages/docs/integrations/VRChat.tsx
@@ -0,0 +1,400 @@
+import { Badge } from "@/components/ui/badge";
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
+import { Button } from "@/components/ui/button";
+import { Headset, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react";
+import CodeBlock from "@/components/dev-platform/CodeBlock";
+
+export default function VRChatIntegration() {
+ return (
+
+
+
+
+ VRChat Integration
+
+
+ Build VRChat Worlds with AeThex
+
+
+ Deploy interactive VR experiences to VRChat's 30K+ concurrent user platform using AeThex's unified API.
+ Leverage Udon scripting integration, cross-platform authentication, and real-time data sync.
+
+
+
+ {/* Quick Stats */}
+
+
+
+ 30K+
+ Concurrent Users
+
+
+
+
+ 250K+
+ Published Worlds
+
+
+
+
+ C#
+ Udon Programming
+
+
+
+
+ {/* Features */}
+
+ What You Can Build
+
+
+
+
+
+ Persistent World Data
+
+
+
+ Store player progress, leaderboards, and world state in AeThex backend with automatic sync across sessions
+
+
+
+
+
+
+
+ Cross-Platform Auth
+
+
+
+ Link VRChat users to AeThex Passport for unified identity across Roblox, Fortnite, and web platforms
+
+
+
+
+
+
+
+ Real-Time Events
+
+
+
+ Trigger world events based on API data - sync game state, achievements, or live leaderboards in real-time
+
+
+
+
+
+
+
+ Asset Pipeline
+
+
+
+ Upload and manage VRChat assets through AeThex API, with automatic versioning and CDN distribution
+
+
+
+
+
+ {/* Quick Start */}
+
+
+
+ Quick Start Guide
+
+
+
+
+ 1. Install AeThex Unity SDK
+ Add the AeThex package to your VRChat Unity project
+
+
+
+
+
+
+
+
+ 2. Configure API Credentials
+ Get your API key from the AeThex Developer Dashboard
+
+
+
+
+
+
+
+
+ 3. Create Your First Udon Script
+ Build a persistent leaderboard that syncs across VRChat sessions
+
+
+ ().GetClient();
+ }
+
+ public override void OnPlayerJoined(VRCPlayerApi player)
+ {
+ // Fetch player's AeThex profile
+ string playerId = player.displayName;
+
+ aethexClient.GetUserProfile(playerId).Then(profile =>
+ {
+ Debug.Log($"Player {profile.username} joined with score: {profile.score}");
+ UpdateLeaderboard(profile);
+ });
+ }
+
+ public void OnPlayerScored(VRCPlayerApi player, int points)
+ {
+ // Update score in AeThex backend
+ aethexClient.UpdateUserScore(player.displayName, points).Then(() =>
+ {
+ Debug.Log($"Score updated: +{points} points");
+ });
+ }
+
+ private void UpdateLeaderboard(UserProfile profile)
+ {
+ // Update VRChat UI with leaderboard data
+ // This syncs across all players in the world
+ }
+}`}
+ language="csharp"
+ showLineNumbers={true}
+ />
+
+
+
+
+ {/* Authentication Flow */}
+
+ Cross-Platform Authentication
+
+ Link VRChat players to their AeThex Passport for unified identity across all platforms.
+
+
+
+
+ Authentication Flow
+
+
+
+ -
+ 1.
+ Player joins VRChat world and interacts with authentication panel
+
+ -
+ 2.
+ World displays unique 6-digit code from AeThex API
+
+ -
+ 3.
+ Player visits
aethex.dev/link and enters code
+
+ -
+ 4.
+ VRChat world receives webhook with linked Passport data
+
+ -
+ 5.
+ Player's VRChat profile now syncs with Roblox, Fortnite, web accounts
+
+
+
+
+ {
+ // Display 6-digit code to player in-world
+ authCodeText.text = $"Code: {response.code}";
+ Debug.Log($"Player should visit: aethex.dev/link?code={response.code}");
+
+ // Poll for authentication completion
+ StartCoroutine(PollAuthStatus(response.code));
+ });
+}
+
+private IEnumerator PollAuthStatus(string code)
+{
+ while (true)
+ {
+ yield return new WaitForSeconds(2f);
+
+ var status = await aethexClient.CheckAuthStatus(code);
+ if (status.authenticated)
+ {
+ Debug.Log($"Player linked! Passport ID: {status.passportId}");
+ OnPlayerAuthenticated(status.passportId);
+ break;
+ }
+ }
+}`}
+ language="csharp"
+ showLineNumbers={true}
+ />
+
+
+
+
+ {/* Best Practices */}
+
+
+
+ Best Practices & Limitations
+
+
+
+
+
+ VRChat Limitations
+
+
+ • No direct HTTP requests: Use AeThex SDK which handles async via Unity coroutines
+ • Udon C# restrictions: No threading, limited async/await support
+ • Rate limits: Max 100 API calls per world per minute
+ • Data size: Keep API responses under 100KB for optimal performance
+
+
+
+
+
+ Performance Tips
+
+
+ • Cache data: Store frequently accessed data locally, refresh every 5 minutes
+ • Batch requests: Use bulk endpoints to fetch multiple players at once
+ • Lazy load: Only fetch data when players interact with features
+ • Fallback mode: Implement offline mode for when API is unavailable
+
+
+
+
+
+ {/* Resources */}
+
+
+
+ Resources & Examples
+
+
+
+
+
+ {/* Next Steps */}
+
+
+ Ready to Build?
+
+ Start building cross-platform VR experiences with AeThex. Deploy to VRChat, RecRoom,
+ and web simultaneously with one unified API.
+
+
+
+
+
+ );
+}