by bestruirui
One Hub All LLMs For You | 为个人打造的 LLM API 聚合网关
# Add to your Claude Code skills
git clone https://github.com/bestruirui/octopusGuides for using cli tools skills like octopus.
Last scanned: 4/25/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-25T05:50:14.060Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}octopus is an open-source cli tools skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by bestruirui. One Hub All LLMs For You | 为个人打造的 LLM API 聚合网关. It has 2,500 GitHub stars.
Yes. octopus passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/bestruirui/octopus" and add it to your Claude Code skills directory (see the Installation section above).
octopus is primarily written in TypeScript. It is open-source under bestruirui on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other CLI Tools skills you can browse and compare side by side. Open the CLI Tools category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh octopus against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Based on votes and bookmarks from developers who liked this skill
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
A Simple, Beautiful, and Elegant LLM API Aggregation Service for Individuals
English | 简体中文
Run directly:
docker run -d --name octopus -v /path/to/data:/app/data -p 8080:8080 bestrui/octopus
Or use docker compose:
wget https://raw.githubusercontent.com/bestruirui/octopus/refs/heads/master/docker-compose.yml
docker compose up -d
Download the binary for your platform from Releases, then run:
./octopus start
Requirements:
# Clone the repository
git clone https://github.com/bestruirui/octopus.git
cd octopus
# Build frontend
cd web && pnpm install && pnpm run build
# Start the backend service
go run main.go start
💡 Tip: The frontend build artifacts are embedded into the Go binary, so you must build the frontend before starting the backend.
Development Mode
cd web && pnpm install && pnpm run dev
## Open a new terminal, start the backend service
go run main.go start
## Access the frontend at
http://localhost:5173
After first launch, visit http://localhost:8080 and log in to the management panel with:
adminadmin⚠️ Security Notice: Please change the default password immediately after first login.
The configuration file is located at data/config.json by default and is automatically generated on first startup.
Complete Configuration Example:
{
"server": {
"host": "0.0.0.0",
"port": 8080
},
"database": {
"type": "sqlite",
"path": "data/data.db"
},
"log": {
"level": "info"
}
}
Configuration Options:
| Option | Description | Default |
|---|---|---|
server.host |
Listen address | 0.0.0.0 |
server.port |
Server port | 8080 |
database.type |
Database type | sqlite |
database.path |
Database connection string | data/data.db |
log.level |
Log level | info |
Database Configuration:
Three database types are supported:
| Type | database.type |
database.path Format |
|---|---|---|
| SQLite | sqlite |
data/data.db |
| MySQL | mysql |
user:password@tcp(host:port)/dbname |
| PostgreSQL | postgres |
postgresql://user:password@host:port/dbname?sslmode=disable |
MySQL Configuration Example:
{
"database": {
"type": "mysql",
"path": "root:password@tcp(127.0.0.1:3306)/octopus"
}
}
PostgreSQL Configuration Example:
{
"database": {
"type": "postgres",
"path": "postgresql://user:password@localhost:5432/octopus?sslmode=disable"
}
}
💡 Tip: MySQL and PostgreSQL require manual database creation. The application will automatically create the table structure.
All configuration options can be overridden via environment variables using the format OCTOPUS_ + configuration path (joined with _):
| Environment Variable | Configuration Option |
|---|---|
OCTOPUS_SERVER_PORT |
server.port |
OCTOPUS_SERVER_HOST |
server.host |
OCTOPUS_DATABASE_TYPE |
database.type |
OCTOPUS_DATABASE_PATH |
database.path |
OCTOPUS_LOG_LEVEL |
log.level |
OCTOPUS_GITHUB_PAT |
For rate limiting when getting the latest version (optional) |
Channels are the basic configuration units for connecting to LLM providers.
Base URL Guide:
The program automatically appends the API version and endpoint path based on the channel type. You only need to provide the service root URL:
| Channel Type | Auto-appended Path | Base URL | Full Request URL Example |
|---|---|---|---|
| OpenAI Chat | /v1/chat/completions |
https://api.openai.com |
https://api.openai.com/v1/chat/completions |
| OpenAI Responses | /v1/responses |
https://api.openai.com |
https://api.openai.com/v1/responses |
| Anthropic | /v1/messages |
https://api.anthropic.com |
https://api.anthropic.com/v1/messages |
| Gemini | /v1beta/models/:model:generateContent |
https://generativelanguage.googleapis.com |
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent |
💡 Tip: The Base URL does not need to include
/v1,/v1beta, or a specific API endpoint path - the program handles them automatically.
Groups aggregate multiple channels into a unified external model name.
Core Concepts:
model parameter to the group name💡 Example: Create a group named
gpt-4o, add multiple providers' GPT-4o channels to it, then access all channels via a unifiedmodel: gpt-4o.
Manage model pricing information in the system.
Data Sources:
Price Priority:
| Priority | Source | Description |
|---|---|---|
| 🥇 High | This Page | Prices set by user in price management page |
| 🥈 Low | models.dev | Auto-synced default prices |
💡 Tip: To override a model's default price, simply set a custom price for it in the price management page.
Global system configuration.
Statistics Save Interval (minutes):
Since the program handles numerous statistics, writing to the database on every request would impact read/write performance. The program uses this strategy:
⚠️ Important: When exiting the program, use proper shutdown methods (like
Ctrl+Cor sendingSIGTERMsignal) to ensure in-memory statistics are correctly written to the database. Do NOT usekill -9or other forced termination methods, as this may result in statistics data loss.
from openai import OpenAI
import os
client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="sk-octopus-P48ROljwJmWBYVARjwQM8Nkiezlg7WOrXXOWDYY8TI5p9Mzg",
)
completion = client.chat.completions.create(
model="octopus-openai", # Use the correct group name
messages = [
{"role": "user", "content": "Hello"},