Installation ============ System Requirements ------------------- * Python 3.10 or higher * Windows, macOS, or Linux * At least 2GB of available RAM * Internet connection for streaming service integrations * OBS Studio (for browser source integration) Installing from Source ---------------------- 1. Clone the repository:: git clone https://github.com/yourusername/mycelian.git cd mycelian 2. Install using UV (recommended):: uv pip install -e . Or using pip:: pip install -e . 3. Install development dependencies (optional):: uv pip install -e ".[docs]" First Launch ------------ Desktop Application Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Launch Mycelian:: python main.py 2. The desktop application will open with a tabbed interface including: * **Activity Feed:** Real-time alert monitoring and history * **Settings:** Service configuration and database setup * **Custom Sources:** Template configuration management * **Source Controls:** Interactive template controls * **Connectors:** Automation workflow designer and management 3. The Flask web server will automatically start on ``http://localhost:5000`` to serve browser sources Initial Configuration --------------------- Database Setup ~~~~~~~~~~~~~~ On first launch, configure your database in the **Settings** tab: **Option 1: Firebase Realtime Database (Recommended for cloud sync)** 1. Create a Firebase project at https://console.firebase.google.com/ 2. Enable Realtime Database 3. Download your service account key file 4. In Settings → Database Configuration: * Select "Firebase" as database type * Browse and select your Firebase key file * Enter your database URL * Test the connection **Option 2: Local SQLite Database** 1. In Settings → Database Configuration: * Select "SQLite" as database type * Choose or create a local database file * Test the connection The application will create necessary database structures automatically. Service Integration Setup ------------------------- **🔑 IMPORTANT - Personal Credentials Required:** Each service integration requires you to create your own developer applications and obtain your own unique credentials. Mycelian does not provide shared API keys or credentials. You must: * Create developer accounts with each service you want to use * Register your own applications on their developer platforms * Generate your own Client IDs and Client Secrets * Use your own account credentials for OAuth authorization This ensures your data privacy and complies with each service's terms of use. Twitch Integration ~~~~~~~~~~~~~~~~~~ **Prerequisites:** * Active Twitch account * Twitch Developer account **⚠️ Important: You MUST create your own Twitch application to get unique credentials** **Setup Process:** 1. **Create Your Own Twitch Application:** * Visit https://dev.twitch.tv/console/apps * Log in with your Twitch account * Click "Register Your Application" * Fill in application details: - Name: "Mycelian" (or your preferred name) - OAuth Redirect URI: ``http://localhost:3000`` - Category: "Application Integration" * Click "Create" 2. **Get Your Unique Credentials:** * Click "Manage" on your newly created application * Copy your **Client ID** (visible immediately) * Click "New Secret" to generate your **Client Secret** * Copy your **Client Secret** (keep this secure!) 3. **Configure Mycelian:** * In Mycelian Settings → Service Integrations → Twitch: * Enter YOUR unique Client ID and Client Secret * Click "Connect to Twitch" * Complete OAuth authorization in your browser * Verify connection status shows "Connected" **Features Enabled:** * Real-time follower and subscription alerts * Chat integration with emotes and badges * Channel point redemption notifications * Raid and host alerts * Bits/cheer tracking Spotify Integration ~~~~~~~~~~~~~~~~~~~ **Prerequisites:** * Spotify Premium account (for full playback control) * Spotify Developer account **⚠️ Important: You MUST create your own Spotify application to get unique credentials** **Setup Process:** 1. **Create Your Own Spotify Application:** * Visit https://developer.spotify.com/dashboard * Log in with your Spotify account * Click "Create app" * Fill in application details: - App name: "Mycelian" (or your preferred name) - App description: "Stream overlay integration" - Website: Leave blank or add your stream URL - Redirect URI: ``http://localhost:8888/callback`` - Which API/SDKs are you planning to use: "Web API" * Accept terms and click "Save" 2. **Get Your Unique Credentials:** * Click on your newly created application * Go to "Settings" * Copy your **Client ID** (visible immediately) * Click "View client secret" to reveal your **Client Secret** * Copy your **Client Secret** (keep this secure!) 3. **Configure Mycelian:** * In Mycelian Settings → Service Integrations → Spotify: * Enter YOUR unique Client ID and Client Secret * Click "Connect to Spotify" * Authorize the application in your browser * Verify connection status shows "Connected" **Features Enabled:** * Now playing track display * Album artwork integration * Playback history tracking * Track information for overlays YouTube Integration ~~~~~~~~~~~~~~~~~~~ **Prerequisites:** * Google account (Gmail) * YouTube channel(s) you want to monitor * Basic understanding of API concepts **⚠️ Important: You MUST create your own Google Cloud project and API key** **Setup Process:** 1. **Create a Google Cloud Project:** * Visit https://console.cloud.google.com/ * Sign in with your Google account (Gmail) * Click "Create Project" (or select an existing project if you have one) * Enter a project name: "Mycelian YouTube Integration" (or your preferred name) * Choose your organization if applicable * Click "Create" 2. **Enable the YouTube Data API v3:** * In your Google Cloud Console, go to "APIs & Services" → "Library" * Search for "YouTube Data API v3" * Click on "YouTube Data API v3" from the results * Click "Enable" to activate the API for your project 3. **Create API Credentials:** * Go to "APIs & Services" → "Credentials" * Click "Create Credentials" → "API key" * Your API key will be generated and displayed * **IMPORTANT:** Copy and save your API key immediately (you won't be able to see it again) * **SECURITY NOTE:** Keep your API key secure and never share it publicly 4. **Configure API Key Restrictions (Recommended):** * Click on your newly created API key * Under "API restrictions": - Select "Restrict key" - Check "YouTube Data API v3" * Under "Application restrictions": - Select "HTTP referrers (web sites)" - Add referrer: ``localhost:*`` (for local development) - You can add additional restrictions based on your needs * Click "Save" to apply the restrictions 5. **Configure Mycelian:** * Launch Mycelian and go to Settings → YouTube Integration tab * Enter your API key in the "API Key" field * Enter channel URLs separated by pipe symbols (|): ``https://youtube.com/@Channel1|https://youtube.com/@Channel2`` * Supported URL formats: - ``https://youtube.com/@ChannelHandle`` - ``https://youtube.com/channel/UC_CHANNEL_ID`` - ``https://youtube.com/c/CustomChannelName`` - ``https://youtube.com/user/Username`` * Click "Save Settings" * Test the connection to verify everything works **API Quota and Costs:** * **Free Tier:** YouTube Data API v3 provides 10,000 units per day for free * **Cost:** $0.50 per 1,000 units beyond the free tier * **Usage:** Each video/channel lookup uses approximately 1-3 units * **Monitoring:** With 5-minute refresh intervals, typical usage is well within free limits **Security Best Practices:** * **API Key Restrictions:** Always restrict your API key to specific APIs and referrers * **Regular Rotation:** Rotate your API keys periodically for security * **Environment Variables:** Consider using environment variables for API keys in production * **Access Control:** Only share API keys with trusted team members **Troubleshooting API Key Issues:** * **"API key not valid" error:** - Verify you copied the API key correctly - Check that the YouTube Data API v3 is enabled in your project - Ensure API key restrictions aren't blocking your requests * **"Daily quota exceeded" error:** - Wait for the quota to reset (24 hours) - Consider increasing your refresh intervals - Upgrade to a paid plan if needed * **"Access denied" error:** - Check API key restrictions are configured correctly - Verify the HTTP referrer matches your setup - Ensure you're using the correct API key for the correct project **Features Enabled:** * Multi-channel video monitoring (unlimited channels) * Real-time latest video detection across all channels * Channel-specific and global latest video variables * Automatic video filtering based on keywords * WebSocket integration for live template updates * Chatbot integration with dynamic YouTube variables PlayStation Network Integration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **Prerequisites:** * Active PlayStation Network account * PSN username you want to monitor for trophies **⚠️ Important: You must use your own PSN account credentials** **Setup Process:** 1. **Configure Your PSN Account:** * In Settings → Service Integrations → PlayStation Network: * Enter YOUR PSN username (the account you want to monitor) * Configure trophy notification preferences * Test the connection * Verify your profile is accessible for trophy tracking **Features Enabled:** * Trophy unlock notifications * Game status updates * Achievement progress tracking * Game artwork display Streamlabs Integration ~~~~~~~~~~~~~~~~~~~~~~~ **⚠️ Important: You must have your own accounts with these services** **Streamlabs:** **Prerequisites:** * Active Streamlabs account linked to your streaming platform * Streamlabs dashboard access **Setup Process:** 1. **Ensure Streamlabs Account Setup:** * Visit https://streamlabs.com/ * Sign in with your streaming platform account (Twitch/YouTube) * Complete your Streamlabs dashboard setup 2. **Connect to Mycelian:** * In Mycelian Settings → Service Integrations → Streamlabs: * Click "Connect to Streamlabs" * Complete OAuth authorization using YOUR Streamlabs account * Configure event preferences * Verify connection status shows "Connected" OBS Studio Integration ---------------------- Browser Source Setup ~~~~~~~~~~~~~~~~~~~~ 1. **Enable Templates:** Ensure the Flask server is running (automatic with Mycelian) 2. **Add Browser Sources in OBS:** * Create new Browser Source * Set URL to ``http://localhost:5000/{template_name}`` * Common templates: - Alerts: ``http://localhost:5000/bitboss`` - Activity Feed: ``http://localhost:5000/activity_feed`` - Chat: ``http://localhost:5000/chat`` - Now Playing: ``http://localhost:5000/spotify`` 3. **Configure Source Properties:** * Set width/height appropriate for your template Template Configuration ---------------------- Custom Sources Tab ~~~~~~~~~~~~~~~~~~ Use the **Custom Sources** tab to configure template appearance: 1. **Select Template:** Choose from available configurations 2. **Edit Properties:** Modify colors, fonts, animations, and layout 3. **Save Changes:** Apply configuration to template files 4. **Preview:** View changes in real-time Source Controls Tab ~~~~~~~~~~~~~~~~~~~ Use the **Source Controls** tab for real-time interaction: 1. **Interactive Elements:** Buttons, sliders, toggles for live control 2. **Dynamic Updates:** Changes reflect immediately in browser sources 3. **Template Actions:** Trigger animations, reset counters, spin wheels Connector Automation Setup --------------------------- Connectors Tab ~~~~~~~~~~~~~~ The **Connectors** tab provides a powerful automation system for creating trigger-action workflows: **Getting Started with Connectors:** 1. **Access the Connectors Tab:** Open the Connectors tab in the desktop application 2. **Create Your First Connector:** Click "New Connector" to open the creation dialog 3. **Configure Basic Information:** * Enter a descriptive name for your connector * Add an optional description explaining what it does 4. **Set Up Triggers:** * Choose from 15+ trigger types (Twitch events, donations, timers, manual triggers) * Add optional conditions to make triggers more specific * Configure trigger-specific parameters 5. **Configure Actions:** * Add one or more actions to execute when triggered * Choose from 9+ action types including: - Template controls (counters, roulette wheels, etc.) - Chat messages with dynamic placeholders - API calls to external services - File operations and logging - System commands and keyboard/mouse input - Audio control (volume, microphone) 6. **Test Your Connector:** * Use the built-in test functionality to verify your connector works * Review the test results and debug any issues * Enable the connector when you're satisfied it works correctly **Example Connector Workflows:** * **High Bits Counter:** When someone cheers 100+ bits → increment a counter template * **VIP Follow Response:** When a user with "VIP" in their name follows → send a special chat message * **Donation Logger:** When someone donates $5+ → write donation details to a log file * **Music Control:** When channel points are redeemed for "Next Song" → make API call to skip track * **Alert Trigger:** When specific chat command is used → trigger a custom alert animation **Connector Management:** * **Statistics:** View how often connectors trigger and execute actions * **Enable/Disable:** Toggle connectors on/off without deleting them * **Edit:** Modify existing connectors with the same interface used for creation * **Delete:** Remove connectors you no longer need * **Examples:** Use the "Examples" button to create pre-configured sample connectors Verification ------------ Testing Your Setup ~~~~~~~~~~~~~~~~~~ 1. **Database Connection:** Check Settings → Database for green status indicator 2. **Service Connections:** Verify all integrations show "Connected" status 3. **Browser Sources:** Add a test browser source in OBS to confirm template loading 4. **Alert Testing:** Use test buttons in Settings to verify alert functionality 5. **WebSocket Communication:** Check Activity Feed for real-time event updates 6. **Connector Testing:** Create a simple test connector and verify it triggers correctly Troubleshooting --------------- Common Issues ~~~~~~~~~~~~~ **Port Already in Use (5000):** * Close other applications using port 5000 * Or modify the port in application settings and update OBS browser source URLs **Database Connection Failed:** * For Firebase: Verify key file path and database URL * For SQLite: Check file permissions and path accessibility * Test connection using built-in connection tester **Service Authentication Errors:** * Verify API credentials are correct and active * Check OAuth redirect URIs match exactly * Re-authorize connections if tokens expire * Review service-specific permissions and scopes **Browser Sources Not Loading:** * Confirm Flask server is running (check Activity Feed tab) * Verify template files exist in ``templates/`` directory * Check browser console for JavaScript errors * Ensure OBS browser source URL format is correct **WebSocket Connection Issues:** * Verify web server is running on correct port * Check firewall settings for port 5000 * Review browser console for connection errors * Confirm templates are properly connecting to Socket.IO **Template Controls Not Working:** * Check Source Controls tab for registered dynamic controls * Verify template configuration includes ``dynamic_controls`` section * Ensure WebSocket events are properly defined * Test with Source Controls tab before using in OBS **Performance Issues:** * Close unnecessary browser sources in OBS * Reduce animation complexity in template configurations * Monitor system resources and available RAM * Consider using audio-only alerts for resource-intensive setups **Connector Issues:** * **Connectors Not Triggering:** Verify service integrations are connected and active, check trigger conditions for typos, test with manual trigger events * **Actions Not Executing:** Review action configuration parameters, check logs for execution errors, verify template names and action IDs are correct * **Template Control Actions Failing:** Ensure template supports the specified action, verify WebSocket connection is active, check template configuration includes required elements * **Test Mode Not Working:** Confirm connector is properly saved, check that all required fields are filled, review test data matches trigger expectations Migration from Other Platforms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **Alert Import:** * Use Settings → Alert Migration to import from Streamlabs * Backup your current alert configurations before migration * Test imported alerts thoroughly before going live **Database Migration:** * Use Settings → Database Migration for switching between Firebase and SQLite * Create backups before starting migration process * Monitor migration progress and logs for any issues Getting Help ~~~~~~~~~~~~ **Diagnostic Information:** * Check ``logs/`` directory for detailed error messages * Use Settings → Debug Information for system status * Monitor Activity Feed for real-time event processing **Support Resources:** * Verify all dependencies are properly installed with ``uv pip list`` * Ensure your system meets minimum requirements * Check template configurations for syntax errors * Review WebSocket event logs for communication issues **Log Locations:** * Application logs: ``logs/mycelian.log`` * Database operations: ``logs/database.log`` * WebSocket events: ``logs/websocket.log``