/

OnKernel Browser Creator - Cloud Browser Automation

Copy script

Copied

Copy script

Copied

OnKernel Browser Creator - Cloud Browser Automation

🌐 Create cloud-based browser instances instantly using OnKernel SDK for web automation, scraping, and AI agent development. This script automatically installs the OnKernel SDK, creates a persistent browser session, and provides CDP WebSocket URLs for connecting popular automation frameworks like Playwright and Puppeteer. Perfect for scalable browser automation without managing infrastructure. Features session persistence, environment selection, and comprehensive verification steps.

Created by

andrew van beek - Keyboard Team

Requirements

onkernel.com logo

KEYBOARD_KERNEL_API_KEY

Script

Copy script

Copied

Copy script

Copied

// OnKernel Browser Creator - Keyboard Shortcut Template
const { execSync } = require('child_process');

// Install OnKernel SDK if not already installed
try {
    console.log('šŸ“¦ Installing @onkernel/sdk...');
    execSync('npm install @onkernel/sdk', { stdio: 'inherit' });
    console.log('āœ… @onkernel/sdk installed successfully');
} catch (error) {
    console.error('āŒ Failed to install @onkernel/sdk:', error.message);
    process.exit(1);
}

const Kernel = require('@onkernel/sdk').default;

async function createKernelBrowser() {
    try {
        console.log('šŸš€ Initializing Kernel client...');
        
        // Initialize the Kernel client with API key from environment
        const client = new Kernel({
            apiKey: process.env.KEYBOARD_KERNEL_API_KEY,
            environment: '{{environment}}' || 'production'
        });
        
        console.log('🌐 Creating browser instance...');
        
        // Create browser configuration
        const browserConfig = {};
        
        // Add persistence if enabled
        if ({{enablePersistence}}) {
            const sessionId = '{{sessionName}}' ? 
                '{{sessionName}}-' + Date.now() : 
                'browser-session-' + Date.now();
            browserConfig.persistence = { id: sessionId };
        }
        
        // Create a browser instance
        const browser = await client.browsers.create(browserConfig);
        
        console.log('āœ… Browser created successfully!');
        console.log('šŸ“‹ Browser Details:');
        console.log(`   Session ID: ${browser.session_id}`);
        console.log(`   CDP WebSocket URL: ${browser.cdp_ws_url}`);
        console.log(`   Live View URL: ${browser.live_view_url || 'Not available'}`);
        console.log(`   Status: ${browser.status || 'Initializing'}`);
        
        // Verify browser creation
        console.log('\nšŸ” Verifying browser creation...');
        const allBrowsers = await client.browsers.list();
        console.log(`   Total browsers: ${allBrowsers.length}`);
        
        const ourBrowser = allBrowsers.find(b => b.session_id === browser.session_id);
        if (ourBrowser) {
            console.log('āœ… Verification successful - browser found in list');
            console.log(`   Browser state: ${ourBrowser.status || 'Active'}`);
        } else {
            console.log('āš ļø  Browser not found in list (may still be initializing)');
        }
        
        // Provide usage examples
        console.log('\nšŸ“š Usage Examples:');
        console.log('   Playwright: const browser = await chromium.connectOverCDP("' + browser.cdp_ws_url + '");');
        console.log('   Puppeteer: const browser = await puppeteer.connect({browserWSEndpoint: "' + browser.cdp_ws_url + '"});');
        
        return browser;
        
    } catch (error) {
        console.error('āŒ Error creating kernel browser:', error.message);
        if (error.response) {
            console.error('   Response status:', error.response.status);
            console.error('   Response data:', error.response.data);
        }
        throw error;
    }
}

// Execute the function
createKernelBrowser()
    .then(browser => {
        console.log('\nšŸŽ‰ Script completed successfully!');
        console.log('šŸ’” Next steps:');
        console.log('   1. Use the CDP WebSocket URL to connect browser automation frameworks');
        console.log('   2. Connect with Playwright: chromium.connectOverCDP(browser.cdp_ws_url)');
        console.log('   3. Connect with Puppeteer: puppeteer.connect({browserWSEndpoint: browser.cdp_ws_url})');
        console.log('   4. Use the session ID for future API calls');
        console.log('   5. Access Live View URL for visual debugging (if available)');
    })
    .catch(error => {
        console.error('\nšŸ’„ Script failed:', error.message);
        process.exit(1);
    });