Skip to content

zzylos/nexmeet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NexMeet AI Assistant

An AI-powered meeting assistant that joins Google Meet meetings, transcribes conversations in real-time, and provides intelligent responses when activated. Built with Recall.ai for meeting integration and OpenRouter for LLM capabilities.

TO-DO

  • Reduce number of HTTPS endpoint requests and TCP connections causing ngrok free plan to get overloaded

Features

🎯 Core Functionality

  • Real-time Meeting Transcription: Automatically transcribes Google Meet conversations
  • AI Chat Integration: Responds to questions directly in meeting chat
  • Context-Aware Responses: Uses meeting context and company information for relevant answers
  • Activation Control: "Hey AI" to activate, "Thanks AI" to deactivate
  • Meeting Critique: Generates insights and analysis about meeting discussions

πŸ” Security & Authentication

  • Flexible Authentication: Optional user accounts with secure session management
  • Configurable Access: Disable auth for personal use or enable for teams
  • Session Security: HTTP-only cookies with secure settings
  • Input Validation: Comprehensive validation and XSS protection

πŸ› οΈ Technical Features

  • Webhook Integration: Real-time data processing from Recall.ai
  • Context Management: Maintains conversation history and key topics
  • Web Interface: Simple dashboard for monitoring and control
  • Session Management: Start/stop bot sessions with full cleanup
  • Database Support: SQLite database for user accounts and sessions

Quick Start

Prerequisites

  • Node.js 14+ installed
  • Recall.ai API key
  • OpenRouter API key
  • Google Meet access

1. Installation

# Clone and setup
cd NexMeet
npm install

# Configure environment
cp .env.example .env
nano .env
# Edit .env with your API keys

2. Configure Webhook URL

For local development, you'll need to expose your localhost to the internet for Recall.ai webhooks. Use ngrok or similar:

# Install ngrok (if not already installed)
npm install -g ngrok

# In a separate terminal, expose your local server
ngrok http 3000

# Copy the HTTPS URL (e.g., https://abc123.ngrok.io) and update .env:
WEBHOOK_URL=https://abc123.ngrok.io/webhook/transcript

3. Start the Application

npm start

Open your browser to http://localhost:3000

Usage Guide

Step 1: Access the Application

With Authentication Enabled:

  1. Visit http://localhost:3000
  2. Create an account (if registration is enabled) or login
  3. Access the main dashboard

With Authentication Disabled:

  1. Visit http://localhost:3000
  2. Go directly to the dashboard

Step 2: Setup Session

  1. Enter your Google Meet URL
  2. Optionally add meeting context (e.g., "Q4 planning meeting")
  3. Optionally add company context (e.g., "Tech startup, 25 employees")
  4. Click "Start AI Assistant"

Step 3: Meeting Integration

  • The bot will join your meeting automatically
  • It starts in passive listening mode (transcribing only)
  • Transcripts appear in real-time on the dashboard

Step 4: AI Activation

In the meeting chat, type:

  • Hey AI - Activates the assistant
  • Ask questions directly in chat
  • Thanks AI or Bye AI - Deactivates the assistant

Or use the dashboard:

  • Send manual messages to the meeting
  • Generate meeting critiques and insights

Step 5: Monitor & Control

  • View live transcripts
  • Send custom AI messages
  • Generate meeting analysis
  • Stop session when done

API Endpoints

Endpoint Method Description
/api/start-session POST Start a new bot session
/api/stop-session POST Stop the current session
/api/status GET Get session status
/api/transcripts GET Get meeting transcripts
/api/send-message POST Send message to meeting
/api/critique-meeting POST Generate meeting critique
/webhook/transcript POST Webhook for Recall.ai data

Authentication Endpoints (when AUTH_ENABLED=true)

Endpoint Method Description
/auth/register POST Create new user account
/auth/login POST User login
/auth/logout POST User logout
/auth/me GET Get current user info
/auth/profile PUT Update user profile
/auth/password PUT Change password
/api/auth-config GET Get authentication configuration

Configuration

Environment Variables

# Required
RECALL_API_KEY=your_recall_api_key
OPENROUTER_API_KEY=your_openrouter_api_key

# Required for webhooks
WEBHOOK_URL=https://your-domain.com/webhook/transcript

# Optional: Server Configuration
PORT=3000
FRONTEND_URL=http://localhost:3000
NODE_ENV=development

# Optional: Authentication Configuration
AUTH_ENABLED=true                    # Set to 'false' to disable authentication
REGISTRATION_ENABLED=true            # Set to 'false' to disable user registration
SESSION_SECRET=your_session_secret   # Change in production

Authentication Configuration

NexMeet supports flexible authentication modes to suit different use cases:

πŸ”“ No Authentication Mode

Perfect for personal use or trusted environments.

AUTH_ENABLED=false
  • No login required
  • Direct access to dashboard
  • No database needed
  • Fastest setup

πŸ” Full Authentication Mode

Best for teams and shared environments.

AUTH_ENABLED=true
REGISTRATION_ENABLED=true
SESSION_SECRET=your_secure_random_string
  • Users must create accounts and login
  • Secure session management
  • Full user profiles with names
  • Registration open to new users

πŸ”’ Login Only Mode

Ideal for controlled access with pre-created accounts.

AUTH_ENABLED=true
REGISTRATION_ENABLED=false
SESSION_SECRET=your_secure_random_string
  • Authentication required
  • No new user registration
  • Admin-controlled user creation
  • Existing users can login

Webhook Configuration

The webhook URL must be publicly accessible for Recall.ai to send real-time data. For production, use a proper domain. For development, use ngrok or similar tunneling service.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚   Backend    β”‚    β”‚   Google Meet   β”‚
β”‚   (Dashboard)   │◄──►│   (Node.js)  │◄──►│   (via Recall)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                       β”‚  OpenRouter  β”‚
                       β”‚    (LLM)     β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Components

  • recallService.js: Recall.ai API integration
  • aiService.js: OpenRouter LLM integration
  • contextManager.js: Meeting context and history
  • transcriptHandler.js: Webhook processing
  • botManager.js: Bot lifecycle management

Troubleshooting

Common Issues

Bot not joining meeting:

  • Verify Recall.ai API key is correct
  • Check meeting URL format
  • Ensure meeting is public or bot has access by setting meeting access settings to "Trusted" and "Anyone with this meeting link can join"

Webhooks not working:

  • Verify webhook URL is publicly accessible
  • Check ngrok is running for local development
  • Confirm webhook endpoint is responding

AI not responding:

  • Verify OpenRouter API key
  • Check activation phrases in chat
  • Ensure bot is in active mode

Transcripts not appearing:

  • Wait 30-60 seconds after bot joins
  • Check browser console for errors
  • Verify webhook is receiving data

Authentication issues:

  • Check AUTH_ENABLED setting in .env
  • Verify SESSION_SECRET is set for production
  • Clear browser cookies if login fails
  • Check database connection (when auth enabled)
  • Check browser console for Content Security Policy errors

Debug Mode

Add debug logging by setting environment variable:

DEBUG=nexmeet* npm start

Production Deployment

Requirements

  • Public domain with HTTPS
  • Process manager (PM2, Docker, etc.)
  • Environment variable management
  • Log monitoring

Example Production Setup

# Install PM2
npm install -g pm2

# Start with PM2
pm2 start src/server.js --name nexmeet

# Environment setup
export WEBHOOK_URL=https://yourdomain.com/webhook/transcript
export NODE_ENV=production

# Monitor logs
pm2 logs nexmeet

API Keys Setup

Recall.ai API Key

  1. Sign up at recall.ai
  2. Navigate to API settings
  3. Generate a new API key
  4. Add to .env as RECALL_API_KEY

OpenRouter API Key

  1. Sign up at openrouter.ai
  2. Go to API Keys section
  3. Create a new key
  4. Add to .env as OPENROUTER_API_KEY

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

Copyright (C) 2025 zzylos

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Support

For issues and questions:

  • Check the troubleshooting section
  • Review the Recall.ai documentation
  • Review the OpenRouter documentation
  • If you have trouble with the Recall API, make sure your account is on the us-west-2 region.
  • Open a GitHub issue for bugs or feature requests