Skip to content

steel-dev/surf.new

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌊 surf.new

A playground for testing web agents powered by Steel.dev. Experience how different AI agents can surf and interact with the web just like humans do.

SFO.to.HND.SURF.DEMO.mp4

🌟 Features

  • Test multiple web agents in a controlled environment
  • Real-time browser interaction visualization
  • Support for various AI providers (Claude, GPT-4, etc.)
  • Built with modern web technologies (Next.js 15, FastAPI, Steel SDK)
  • Beautiful UI powered by Shadcn UI and Tailwind CSS

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Python 3.11+
  • Steel API Key (sign up at steel.dev) or Local running instance

Installation

  1. Clone the repository:
git clone https://github.com/steel-dev/surf.new
cd surf.new
  1. Install frontend dependencies:
npm install
  1. Install backend dependencies:
python -m venv venv
source venv/bin/activate  # On Windows: .\venv\Scripts\activate
pip install -r requirements.txt
  1. Set up environment variables:
cp .env.example .env.local

Edit .env.local and add your Steel API key and other required variables.

Running Locally

Run the development server:

npm run dev

Windows Users

If you're developing on Windows, you should use the Windows-specific command:

npm run dev:win

Technical Reason: Windows has two different asyncio event loop implementations:

  • SelectorEventLoop (default): Uses select-based I/O and doesn't support subprocesses properly
  • ProactorEventLoop: Uses I/O completion ports and fully supports subprocesses

Playwright requires subprocess support to launch browsers. When hot reloading is enabled, the default SelectorEventLoop is used, causing a NotImplementedError when Playwright tries to create a subprocess. Reference Issue: #32

This will start both the Next.js frontend (port 3001) and FastAPI backend (port 8000).

Visit http://localhost:3001 to start using surf.new!

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ”— Links

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ’ͺ Built With


Made with ❀️ by the Steel team