SaaS 快速开始¶
启动 HermesX SaaS API 服务。HermesX 对外只提供 SaaS API、内嵌 WebUI 和 SaaS 部署路径。
前置条件¶
| 依赖 | 版本 | 说明 |
|---|---|---|
| Docker + Docker Compose | 24+ | 推荐的 SaaS 栈启动方式 |
| PostgreSQL | 16+ | 直接运行二进制时必需 |
| Redis | 7+ | 分布式限流和调度器锁 |
| MinIO/S3 | 兼容 S3 | 租户 Skills 和 Soul 存储 |
| Go | 1.25+ | 仅直接构建二进制时需要 |
推荐方式:SaaS Compose 栈¶
git clone https://github.com/Colin4k1024/hermesx.git
cd hermesx
export POSTGRES_DB=hermes
export POSTGRES_USER=hermes
export POSTGRES_PASSWORD="$(openssl rand -hex 16)"
export MINIO_ACCESS_KEY=hermes
export MINIO_SECRET_KEY="$(openssl rand -hex 16)"
export HERMES_ACP_TOKEN="$(openssl rand -hex 32)"
export HERMES_API_KEY="$(openssl rand -hex 32)"
export SAAS_ALLOWED_ORIGINS="http://localhost:18080"
export HERMES_PROVIDER=openai
export HERMES_BASE_URL="https://api.openai.com/v1"
export HERMES_API_KEY_LLM="replace-me"
docker compose -f docker-compose.saas.yml up -d --build
curl http://localhost:18080/health/ready
SaaS API 会从同一个服务提供内嵌 WebUI:
- 用户入口:
http://localhost:18080/ - 管理控制台:
http://localhost:18080/admin.html - OpenAPI:
http://localhost:18080/v1/openapi
二进制 SaaS 服务¶
仅在 PostgreSQL、Redis、MinIO/S3 已经可用时使用。
go build -o hermesx ./cmd/hermesx/
export DATABASE_URL="postgres://user:pass@127.0.0.1:5432/hermes?sslmode=disable"
export REDIS_URL="redis://127.0.0.1:6379"
export MINIO_ENDPOINT="127.0.0.1:9000"
export MINIO_ACCESS_KEY="replace-me"
export MINIO_SECRET_KEY="replace-me"
export MINIO_BUCKET="hermes-skills"
export HERMES_ACP_TOKEN="$(openssl rand -hex 32)"
export SAAS_ALLOWED_ORIGINS="http://localhost:8080"
export SAAS_STATIC_DIR="./webui/dist"
./hermesx saas-api
不带 saas-api 的根命令,以及旧 chat、setup、gateway 子命令不再是受支持的公开接口。
创建租户和 API Key¶
curl -X POST http://localhost:18080/v1/tenants \
-H "Authorization: Bearer $HERMES_ACP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Company",
"plan": "pro",
"rate_limit_rpm": 120,
"max_sessions": 50
}'
curl -X POST http://localhost:18080/v1/api-keys \
-H "Authorization: Bearer $HERMES_ACP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "app-key",
"tenant_id": "<tenant-id>",
"roles": ["user"]
}'
保存返回的 hk_... key;它只会显示一次。
发送 Chat 请求¶
curl -X POST http://localhost:18080/v1/chat/completions \
-H "Authorization: Bearer hk_xxxx..." \
-H "Content-Type: application/json" \
-d '{
"model": "mock",
"messages": [
{"role": "user", "content": "Hello, who am I?"}
]
}'
沙箱默认行为¶
execute_code 不再隐式使用宿主机执行。请显式配置:
| 模式 | 用途 |
|---|---|
SANDBOX_MODE=k8s-job |
生产 SaaS 部署 |
SANDBOX_MODE=docker |
容器隔离执行 |
SANDBOX_MODE=local + HERMESX_ALLOW_LOCAL_SANDBOX=true |
仅本地 SaaS 开发;生产环境会被拒绝 |