Skip to main content

Frequently Asked Questions

Find answers to common questions about DualMind Lab’s AI model comparison platform.

Getting Started

DualMind Lab is an AI model comparison platform that lets you compare AI models side-by-side in “Arena Battle” mode or chat with individual models. It supports threaded conversations, voting on model responses, and public sharing of conversations.
No — you can browse public shared threads without an account. However, to create threads, vote on comparisons, or access the API, you need to sign up via Supabase Auth.
DualMind supports models from Groq (Llama 3.3, Mixtral) and Bytez. The admin can add new models dynamically through the admin panel.
Yes — the platform is currently free for end users. API rate limits apply based on your authentication tier.

API & Authentication

All API requests (except public thread viewing) require a Bearer token in the Authorization header:
Authorization: Bearer <jwt_token>
Obtain the JWT token from Supabase Auth after user login.
The production API base URL is:
https://api.dualmindlab.tech
All endpoints are prefixed with /api/ (e.g., /api/arena/chat).
DualMind uses JWT authentication via Supabase, not API keys. Users authenticate through the frontend login flow, and the Supabase client provides the JWT token for API calls.
Yes — rate limits vary by endpoint and authentication status:
  • Authenticated users: Higher limits
  • Public endpoints: Stricter limits
  • Streaming endpoints: Connection-based limits

Model Comparisons

Arena Battle mode compares two AI models side-by-side with the same prompt. Both models respond simultaneously, and you can vote on which response is better. This creates a leaderboard of model performance.
Three selection strategies are available:
  • Random: Two random models from the active pool
  • Topper: Top-performing model vs random challenger
  • Manual: You specify both models explicitly
If one model fails during a comparison, you’ll receive a partial result with only the successful model’s response. Both models failing returns an error.
Rankings use win rate: (wins / total_appearances) * 100. The model_stats view aggregates votes from the model_votes table.

Threads & Sharing

A thread is a persistent conversation that stores messages, model responses, and metadata. Threads can be private (default) or shared publicly.
Update the thread’s visibility to public:
PATCH /api/threads/{threadId}/visibility
{"visibility": "public"}
Anyone with the thread ID can then view it at /share/{threadId}.
Yes — authenticated users can delete their own threads:
DELETE /api/threads/{threadId}
Admin users can delete any thread.
Yes — messages are ordered by created_at timestamp. Each message includes metadata about which model generated it.

Streaming & Real-time

Yes — use the SSE streaming endpoint:
GET /api/arena/stream?prompt=Hello&model=llama-3.3-70b-versatile
The stream delivers tokens as they’re generated by the AI model.
Server-Sent Events (SSE) format with JSON data:
data: {"token": "Hello", "model": "llama-3.3-70b-versatile"}

Deployment & Self-Hosting

Yes — DualMind is closed source but enterprise licenses include self-hosting options. You’ll need:
  • .NET 8 runtime for backend
  • PostgreSQL database (Supabase recommended)
  • Static file hosting for frontend
  • Cloudflare Workers or similar for admin panel
Contact us for enterprise licensing and self-hosting setup.
ComponentRecommended PlatformAlternative
BackendAzure App ServiceAWS, GCP, Docker
FrontendCloudflare WorkersVercel, Netlify
DatabaseSupabaseSelf-hosted PostgreSQL
AdminCloudflare WorkersAny static host
  1. Add the provider to the providers table
  2. Add the model to the ai_models table with status='active'
  3. Add API keys to provider_api_keys
The model will immediately enter the selection pool.

Troubleshooting

Common causes:
  • Missing or expired JWT token
  • Incorrect Authorization: Bearer <token> format
  • Token not obtained from Supabase Auth
Verify the token is valid by checking the Supabase session.
Check:
  • SSE client implementation (EventSource in JS)
  • Query parameters are URL-encoded
  • Model name is correct and active
  • No ad-blockers interfering with SSE
Verify:
  • SUPABASE_URL is correct
  • SUPABASE_SERVICE_ROLE_KEY has service role permissions
  • Database is accessible from backend IP
  • Required tables exist in public schema

Admin & Management

The admin panel is a separate Cloudflare Workers deployment. Access it at your configured admin URL (e.g., https://admin.dualmindlab.tech).
Admin users have full CRUD access to:
  • Users and user roles
  • AI models (add, update, activate/deactivate)
  • Thread messages (view, delete)
  • Comparisons and votes (analytics)
  • Providers and API keys
Update the user’s role via the admin API:
PUT /api/admin/users/{userId}/role
{"role": "admin"}

Still Need Help?

GitHub Issues

Report bugs or request features

Live Demo

Try the platform

API Reference

Explore API endpoints

Documentation

Browse all docs