โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ โฆ A I S T U D I O โฆ Bharat ยท Sarvam AI โ
โ โ
โ Think. Talk. Connect. โ
โ โ
โ Multi-model Council ยท Agent Chat ยท Voice AI โ
โ WhatsApp Integration ยท Video Gen ยท 40+ Personas โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฅ Free hosted AI โ no API key needed. Sign in with Google and instantly access Sarvam AI (India's own LLM) and Hosted Ollama โ free for all users. No credit card, no setup.
All changes shipped since the last README revision.
New VideoGenPage.jsx โ full lip-sync video generation powered by SkyReels V3:
- Upload a portrait image + audio file โ get a lip-synced HD 720p video in 1โ3 minutes
- Audio-driven: SkyReels animates the face to match the speech in your audio clip
- Upload any local audio file (WAV/MP3) โ the server converts it to a public URL automatically before sending to SkyReels (no base64 limitations)
- Free with your account โ server API key used by default; bring your own SkyReels key for your own quota
- Full generation status flow: Uploading audio โ Submitting โ Generating โ Complete
- Video preview panel with inline player and one-click download
- Past videos accessible via a slide-over History panel
- Cost displayed per generation (sourced from SkyReels usage data)
The app has evolved from a single-screen "AI Council" tool into a full AI Studio platform with persistent navigation and six distinct pages.
- App renamed from AI Council โ AI Studio ยท Bharat ยท Sarvam AI
- New
Shell.jsxโ desktop sidebar (220px) + mobile top header + mobile bottom tab bar in one layout wrapper - New
design.jsโ shared CSS keyframes,NAV_ITEMSconstants,ghostBtn()andalertBox()utility helpers used across all pages SetupScreen.jsxrefactored into a thin router that delegates rendering to page-level components
| Page | Icon | Auth Required |
|---|---|---|
| Home | โ | No |
| Council | โ | Optional (managed providers need sign-in) |
| Agent Chat | ๐ค | Yes โ shows inline sign-in wall |
| Voice AI | ๐ | Yes โ triggers login modal on launch |
| ๐ฌ | Yes โ triggers login modal on launch | |
| Video Gen | ๐ฌ | Yes โ shows inline sign-in wall |
Replaces the old empty default view:
- Animated headline: Think. Talk. Connect. with multi-color gradient shimmer
- Eyebrow badge: Made in Bharat ยท Powered by Sarvam AI ยท ๐ฅ FREE
- Floating ambient background orbs (animated radial gradients)
- 5-column feature card grid (Council, Agent Chat, Voice AI, WhatsApp, Video Gen) โ each card navigates to its page
- Stats strip: 40+ Personas ยท 10+ Languages ยท 6+ Providers ยท Free with login
Council builder is now src/components/setup/pages/CouncilPage.jsx:
- Stage I / II / III summary cards shown at the top of the page
- Two-column layout: members on the left, templates on the right
- Category filter pills for templates (Think Tank, AI Agents, Corporate, Professional, Unfiltered)
- Inline member editing โ click โ to expand an edit form in-place, no panel required
- Validation shows a list of incomplete members with inline Edit โ shortcut buttons
- Templates auto-select
managed_sarvamwhen the user is signed in,ollamawhen not
src/components/setup/pages/AgentPage.jsx:
- Full persona grid with category filter pills at the top
- Shows an inline sign-in wall (not a redirect) when logged out โ feature preview chips visible
- Custom personas surface in a "Mine" category automatically
- โจ Custom Persona action button in the page header
- Persona cards show name, tagline, badge, and a Chat โ CTA
VoicePage (pages/VoicePage.jsx):
- Hero section with a language pill strip (10+ Indic scripts rendered natively)
- "Why it's different" feature grid: cultural context, real-time streaming, code-switching, all personas by voice
- Auth-gated launch button โ opens
SarvamVoiceChatmodal after sign-in
WhatsAppPage (pages/WhatsAppPage.jsx):
- "How it works" 4-step numbered flow with color-accent step markers
- Use case grid: Morning Clarity, Deal Coach, Evening Debrief, Startup Advisor
- Auth-gated launch button โ opens
WhatsAppGatewaymodal after sign-in
src/components/setup/PageHeader.jsx used by all inner pages:
- Color-matched icon box (background + border tinted to page accent color)
clamp()-scaled title in Syne font- Optional subtitle line
- Optional
extraprop โ renders action buttons right-aligned (responsive wraps on mobile)
- Added
dropUpboolean prop toUserAvatar - Desktop sidebar passes
dropUpโ dropdown opens upward, left-anchored, expands into main content area (not clipped by sidebar) - Mobile header omits
dropUpโ dropdown opens downward, right-anchored, stays within viewport - Removed the brittle CSS hack (
[style*="position: absolute"]override) fromShell.jsx
Replaces the native <select> for persona selection in MemberForm:
- Grouped by category with color-coded section headers
- Category filter pills (All + each group)
- Full-text search across persona name and system prompt text
- Chair suggestion badge (
๐ CHAIR) shown inline on eligible personas - 2-line prompt preview per row
- Keyboard navigable (arrow keys, Enter, Escape)
Replaces <input list="datalist"> for model selection:
- Type to filter with live substring highlight of matching characters
- Arrow-key navigation through list, Enter to confirm or use typed value
- Quantization tag extracted from model name (
q4_K_Metc.) shown as a dim pill - Integrated โป Fetch button โ fires
onFetchClickprop to live-fetch models from the provider API - Clear (โ) and chevron (โฒ/โผ) controls in the input row
- Descriptive empty state: "No match โ press Enter to use
{typed}"
AgentScreen.jsx now exports AGENT_PERSONAS and AGENT_PERSONA_CATEGORIES. Major additions:
| Category | New Personas |
|---|---|
| Leadership | CEO, CFO, CTO, CMO, Startup Founder |
| Philosophy | Stoic, Existentialist, Buddhist, Socratic Tutor |
| India | Indian Founder, Sarvam Hindi, Sarvam Indic, Market Intelligence, Cultural Lens |
| AI Agents | Grok, Claude Ethics, Gemini Synthesizer, Devin Executor, Task Planner, Risk Monitor |
| Coaching | Life Coach, Therapist, Career Coach |
| Legal / Finance | Lawyer, CA, SEBI Advisor |
New ai-agents template category added to templates.js. Total templates: 18 (up from 13).
| Template | Members | Focus |
|---|---|---|
| ๐ฌ Research + Operator | Deep Researcher + Web Intelligence + Red Team + Operator ๐ | Research synthesis |
| โ๏ธ AI Model Debate | Grok + Claude Ethics + Gemini + Canvas + Raw Arbiter ๐ | Model comparison |
| โก Agentic Task Force | Task Planner + Full-Stack Builder + Risk Monitor + Orchestrator ๐ | Execution pipelines |
| ๐ Skill Pipeline | Skill Composer + Code Architect + Systems Thinker + Executor ๐ | Modular AI workflows |
| ๐ฆ Socratic + Red Team | Socratic Tutor + Red Team + Ethics Auditor + Systems Thinker ๐ | Critical reasoning |
| ๐ฎ๐ณ India Intelligence Council | Market Intelligence + Cultural Lens + Analyst + Pragmatist ๐ | India-specific strategy |
| ๐ก๏ธ Tech Ethics Review | Code Architect + Ethics Auditor + Risk Monitor + Red Team + Systems Thinker ๐ | Responsible tech |
New component SarvamVoiceChat.jsx โ full voice chat experience:
- Persona and language selection before starting
- Real-time voice-to-text via Sarvam AI's speech API
- Streaming text response with voice playback
- Supports Hindi, Tamil, Bengali, and 10+ Indic languages
- Auth-gated โ only accessible to signed-in users
New component WhatsAppGateway.jsx โ WhatsApp linking flow:
- QR code generation for WhatsApp Web pairing
- Persona selection for the WhatsApp AI
- Connection status tracking
- Auth-gated โ only accessible to signed-in users
New component MCPPanel.jsx:
- Configure Model Context Protocol server endpoints
- Tool discovery and selection
- Available as an advanced option in Council and Agent modes
export function getAvailableProviders(isLoggedIn) {
return Object.fromEntries(
Object.entries(PROVIDERS).filter(([, p]) => isLoggedIn || !p.requiresAuth),
);
}Managed providers (managed_sarvam, managed_ollama) are filtered out of the provider picker when the user is not signed in. All components use this instead of PROVIDERS directly.
Two distinct patterns are used depending on the feature:
- Soft gate (sign-in wall): AgentPage and VideoGenPage render an inline sign-in prompt instead of the full UI. The user stays on the page and can see what they would get.
- Hard gate (login modal): Voice and WhatsApp pages show their full marketing content freely, but calling
requireAuth()on the launch button triggersopenLogin()fromAuthGatecontext โ which opens the existing login modal overlay without a page change.
src/components/
โโโ setup/
โ โโโ Shell.jsx # NEW โ sidebar + mobile nav layout wrapper
โ โโโ PageHeader.jsx # NEW โ shared page header component
โ โโโ design.js # NEW โ shared CSS, NAV_ITEMS, helpers
โ โโโ pages/
โ โโโ HomePage.jsx # NEW โ landing page with hero + feature cards
โ โโโ CouncilPage.jsx # NEW โ council builder (extracted from SetupScreen)
โ โโโ AgentPage.jsx # NEW โ agent chat browse page
โ โโโ VoicePage.jsx # NEW โ voice AI marketing + launch page
โ โโโ WhatsAppPage.jsx # NEW โ WhatsApp marketing + launch page
โ โโโ VideoGenPage.jsx # NEW โ SkyReels V3 avatar video generator
โโโ MCPPanel.jsx # NEW โ MCP server integration
โโโ SarvamVoiceChat.jsx # NEW โ voice chat modal
โโโ WhatsAppGateway.jsx # NEW โ WhatsApp connection modal
โโโ PersonaPicker.jsx # NEW โ searchable grouped persona dropdown
โโโ ModelPicker.jsx # NEW โ searchable model combobox
โโโ SetupScreen.jsx # REFACTORED โ now a thin 6-page router
Sarvam AI is an Indian large language model built for Bharat โ designed to understand Indian context, culture, and languages. It is fully integrated into AI Studio as a first-class hosted provider, available free to all signed-in users.
Why Sarvam AI?
- Built in India, by Indians, for Indian use cases
- Understands Indian cultural and business context natively
- Supports Indic language inputs and multilingual reasoning
- No API key required โ sign in with Google and use it instantly
- Available in Council mode, Agent Chat mode, and Voice AI mode
How to use it:
- Click Sign in with Google (top right or sidebar)
- Add a council member โ select Sarvam AI ๐ฎ๐ณ as the provider
- Model is pre-set to
sarvam-mโ no configuration needed - Run your query โ Sarvam AI deliberates alongside any other models you choose
Pair Sarvam AI with Hosted Ollama for a 100% free, zero-setup council โ no API keys anywhere.
Your Question
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Stage I โ First Opinions โ
โ All council members respond in โ
โ parallel (cloud) or queued (Ollama) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Stage II โ Peer Review โ
โ Each member reads anonymized โ
โ responses and critiques them โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Stage III โ Final Verdict โ
โ The Chairman synthesizes everything โ
โ into one authoritative answer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Follow-up (optional) โ
โ Ask another question โ council keeps โ
โ the full prior verdict as context โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Multi-provider โ Ollama, OpenAI, Groq, Anthropic, Google, Sarvam AI ๐ฎ๐ณ, or any OpenAI-compatible endpoint
- Mix local + cloud โ run DeepSeek-R1 locally alongside Claude, GPT-4o, or Sarvam AI
- 40+ built-in personas across Think Tank, Corporate, Startup, Consulting, Editorial, Medical, Legal, AI Agents, India, Philosophy, Coaching, and Unfiltered roles
- Raw Model persona โ no role-play, no framing: the model responds from its own knowledge and judgment
- Streaming responses โ watch all models think in real time, switch tabs mid-generation without losing data
- Think-block stripping โ
<think>blocks from reasoning models (DeepSeek-R1, QwQ) are hidden; only the final answer is shown, with a live "๐ง Thinkingโฆ" indicator - Tabbed results UI โ Stage I / II / III tabs, switch freely while generation is in progress
- Session history โ all past queries stored locally, reviewable in a full modal with per-stage tabs
- Saved configs โ save provider + model + API key combos for quick reuse
- Mobile friendly โ responsive layout, no white flash, safe area insets, iOS zoom prevention
| Mode | Description | Auth |
|---|---|---|
| โ Council | 3-stage multi-model deliberation with Chairman verdict | Optional |
| ๐ค Agent Chat | 1-on-1 conversation with 40+ expert personas | Required |
| ๐ Voice AI | Speak in Hindi, Tamil, and 10+ Indian languages | Required |
| ๐ฌ WhatsApp | AI persona living inside WhatsApp | Required |
| ๐ฌ Video Gen | Lip-synced HD avatar videos from a portrait image + audio clip | Required |
Transform any portrait photo into a talking digital avatar. Upload a face image and an audio clip โ SkyReels V3 animates the face to lip-sync with the audio and renders a 720p HD video.
- Sign in with Google (required)
- Navigate to Video Gen in the sidebar
- Enter a prompt describing the scene (e.g. "The person speaks affectionately to the camera. Use a static shot.")
- Upload a portrait image (or paste a public image URL)
- Upload an audio file (WAV/MP3) or paste a public audio URL
- Click ๐ฌ Generate Video โ the server uploads your audio, submits the job, and polls for completion
- Your video appears in the preview panel โ watch it inline or download it
| Spec | Value |
|---|---|
| Model | SkyReels V3 Single Avatar |
| Resolution | HD 720p |
| Max duration | 200 seconds |
| Architecture | DiT + Multimodal |
| Sync type | Audio-driven lip-sync |
| Audio formats | WAV, MP3 (public URL or local upload) |
| Image input | URL or base64 (local upload) |
By default your generation uses the server's SkyReels key โ free with your account, no setup needed. To use your own quota, expand the ๐ API Key panel and paste your key from api.skycoding.ai. Your key is forwarded per-request and never stored.
Local audio files (uploaded from your device) are automatically saved to the server and served at a public URL before being submitted to SkyReels. SkyReels requires a publicly accessible HTTPS URL โ it cannot process base64 data URIs directly.
User uploads audio
โ
โผ
POST /api/videogen/upload-audio
Server saves file to disk โ returns public URL
โ
โผ
POST /api/videogen/submit
Submits {prompt, image, audio_url} to SkyReels API
โ
โผ
GET /api/videogen/:id/status (polls every 10s)
โ
โผ
GET /api/videogen/:id/result
Returns video URL + cost
| Variable | Default | Description |
|---|---|---|
SKYCODING_API_KEY |
โ | SkyReels API key (server default key) |
MEDIA_DIR |
/media/prijak/MyDrive/html/AiStudio |
Local path where audio files are saved |
MEDIA_BASE_URL |
backendurl/AiStudio |
Public base URL for saved audio files |
Sign in with your Google account to unlock cloud features and free hosted models. Uses Firebase Auth with popup โ redirect fallback โ works on all browsers including iOS Safari.
- Managed providers (Sarvam AI, Hosted Ollama) require sign-in
- Session persists across tabs and page reloads
- Anonymous users continue to work with local storage and self-hosted providers
When signed in, saved council configs sync to Firestore. API keys are encrypted with AES-GCM 256-bit (WebCrypto) before leaving your browser โ the server only ever stores ciphertext.
- Configs sync across devices automatically
- Each saved config card shows
โ cloud ยท ๐ encryptedbadge when active - Falls back to localStorage for anonymous sessions
| Provider | Icon | Notes |
|---|---|---|
| Sarvam AI | ๐ฎ๐ณ | India's own LLM (sarvam-m) โ built for Bharat |
| Hosted Ollama | ๐ฆ | Free open-source models โ mistral-nemo, deepseek-r1, llama3.1, and more |
No endpoint, no API key, no credit card. Just sign in.
Node.js/Express backend (server.js) with Firebase Admin auth verification, per-UID rate limiting (30 req/min default), streaming proxy, Firestore usage analytics, session logging, request ID tracing, and an admin stats endpoint.
Every inbound request is assigned a unique REQ-{timestamp}-{counter} ID logged alongside method, path, client IP, and token snippet โ making it easy to trace a generation end-to-end in Docker logs.
| Range | Label | Effect |
|---|---|---|
| 0โ35% | ๐ฏ Precise | Deterministic, factual, low variance |
| 35โ65% | Balanced | Default โ good for most questions |
| 65โ100% | ๐จ Creative | More varied, exploratory, unexpected |
After a verdict, ask a follow-up โ the council carries the full prior verdict as context. Each round is saved in followUpChain and shown in History.
Cancel at any point โ partial results are preserved, a red banner is shown, and follow-up is still available.
downloadMarkdown() builds a structured .md report. exportPDF() opens a print-ready styled browser window.
18 pre-built persona structures across Think Tank, AI Agents, Corporate, Professional, and Unfiltered categories โ one click to load.
Save and reload full council setups. API keys are always stripped from exports.
Configure a webhook URL in Settings. After every completed session, AI Studio POSTs the full session JSON. Works with Zapier, Make, n8n, Slack, Notion, and Pipedream.
| Layer | Choice |
|---|---|
| Framework | React 19 |
| Styling | Inline styles + CSS (no Tailwind, no CSS-in-JS lib) |
| Fonts | Syne + DM Sans (Google Fonts) |
| Auth | Firebase Authentication (Google Sign-In) |
| Database | Firestore (cloud config sync, usage analytics) |
| Encryption | WebCrypto AES-GCM 256 (client-side, before upload) |
| Local Storage | localStorage (sessions, configs for anonymous users) |
| Backend | Node.js + Express (managed providers, analytics) |
| Indic AI | Sarvam AI ๐ฎ๐ณ (sarvam-m) |
| Video AI | SkyReels V3 (skywork-ai/skyreels-v3/standard/single-avatar) |
| Build | Vite 6 |
| PWA | vite-plugin-pwa + custom Service Worker |
- Node.js 18+
- One of: Ollama locally, a cloud provider API key, or just a Google account to use free managed providers (Sarvam AI + Hosted Ollama)
git clone https://github.com/prijak/Ai-council.git
cd ai-council
npm install
npm run devOpen http://localhost:5173.
- Create a Firebase project at console.firebase.google.com
- Enable Authentication โ Google sign-in provider
- Enable Firestore database
- Copy your config into
.env:
VITE_FIREBASE_API_KEY=...
VITE_FIREBASE_AUTH_DOMAIN=...
VITE_FIREBASE_PROJECT_ID=...
VITE_FIREBASE_STORAGE_BUCKET=...
VITE_FIREBASE_MESSAGING_SENDER_ID=...
VITE_FIREBASE_APP_ID=...
VITE_FIREBASE_MEASUREMENT_ID=...
VITE_API_URL=https://your-backend-url.comWithout these, the app runs in local-only mode (no sign-in, no cloud sync, no managed providers).
PORT=8103 \
OLLAMA_BASE_URL=https://your-ollama.com \
SARVAM_API_KEY=sk-... \
SKYCODING_API_KEY=sk-... \
MANAGED_OLLAMA_MODELS=mistral-nemo:latest,deepseek-r1:latest,llama3.1:8b \
MEDIA_DIR=/path/to/your/public/html/folder \
MEDIA_BASE_URL=https://yourdomain.com/media \
ADMIN_UIDS=uid1,uid2 \
node server.jsRequires Firebase Admin credentials (GOOGLE_APPLICATION_CREDENTIALS or GCP ADC).
Backend environment variables:
| Variable | Default | Description |
|---|---|---|
PORT |
8103 |
Server port |
OLLAMA_BASE_URL |
backendurl |
Your Ollama instance |
SARVAM_API_KEY |
โ | Sarvam AI API key |
SKYCODING_API_KEY |
โ | SkyReels API key for Video Gen |
MANAGED_OLLAMA_MODELS |
โ | Comma-separated model list |
MEDIA_DIR |
/media/prijak/MyDrive/html/AiStudio |
Local path for audio file uploads |
MEDIA_BASE_URL |
backendurl |
Public URL prefix for uploaded files |
ADMIN_UIDS |
โ | Firebase UIDs with admin access |
ALLOWED_ORIGINS |
* |
CORS origins |
RATE_LIMIT_PER_MIN |
30 |
Max requests per UID/minute |
docker build -f ui_dockerfile -t ai-council .
docker run -p 8080:80 ai-councilOpen http://localhost:8080. The Docker image builds the React app and serves via nginx.
Backend Docker (with Video Gen volume mount):
docker run -d --name=aicouncilbackend --rm -p 8103:8103 \
-e PORT=8103 \
-e SKYCODING_API_KEY=sk-... \
-e MEDIA_DIR=/media/prijak/MyDrive/html/AiStudio \
-e MEDIA_BASE_URL=backendurl \
-v /media/prijak/MyDrive/html/AiStudio:/media/prijak/MyDrive/html/AiStudio \
-v /opt/ai-council/secrets/serviceAccountKey.json:/app/serviceAccountKey.json:ro \
aicouncilbackend:latestThe volume mount is required so the backend can write uploaded audio files to a directory served by your web server.
ai-council/
โโโ public/
โ โโโ logo.png
โ โโโ manifest.json # PWA manifest
โ โโโ sw.js # Service worker
โโโ src/
โ โโโ components/
โ โ โโโ atoms/index.jsx # Spin, Badge, Toggle, TemperatureSlider
โ โ โโโ setup/
โ โ โ โโโ Shell.jsx # NEW โ sidebar + mobile nav layout wrapper
โ โ โ โโโ PageHeader.jsx # NEW โ shared page header component
โ โ โ โโโ design.js # NEW โ shared CSS, NAV_ITEMS, helpers
โ โ โ โโโ pages/
โ โ โ โโโ HomePage.jsx # NEW โ landing page
โ โ โ โโโ CouncilPage.jsx # NEW โ council builder (extracted)
โ โ โ โโโ AgentPage.jsx # NEW โ agent chat page
โ โ โ โโโ VoicePage.jsx # NEW โ voice AI page
โ โ โ โโโ WhatsAppPage.jsx # NEW โ WhatsApp page
โ โ โ โโโ VideoGenPage.jsx # NEW โ SkyReels V3 avatar video generator
โ โ โโโ AgentScreen.jsx # Single-model agent chat (40+ personas)
โ โ โโโ AuthGate.jsx # Firebase auth wrapper + Google sign-in UI
โ โ โโโ DeliberationScreen.jsx # Main 3-stage pipeline orchestrator
โ โ โโโ HistoryModal.jsx # Past sessions browser
โ โ โโโ InstallPrompt.jsx # PWA install banner
โ โ โโโ ManagePanel.jsx # Add / edit / remove council members
โ โ โโโ MCPPanel.jsx # NEW โ MCP server integration panel
โ โ โโโ MemberCard.jsx # Member row + chairman toggle
โ โ โโโ MemberForm.jsx # Add/edit member form
โ โ โโโ ModelPicker.jsx # NEW โ searchable model combobox
โ โ โโโ PersonaCreator.jsx # Custom persona builder
โ โ โโโ PersonaPicker.jsx # NEW โ searchable grouped persona dropdown
โ โ โโโ ResultsView.jsx # Stage I / II / III tabs
โ โ โโโ SarvamVoiceChat.jsx # NEW โ voice chat modal
โ โ โโโ SavedConfig.jsx # Local + cloud config management
โ โ โโโ SettingsModal.jsx # Webhook config
โ โ โโโ SetupScreen.jsx # REFACTORED โ thin 6-page router
โ โ โโโ SystemPromptEditor.jsx # Inline prompt preview + editing
โ โ โโโ TemplateCard.jsx # Template grid card
โ โ โโโ WhatsAppGateway.jsx # NEW โ WhatsApp connection modal
โ โโโ constants/
โ โ โโโ personas.js # 40+ personas across groups
โ โ โโโ providers.js # All provider configs + getAvailableProviders()
โ โ โโโ templates.js # 18 council templates (incl. AI Agents category)
โ โโโ lib/
โ โ โโโ api.js # dispatchMember() โ all provider fetch logic
โ โ โโโ auth.js # Firebase auth, getIdToken, apiFetch, streaming proxy
โ โ โโโ cloudStorage.js # Firestore CRUD + AES-GCM encryption
โ โ โโโ export.js # downloadMarkdown(), exportPDF()
โ โ โโโ importExportConfig.js # parseCouncilJSON()
โ โ โโโ storage.js # localStorage helpers
โ โ โโโ utils.js # stripThinking(), uid(), sid()
โ โโโ App.jsx
โ โโโ index.css
โ โโโ main.jsx
โ โโโ styles.js
โโโ server.js # Express backend (managed providers + analytics)
โโโ firestore.rules
โโโ firebase.json
โโโ nginx.conf
โโโ ui_dockerfile
โโโ package.json
OLLAMA_ORIGINS="*" ollama serveRecommended models:
ollama pull deepseek-r1 # Reasoning โ great for The Analyst
ollama pull llama3.1 # General purpose
ollama pull mistral-nemo # Efficient โ good Chairman
ollama pull llama2-uncensored # Uncensored โ good Contrarian
ollama pull deepseek-v2 # Good PhilosopherRTX 2070 / 8GB VRAM tip: Stick to 7Bโ12B models with 4-bit quantization. Ollama queues requests sequentially โ expect 5โ15 min per full deliberation.
| Member | Provider | Model | Persona |
|---|---|---|---|
| The Analyst | Hosted Ollama | deepseek-r1:latest |
Analyst |
| The Contrarian | Hosted Ollama | mistral-nemo:latest |
Contrarian |
| The Visionary | Hosted Ollama | llama3.1:8b |
Visionary |
| Indic Voice | Sarvam AI ๐ฎ๐ณ | sarvam-m |
Philosopher |
| The Pragmatist | Hosted Ollama | mistral-nemo:latest |
Pragmatist ๐ |
No API keys. No credit card. Just sign in with Google and deliberate.
| Member | Model | Persona |
|---|---|---|
| The Analyst | deepseek-r1:latest |
Analyst |
| The Contrarian | llama2-uncensored:7b |
Contrarian |
| The Visionary | llama3.1:8b |
Visionary |
| The Pragmatist | mistral-nemo:latest |
Pragmatist ๐ |
| The Philosopher | deepseek-v2:latest |
Philosopher |
| Member | Provider | Model | Persona |
|---|---|---|---|
| Fast Thinker | Groq | llama-3.3-70b-versatile |
Analyst |
| Devil's Advocate | Groq | mixtral-8x7b-32768 |
Contrarian |
| Local Expert | Ollama | deepseek-r1:latest |
Philosopher |
| The Synthesizer | Anthropic | claude-sonnet-4-6 |
Pragmatist ๐ |
| Member | Provider | Model | Persona |
|---|---|---|---|
| Model A | Anthropic | claude-sonnet-4-6 |
Raw Model |
| Model B | Groq | llama-3.3-70b-versatile |
Raw Model |
| Model C | OpenAI | gpt-4o |
Raw Model |
| Model D | Sarvam AI ๐ฎ๐ณ | sarvam-m |
Raw Model ๐ |
Templates load a pre-built persona structure in one click. Set provider, model, and API key per member after loading.
| Template | Members | Best for |
|---|---|---|
| ๐ Business Strategy | Analyst + Contrarian + Pragmatist ๐ | Product, GTM, and operational decisions |
| ๐ง Deep Thinking | Philosopher + Visionary + Analyst + Pragmatist ๐ | Complex, nuanced, philosophical questions |
| โ Full Council | All 5 think-tank personas | Maximum deliberation depth |
| โจ Creative Council | Visionary + Philosopher + Contrarian + Pragmatist ๐ | Ideation, creative strategy, design |
| Template | Members | Best for |
|---|---|---|
| ๐ฌ Research + Operator | Deep Researcher + Web Intelligence + Red Team + Operator ๐ | Research synthesis |
| โ๏ธ AI Model Debate | Grok + Claude Ethics + Gemini + Canvas + Raw Arbiter ๐ | Model comparison |
| โก Agentic Task Force | Task Planner + Full-Stack Builder + Risk Monitor + Orchestrator ๐ | Execution pipelines |
| ๐ Skill Pipeline | Skill Composer + Code Architect + Systems Thinker + Executor ๐ | Modular AI workflows |
| ๐ฆ Socratic + Red Team | Socratic Tutor + Red Team + Ethics Auditor + Systems Thinker ๐ | Critical reasoning |
| ๐ฎ๐ณ India Intelligence Council | Market Intelligence + Cultural Lens + Analyst + Pragmatist ๐ | India-specific strategy |
| ๐ก๏ธ Tech Ethics Review | Code Architect + Ethics Auditor + Risk Monitor + Red Team + Systems Thinker ๐ | Responsible tech |
| Template | Members | Best for |
|---|---|---|
| ๐ Product Launch | CFO + CTO + CMO + Legal + CEO ๐ | Go/no-go launch decisions |
| ๐ฑ Startup Team | Founder + Engineer + Designer + Growth + Investor ๐ | Early-stage strategy |
| ๐ผ Consulting Firm | Strategist + Ops + Finance + Risk + Partner ๐ | Client recommendations |
| Template | Members | Best for |
|---|---|---|
| ๐ฐ Editorial Team | Reporter + Editor + Legal + SEO + Editor-in-Chief ๐ | Publishing decisions |
| ๐ฅ Hospital Team | GP + Specialist + Pharmacist + Ethicist + Chief ๐ | Medical case analysis |
| โ๏ธ Law Firm | Litigator + Corporate + Compliance + Associate + Partner ๐ | Legal risk assessment |
| Template | Members | Best for |
|---|---|---|
| ๐ฌ Raw Model Panel | 4ร Raw Model | Model comparison, zero persona bias |
| โ๏ธ Raw vs Persona | Raw + Analyst + Contrarian + Pragmatist ๐ | Persona framing vs raw reasoning |
| Persona | Role | Best for |
|---|---|---|
| The Analyst | Structured, rigorous reasoning | Step-by-step logic |
| The Contrarian | Challenges assumptions, finds blind spots | Stress-testing ideas |
| The Visionary | Reframes from unexpected angles | Creative and strategic questions |
| The Pragmatist | Focuses on execution and next steps | Action plans โ best as Chairman |
| The Philosopher | First principles, ethics, meaning | Deep or value-laden questions |
| Persona | Role |
|---|---|
| The CFO | Financial lens โ ROI, unit economics, burn rate |
| The CTO | Technical feasibility, architecture risk |
| The CMO | Market opportunity, positioning, go-to-market |
| The Legal Counsel | Regulatory risk, IP, liability |
| The CEO (Chairman) | Final go/no-go โ resolves tensions with executive authority |
| Persona | Role |
|---|---|
| The Founder | Vision, product-market fit, mission integrity |
| The Engineer | Production reality โ what works at scale |
| The Designer | User voice โ UX, simplicity, human-centered design |
| The Growth Lead | Acquisition, retention, viral loops, unit economics |
| The Investor (Chairman) | Investment thesis โ team, market, defensibility |
| Persona | Role |
|---|---|
| The Strategist | Structured frameworks โ Porter's, BCG, jobs-to-be-done |
| The Operations Expert | Execution feasibility, critical path, implementation risk |
| The Finance Expert | Financial modeling, unit economics, stress-testing |
| The Risk Advisor | Risk matrix โ strategic, operational, regulatory, black swans |
| The Partner (Chairman) | Single client-ready recommendation across workstreams |
| Persona | Role |
|---|---|
| The Reporter | Facts, evidence, what's missing, who benefits |
| The Editor | Clarity, narrative structure, reader impact |
| The Legal Reviewer | Defamation, privacy, copyright, contempt risk |
| The SEO Strategist | Discoverability, search intent, digital reach |
| The Editor-in-Chief (Chairman) | Publish, hold, or spike โ the final editorial ruling |
| Persona | Role |
|---|---|
| The GP | Holistic assessment, first-line response, red flags |
| The Specialist | Domain expertise, differential diagnosis |
| The Pharmacist | Drug interactions, dosing, monitoring |
| The Medical Ethicist | Autonomy, consent, beneficence, equity |
| Chief of Medicine (Chairman) | Final clinical management plan |
| Persona | Role |
|---|---|
| The Litigator | Claims, defenses, litigation risk, settlement |
| The Corporate Lawyer | Entity structure, contracts, governance, M&A |
| The Compliance Officer | GDPR, FCPA, employment law, sanctions |
| The Junior Associate | Detail-level review โ ambiguous clauses, missed deadlines |
| The Senior Partner (Chairman) | The firm's definitive legal position |
| Persona | Role |
|---|---|
| Deep Researcher | Perplexity-style deep research synthesis |
| Web Intelligence | Real-time web search and current state tracking |
| Red Team | Exploits assumptions, finds vulnerabilities |
| The Operator | Converts deliberation into clean, actionable output |
| Grok (Irreverent) | Unfiltered, contrarian, anti-establishment takes |
| Claude Ethics | Safety-first reasoning, harm analysis |
| Gemini Synthesizer | Multi-perspective synthesis and balanced views |
| Canvas Writer | Long-form structured writing and editing |
| Raw Arbiter | No persona โ pure model judgment |
| Task Planner | Breaks goals into executable sub-tasks |
| Full-Stack Builder | Implementation-focused engineering reasoning |
| Risk Monitor | Tracks risk, flags blockers, monitors health |
| Workflow Orchestrator | Coordinates multi-step AI pipelines |
| Skill Composer | Designs modular AI capabilities |
| Code Architect | System design and engineering decisions |
| Systems Thinker | Integration, emergent behavior, feedback loops |
| Devin Executor | Autonomous code execution and delivery |
| Socratic Tutor | Questions assumptions through Socratic dialogue |
| Persona | Role |
|---|---|
| Market Intelligence | Indian market context, consumer behavior, regulatory landscape |
| Cultural Lens | Indic cultural context, regional nuance, language sensitivity |
| Sarvam Hindi | Hindi-native reasoning via Sarvam AI |
| Sarvam Indic | Indic multilingual reasoning across 10+ languages |
| Persona | Role |
|---|---|
| Raw Model | No persona, no framing โ pure model output |
| Custom โ | Your own system prompt โ any domain, any role |
Receives the full transcript (all responses + reviews) and delivers one authoritative verdict. Mandate:
- Extract the strongest insights from each member
- Resolve disagreements โ not average them
- Eliminate redundancy and weak reasoning
- Deliver a direct, unambiguous final answer
Export: Click ๐ค Export Config. Downloads ai-council-config.json. API keys are never included.
Import: Click ๐ฅ Import JSON โ select a file. Council loads immediately.
{
"members": [
{
"name": "The Analyst",
"provider": "managed_sarvam",
"model": "sarvam-m",
"personaLabel": "The Analyst",
"systemPrompt": "...",
"isChairman": false
}
]
}Configure a URL in โ Settings. After every session, AI Studio POSTs:
{
"type": "session_complete",
"ts": 1234567890,
"query": "your question",
"temperature": 0.7,
"memberNames": ["The Analyst", "The Contrarian", "..."],
"responses": { "memberId": "response text" },
"reviews": { "memberId": "review text" },
"verdict": "Council's Verdict: ..."
}Works with Zapier, Make, n8n, Slack, Notion, Pipedream. Use ๐งช Send Test Ping to verify first.
Reasoning models (deepseek-r1, qwq) emit <think>...</think> blocks. AI Studio strips these automatically and shows a ๐ง Thinking deeplyโฆ indicator mid-stream. Peer review and Chairman prompts only receive the cleaned output โ no thinking noise leaks between stages.
| Shortcut | Action |
|---|---|
โ + Enter |
Submit query / follow-up |
- Managed providers (Sarvam AI, Hosted Ollama): Requests are proxied through the AI Studio backend. Provider, model, stage, and character counts are logged for usage analytics. Raw prompt text is not stored server-side.
- Self-hosted providers: All API calls go directly from your browser to the provider. Nothing passes through our backend.
- Cloud configs: API keys are AES-GCM encrypted in your browser before upload. The server only stores ciphertext.
- Local storage: Session history and configs for anonymous users stay in your browser only.
- API keys are never included in JSON exports.
- Webhook is opt-in โ nothing is sent without you setting a URL.
- Video Gen audio uploads: Local audio files are saved to the server's media directory and served publicly so SkyReels can fetch them. Files are named
audio_{uid}_{timestamp}.extโ not guessable, but not private. Use a public audio URL directly if you need privacy.
- Ollama models run sequentially (one at a time per endpoint) โ cloud models run in parallel
- No markdown rendering in responses โ plain text only (
pre-wrap) - Session history is capped at the last 30 sessions
- PDF export uses browser print โ use Markdown export for richer formatting
- Managed providers require a signed-in Google account
- Video Gen requires a public HTTPS URL for both image and audio โ local file uploads are handled automatically by the backend
- Markdown rendering in response panels
- Web search injection for grounding answers in current data
- Token usage / cost tracking per session
- Named council presets โ save full council with provider + model assignments
-
WhatsApp Integrationโ shipped โ -
Voice Modeโ shipped โ -
Video Genโ shipped โ - Document Council โ upload a PDF and let the council analyse it
- Public Persona Gallery โ publish and browse community-created personas
- MCP tool use in Council mode โ let members call external tools mid-deliberation
- Video Gen history gallery โ browse and replay past generated videos
MIT โ do whatever you want with it.
๐ฎ๐ณ Built with pride in Bharat ยท Powered by Sarvam AI
The council is always in session.





