An open API service indexing awesome lists of open source software.

https://github.com/steel-dev/surf.new

🌊 An open-source alternative to OpenAI Operator
https://github.com/steel-dev/surf.new

ai-agents browser-automation

Last synced: 6 months ago
JSON representation

🌊 An open-source alternative to OpenAI Operator

Awesome Lists containing this project

README

          

# 🌊 surf.new

A playground for testing web agents powered by [Steel.dev](https://steel.dev). Experience how different AI agents can surf and interact with the web just like humans do.

https://github.com/user-attachments/assets/cc50c603-1cb8-49b1-8910-251b6beec228

## 🌟 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](https://steel.dev) (sign up at steel.dev) or Local running instance

### Installation

1. Clone the repository:

```bash
git clone https://github.com/steel-dev/surf.new
cd surf.new
```

2. Install frontend dependencies:

```bash
npm install
```

3. Install backend dependencies:

```bash
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate
pip install -r requirements.txt
```

4. Set up environment variables:

```bash
cp .env.example .env.local
```

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

### Running Locally

Run the development server:

```bash
npm run dev
```

> ### Windows Users
>
> If you're developing on Windows, you should use the Windows-specific command:
>
> ```bash
> 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: https://github.com/steel-dev/surf.new/issues/32

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

Visit [http://localhost:3001](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

- [Steel.dev](https://steel.dev) - Our main platform
- [Documentation](https://docs.steel.dev)
- [Discord Community](https://discord.gg/steel-dev)
- [Twitter](https://twitter.com/steeldotdev)

## 📝 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 💪 Built With

- [Next.js 15](https://nextjs.org/) - React Framework
- [FastAPI](https://fastapi.tiangolo.com/) - Python Backend
- [Steel SDK](https://steel.dev) - Browser Automation
- [Shadcn UI](https://ui.shadcn.com/) - UI Components
- [Tailwind CSS](https://tailwindcss.com/) - Styling
- [Vercel AI SDK](https://sdk.vercel.ai/) - AI Chat Interface
- [Langchain](https://python.langchain.com/docs/introduction/) - Agent Framework

---

Made with ❤️ by the Steel team