Spaces:
Running
Running
# Cursor-To-OpenAI-Nexus | |
[δΈζ](README.md) | English | |
Forward Cursor API requests to OpenAI, with support for multiple API Keys rotation. | |
## Features | |
- π **Multiple Keys Rotation**: Configure multiple API Keys rotation to improve availability | |
- π **Easy Configuration**: One-click configuration script for quick setup | |
- π **Status Monitoring**: Monitor API Key usage status | |
- π§ **Easy Maintenance**: Convenient maintenance scripts to simplify daily operations | |
## π Basic Installation | |
### Clone Repository | |
``` | |
git clone https://github.com/liuw1535/cursor-to-openai-nexus.git | |
``` | |
### Enter Project Directory | |
``` | |
cd cursor-to-openai-nexus | |
``` | |
### Install Dependencies | |
``` | |
npm install | |
``` | |
## βοΈ Configure Project | |
``` | |
npm run setup | |
``` | |
- Just fill in the custom key and whether to enable TLS proxy server | |
- Other options can be skipped by pressing Enter or filled in randomly | |
- π‘οΈ If you frequently encounter account blocking issues, it's recommended to enable TLS server | |
- If you're not satisfied with the configuration, you can re-run this command to modify it | |
## π Start Service | |
``` | |
npm start | |
``` | |
## π Usage | |
1. Access the management interface: `http://127.0.0.1:3010` | |
2. Use the blue button at the bottom of the page to get cookies | |
3. Configure in the Tavern page: | |
- API address: `http://127.0.0.1:3010/v1` | |
- Key: `sk-text` (if "text" was entered during configuration) | |
## π§ Account Registration Recommendations | |
- Recommended to use domain email (subdomain email is better) | |
- Search for "cloudfare domain email" for configuration tutorials | |
- β οΈ Register no more than 2 accounts at a time to avoid being blocked | |
## π οΈ Common Commands | |
``` | |
npm start # Start project | |
npm run setup # Modify configuration | |
``` | |
## Environment Configuration | |
Configure the following key parameters in the `.env` file: | |
- `API_KEYS`: Mapping relationship between API Key and Cookie (JSON format) | |
- `USE_TLS_PROXY`: (true) Enable TLS server, which can avoid request blocking issues | |
- `PROXY_PLATFORM`: The platform corresponding to the TLS server when enabled, default is auto detection | |
The system will automatically merge API Keys from `.env` and `data/api_keys.json` at startup to ensure data consistency. | |
## Deployment Method | |
### Using Docker Compose | |
```bash | |
# Create configuration files | |
cp .env.example .env | |
mkdir -p data | |
cp data/admin.example.json data/admin.json | |
# Create admin account | |
node scripts/create-admin.js | |
# Start service | |
docker compose up -d --build | |
# View logs | |
docker compose logs -f | |
# Stop service | |
docker compose down | |
``` | |
## API Usage Example | |
### Python Example | |
```python | |
from openai import OpenAI | |
# Use custom API Key | |
client = OpenAI(api_key="your_custom_api_key", | |
base_url="http://localhost:3010/v1") | |
# Or use Cookie directly | |
# client = OpenAI(api_key="user_...", | |
# base_url="http://localhost:3010/v1") | |
response = client.chat.completions.create( | |
model="claude-3-7-sonnet", | |
messages=[ | |
{"role": "user", "content": "Hello."}, | |
], | |
stream=False | |
) | |
print(response.choices) | |
``` | |
## Notes | |
- Please keep your WorkosCursorSessionToken secure | |
- This project is for learning and research purposes only, please comply with Cursor's terms of use | |
## Acknowledgements | |
- This project is based on [cursor-api](https://github.com/zhx47/cursor-api) (by zhx47) | |
- Integrated content from [cursor-api](https://github.com/lvguanjun/cursor-api) (by lvguanjun) | |
# Logging System | |
The project integrates a unified logging system, which can be configured through the following methods: | |
## Log Level Configuration | |
1. Set environment variables in the `.env` file | |
``` | |
LOG_LEVEL=INFO | |
LOG_FORMAT=colored | |
LOG_TO_FILE=true | |
LOG_MAX_SIZE=10 | |
LOG_MAX_FILES=10 | |
``` | |
2. Specify environment variables in the startup command, for example: `LOG_LEVEL=DEBUG npm start` | |
Supported log levels include: | |
- ERROR: Only display error messages | |
- WARN: Display warning and error messages | |
- INFO: Display general information, warnings, and error messages (default) | |
- DEBUG: Display debug information, general information, warnings, and error messages | |
- TRACE: Display all log information | |
## Log Format | |
The log format is: `[LEVEL] timestamp log content`, with different levels displayed in different colors for easy differentiation: | |
- ERROR: Red | |
- WARN: Yellow | |
- INFO: Green | |
- DEBUG: Blue | |
- TRACE: Cyan | |
- HTTP: Cyan (dedicated to HTTP request logs) | |
## HTTP Request Logs | |
The project uses the Morgan middleware to record HTTP requests, integrated into the unified logging system: | |
1. Set HTTP log format in the `.env` file: | |
``` | |
# Options: tiny, combined, common, dev, short | |
MORGAN_FORMAT=tiny | |
``` | |
2. HTTP logs will be displayed with the `[HTTP]` prefix, highlighted in cyan for easy identification | |
3. Morgan format options explanation: | |
- `tiny`: The most concise format, including only method, URL, status code, response time | |
- `combined`: Standard Apache combined log format, including IP, time, request, status code, response size, referrer, user-agent | |
- `common`: Standard Apache common log format, similar to combined but without referrer and user-agent | |
- `dev`: Developer-friendly colored format, including method, URL, status code (with color), response time | |
- `short`: Shorter format, including method, URL, status code, response time, response size | |
## File Logs | |
The project supports outputting logs to both console and files, which can be enabled with the following configuration: | |
1. Set in the `.env` file: `LOG_TO_FILE=true` | |
2. Optional configuration: | |
- `LOG_MAX_SIZE`: Maximum size of log file, in MB, default 10MB | |
- `LOG_MAX_FILES`: Number of historical log files to keep, default 10 | |
Log files are stored in the `logs` folder in the project root directory: | |
- Current log file: `app.log` | |
- Historical log file: `app-2023-05-05T12-45-30-000Z.log` | |
File logs will automatically rotate, creating a new log file when the log file size exceeds the set value and keeping the most recent N files. | |
## Usage in Code | |
Different log levels can be used as needed in the code: | |
```javascript | |
const logger = require('./utils/logger'); | |
logger.error('This is an error message'); | |
logger.warn('This is a warning message'); | |
logger.info('This is a general information message'); | |
logger.debug('This is a debug message'); | |
logger.trace('This is a trace message'); | |
logger.http('This is an HTTP request log'); | |
``` | |