Batch Registration, Auto Switch, Account Pool Management
| Platform | Architecture | Download |
|---|---|---|
| macOS | Intel (x64) | Windsurf-Tool.dmg |
| macOS | Apple Silicon (arm64) | Windsurf-Tool-arm64.dmg |
| Windows | x64 | Windsurf-Tool.exe |
Features • Quick Start • User Guide • Build Instructions • How It Works
✅ Batch Auto Registration - Automatically register Windsurf accounts with custom domain emails
✅ Smart Verification Bypass - Auto bypass Cloudflare verification using puppeteer-real-browser
✅ Local Email Reception - Receive verification codes locally via IMAP protocol, no backend server needed
✅ Account Pool Management - Manage accounts locally (CRUD), with expiration reminders
✅ One-Click Account Switch - Auto reset config, clear machine ID, complete account switching
✅ Multi-language Support - Supports Simplified Chinese and English



⚠️ Security Notice: Since the app is unsigned, macOS will block it. You can bypass this with:
Method 1: Right-click Open (Recommended) - Right-click the app → Select "Open" → Click "Open" button
Method 2: One-click Solution Command ```bash
🚀 One-click solution (copy and paste to run)
sudo xattr -rd com.apple.quarantine /Applications/Windsurf-Tool.app && echo "✅ Security restrictions removed, app can now run normally!" ```
Windsurf-Tool.exe# 1. Clone repository
git clone https://github.com/crispvibe/Windsurf-Tool.git
cd Windsurf-Tool
# 2. Install dependencies
npm install
# 3. Start application
npm start
# Development mode (with dev tools)
npm run dev
This tool uses Cloudflare Email Routing for email forwarding - completely free and no need to purchase enterprise email.
Prerequisites: - Own a domain (can purchase from Cloudflare, Namecheap, GoDaddy, etc.) - Domain hosted on Cloudflare (free)
Configuration Steps:
Select your domain
Enable Email Routing
Email → Email RoutingEnable Email RoutingCloudflare will automatically configure required DNS records (MX, TXT)
Setup Catch-all Address
Routing Rules, click Catch-all addressAction: Send to an emailyour@gmail.com or your@qq.com)Click Save
Verify Receiving Email
How It Works:
- Emails sent to any-username@yourdomain.com
- Will automatically forward to your configured receiving email
- No need to configure each email individually
Go to the tool's "Settings" page and configure:
Email Domain Configuration:
Add your domain configured in Cloudflare, for example:
- example.com
- yourdomain.com
Registration will auto-generate emails in format user_xxxxx@yourdomain.com, and all emails will forward to your receiving address.
IMAP Email Configuration:
Configure IMAP settings for your receiving email (the target email in Cloudflare forwarding):
QQ Mail Example:
IMAP Server: imap.qq.com
Port: 993
Email: your@qq.com
Password: Authorization code (not QQ password, generate in QQ Mail settings)
Gmail Example:
IMAP Server: imap.gmail.com
Port: 993
Email: your@gmail.com
Password: App-specific password (generate in Google Account settings)
Outlook Example:
IMAP Server: outlook.office365.com
Port: 993
Email: your@outlook.com
Password: Account password or app password
163 Mail Example:
IMAP Server: imap.163.com
Port: 993
Email: your@163.com
Password: Authorization code (generate in 163 Mail settings)
126 Mail Example:
IMAP Server: imap.126.com
Port: 993
Email: your@126.com
Password: Authorization code (generate in 126 Mail settings)
Yahoo Mail Example:
IMAP Server: imap.mail.yahoo.com
Port: 993
Email: your@yahoo.com
Password: App-specific password (generate in Yahoo account settings)
iCloud Mail Example:
IMAP Server: imap.mail.me.com
Port: 993
Email: your@icloud.com
Password: App-specific password (generate in Apple ID settings)
💡 Quick Config Tip: The tool has built-in quick configuration for common email providers. Select your email provider in the "Settings" page to auto-fill IMAP configuration.
Click "Test Connection" to verify configuration.
FAQ: - ❓ Why authorization code? For security, email providers require special authorization codes instead of login passwords - ❓ How to get authorization code? Search for "IMAP" or "authorization code" in email settings and follow instructions - ❓ Forwarding delay? Cloudflare Email Routing typically completes forwarding within seconds
Go to "Account Management" page to: - View all registered accounts - View account statistics (total, available, expiring soon, expired) - View each account's Pro status and remaining days - Copy account info or delete accounts - Manually add existing accounts
Expiration Rules: - Pro trial period: 13 days - Remaining days > 3: Green badge - Remaining days ≤ 3: Orange badge (warning) - Expired: Red badge
Requirements:
- macOS 10.15+ system
- Node.js 16.0+
- npm 7.0+
- Xcode Command Line Tools: xcode-select --install
# Build macOS version (Intel + Apple Silicon)
npm run build:mac
Generated files:
- Windsurf-Tool.dmg - Intel Mac
- Windsurf-Tool-arm64.dmg - Apple Silicon Mac
Requirements: - Windows 10/11 system - Node.js 16.0+ - npm 7.0+ - Visual Studio Build Tools 2019/2022 - Python 3.7+ (for native module compilation)
Install build tools:
# Method 1: Use Visual Studio Installer to install "C++ build tools"
# Method 2: Use chocolatey
choco install visualstudio2022buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools"
# Install Python (if not available)
choco install python
# Build Windows version
npm run build:win
Generated files:
- Windsurf-Tool.exe - Windows installer
Using puppeteer-real-browser library's turnstile feature:
const { connect } = require('puppeteer-real-browser');
const { page } = await connect({
turnstile: true, // Auto handle Cloudflare Turnstile
headless: false
});
Implement IMAP protocol in Electron main process:
const Imap = require('imap');
const { simpleParser } = require('mailparser');
// Connect to IMAP server
const imap = new Imap({
host: config.host,
port: config.port,
tls: true,
user: config.user,
password: config.password
});
// Search and parse verification code emails
When switching accounts, perform:
Delete config and cache:
rm -rf ~/Library/Application Support/Windsurf
rm -rf ~/Library/Caches/Windsurf
Reset machine identifiers:
- machineId - Machine unique identifier
- sqmId - Telemetry identifier
- devDeviceId - Device identifier
- machineid file - Hardware fingerprint
Using AppleScript to simulate keyboard input:
tell application "System Events"
keystroke "email@example.com"
delay 0.5
keystroke tab
keystroke "password"
delay 0.5
keystroke return
end tell
accounts.json - Account data
[
{
"id": "1234567890",
"email": "user_xxxxx@example.com",
"password": "user_xxxxx@example.com",
"createdAt": "2024-01-01T00:00:00.000Z"
}
]
current_login.json - Current logged-in account
{
"email": "user_xxxxx@example.com",
"password": "user_xxxxx@example.com"
}
This tool runs completely locally, no backend server required.
All data stored locally, protecting privacy and security.
windsurf-tool/
├── main.js # Electron main process
├── renderer.js # Renderer process logic
├── index.html # Main interface
├── language-selector.html # Language selection interface
├── build.sh # Build script
├── src/
│ ├── browserAutomation.js # Puppeteer browser automation
│ ├── clickLogin.applescript # AppleScript automation script
│ ├── emailReceiver.js # IMAP email reception
│ ├── i18n.js # Internationalization support
│ ├── registrationBot.js # Batch registration bot
│ └── windsurfManager.js # Windsurf manager
├── package.json # Project config
└── .gitignore # Git ignore file
This project is licensed under MIT License.
Welcome to join QQ group for discussion:

Scan to join QQ group
Welcome to submit Issues and Pull Requests!
If you want to contribute to Windows adaptation, please refer to Windows Adaptation section.
Made with ❤️ for Windsurf Users
$ claude mcp add Windsurf-Tool \
-- python -m otcore.mcp_server <graph>