Explicit consent is required before the model can control your device. Nothing happens without it.
Allowed functions
Vibrate
Oscillate
Maximum intensity: 70%
Maximum continuous duration
Behavior
Adaptive behavior
Scene sync
Motion-responsive
Consent is explicit and revocable at any time via the safety bar.
—OFFLINE👁 0 watching
MODEL DEVICE OFFLINE
OFFLINESTANDARDMEDIA OFFLINE
NO LIVE BROADCAST
Media placeholder — the same tip/device stack drives Standard and VR180 streams. Real video arrives via a future media provider (LiveKit planned).
VR180
Current Effect
Idle
Interactive Tips
Tier
Effect
Sync
No interactive tip menu available.
Live Room Chat
👁PUBLIC CHAT — Everyone currently in this live room can see messages posted here.
Room: —0/500
Your Interactive Device
Connected Devices
LOVENSE
Pair via the Lovense Remote app. Pairing connects your device — it does not enable control.
Open the Lovense Remote app
Pair your toy in the app
Return here
Scan the QR code
Waiting for Lovense Remote…
Lovense device● CONNECTED
Battery—
CONNECTION: READYCONSENT: OFF
Your device will respond only to your own eligible interactions.
No device connected.
Demo uses the Gush 2 Motion simulator. Live Sync is OFF until you enable it.
Gush 2 Motion Simulator● CONNECTED
Battery—
Live Sync
Max intensity: 80%
Send Tokens
Balance: 0 tokens
My Interactive Device (Gush)
SIMULATED
StateDISCONNECTED
Live Sync
Max intensity: 80%
Capabilities—
This panel controls only YOUR device. Simulator state is visually unmistakable (SIMULATED badge); hardware would show a HARDWARE badge.
Stream Access (Viewer Token)
Media placeholder — the token joins the live broadcast room once a real media provider (LiveKit) is configured. Mock tokens are clearly labeled and carry no secret material.
MODEL COMMAND CENTEROFFLINE00:00:00
Go Live
Display name
STANDARDClassic live room
VR180Immersive format — same tip/device stack
Camera & Microphone
Camera
Microphone
Local preview is muted and never leaves this browser until GO LIVE publishes it. No camera/mic? The broadcast still works — media shows MEDIA OFFLINE until a device is available.
OFFLINESTANDARD
LIVE CAMERA PREVIEW
Camera placeholder — media provider abstraction (LiveKit planned). Format is a label; tips and devices behave identically.
MEDIA OFFLINE
My Device
Connected Devices
LOVENSE
Pair via the Lovense Remote app. Pairing connects your device — it does not enable tip control.
Open the Lovense Remote app
Pair your toy in the app
Return here
Scan the QR code
Waiting for Lovense Remote…
Lovense device● CONNECTED
Battery—
CONNECTION: READYCONSENT: OFF
Pairing does not enable tip control.
Lovense device (sim)
Lush 4● CONNECTED
Battery—
Tip Activation
Max intensity: 80%
Idle
Interactive Devices
No interactive devices connected yet.
Viewers
0
Tips
0
Tokens
0
Earnings (net)
$0.00
Live Tip Feed
Tips appear here in real time.
Live Room Chat (Model View)
👁PUBLIC CHAT — Everyone currently in this live room can see messages posted here.
Room: —0/500
My Interactive Tip Menu
Tokens
Label
Effect
Strength %
Secs
Platform bounds: strength ≤ 85%, duration ≤ 15s.
Earnings Summary
Gross
$0.00
Net
$0.00
Tips
0
Avg latency
—
Tip Menu Performance
Tier
Label
Tips
Gross
No earnings recorded yet.
Live Command Center
SIMULATED
Media stateOFFLINE
Format
Elapsed00:00:00
Viewers (current / peak)0 / 0
Tips / tokens0 / 0
Est. gross / net (live)$0.00 / $0.00
Stream Health
Bitrate
—
Dropped
—
Latency
—
Reconnects
—
Media Controls
Camera
Microphone
END LIVE ends the video media session only — it is independent of device state and never touches device consent. Media reconnects likewise never affect device consent (separate stores). Provider: mock (LiveKit activates when LIVEKIT_* env is set; keys never leave the server).
Wallet
Pending
$0.00
Available
$0.00
Reserved
$0.00
In payout
$0.00
Paid
$0.00
Earnings Breakdown
Gross$0.00
Platform fee$0.00
Processor fee$0.00
Tax withholding$0.00
Refunds$0.00
Chargebacks$0.00
Adjustments$0.00
Net$0.00
Source: —
Verification
VERIFYMY · MOCK
Provider statusnot started
Reused existing—
Compliance gate—
Reuse-first: an existing valid VerifyMy verification is reused (audited) instead of starting a new session. Going live also requires the full EROS compliance checklist — provider verification alone is never sufficient.
Private Requests
POLLING
Availability● UNAVAILABLE
Private-request endpoints are not available yet — the queue activates automatically once the backend merges.
No pending private requests.
PRIVATE SESSIONNO SESSIONSTANDARD LIVE00:00
Viewer—
Stream health—
Device status—
Private Chat
Session Tips
Private Messages
POLLING
Private-messaging endpoints are not available yet — conversations activate automatically once the backend merges.
No private conversations.
Select a conversation.
Private Settings
LOCAL
Accept private requests
Cooldown between sessions (seconds)
Availability● UNAVAILABLE
Settings endpoints are not available yet — changes are kept locally until the backend merges.
Sessions use an Authorization: Bearer token stored in this browser only (localStorage 'eros.session'). Legacy demo identity (x-eros-user) keeps working for all pre-existing features.
Create Account
Email
Password
Turnstile
Turnstile is a placeholder: TURNSTILE_MODE=mock accepts mock-* tokens; a real Cloudflare Turnstile widget is provisioned per docs/CLOUDFLARE_ARCHITECTURE.md (PENDING).
🔒 PRIVATE SESSION
PRIVATE WITH —
00:00:00
NO PRIVATE SESSION
You are not in a private session. Request one from a model's live room, or open an accepted session.
Per-function limits apply to every interaction on this device.
Disconnect is fail-closed: consent is withdrawn and the device stops immediately.
Edit Tip Menu
Interactive tip rules (normalized % values). Function rows are shown for each device's supported functions only.
🔒PRIVATE — Model — Private conversationREAD-ONLY
This conversation is visible in the product only to you and the model. Authorized EROS moderation/compliance personnel may access content when required for safety, support, legal, or policy enforcement.
PRIVATE REQUEST SENT
Waiting for model…
🔒 Request Private Session
Send a private request to the model. The model can accept or decline.
Private sessions are never end-to-end encrypted; see the privacy note in the private panel for exactly who can access content.