Skip to main content

Prerequisites

  • Python 3.10 or higher
  • A Browserbase account (for browser automation)

Step 1: Install

pip install simultaneous simultaneous-cli

Step 2: Sign up and create a project

# Sign up for an account
sim auth signup

# Create your first project
sim projects create "My First Project"
Copy the project ID from the output - you’ll need it in the next step.

Step 3: Run your first automation

Create a file demo.py:
import asyncio
from simultaneous import SimClient, Browsers, Models

async def main():
    # Replace with your project ID from step 2
    sim = SimClient(project_id="your-project-id-here")
    
    # Create a browser client
    browser = sim.browser_client(
        provider=Browsers.BROWSERBASE,
        model_name=Models.O4_MINI,
    )
    
    # Automate the browser
    async with browser:
        page = browser.page
        await page.goto("https://www.google.com")
        await page.act("search for 'hello world'")
        await asyncio.sleep(2)
        await page.screenshot(path="results.png")
        print("✅ Done! Check results.png")

if __name__ == "__main__":
    asyncio.run(main())
Run it:
python demo.py
That’s it! You’ve run your first browser automation.

What you need

Before running, make sure you have:
  1. Project ID: Get it from sim projects list or when you create a project
  2. Model API key: Set OPENAI_API_KEY environment variable (for AI-powered actions)

Optional: Using environment variables

You can also set your project ID in a .env file:
# .env file
SIMULTANEOUS_PROJECT_ID=your-project-id-here
OPENAI_API_KEY=sk-...
Then simplify your code:
import asyncio
from simultaneous import SimClient, Browsers, Models

async def main():
    sim = SimClient()  # Reads from .env automatically
    
    browser = sim.browser_client(
        provider=Browsers.BROWSERBASE,
        model_name=Models.O4_MINI,
    )
    
    async with browser:
        page = browser.page
        await page.goto("https://www.google.com")
        await page.act("search for 'hello world'")
        await asyncio.sleep(2)
        await page.screenshot(path="results.png")

asyncio.run(main())

Next steps