feat: add more Agent services & easytier
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Global Registry Prefix (optional)
|
||||
# GLOBAL_REGISTRY=
|
||||
|
||||
# Service Versions
|
||||
SKYVERN_VERSION=v1.0.31
|
||||
POSTGRES_VERSION=15
|
||||
|
||||
# Timezone
|
||||
TZ=UTC
|
||||
|
||||
# Host ports
|
||||
SKYVERN_PORT_OVERRIDE=8000
|
||||
SKYVERN_UI_PORT_OVERRIDE=8080
|
||||
|
||||
# Skyvern API Key (CHANGEME: set a strong random key for the REST API)
|
||||
SKYVERN_API_KEY=changeme_skyvern_api_key_CHANGEME
|
||||
|
||||
# Browser type: chromium-headless (default), chromium, or chrome
|
||||
BROWSER_TYPE=chromium-headless
|
||||
|
||||
# LLM Provider API Keys (at least one is required for task automation)
|
||||
# OPENAI_API_KEY=sk-...
|
||||
# ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
# PostgreSQL password
|
||||
POSTGRES_PASSWORD=skyvern
|
||||
|
||||
# UI → API connection (must be the address reachable from the user's browser)
|
||||
VITE_API_BASE_URL=http://localhost:8000
|
||||
VITE_WSS_BASE_URL=ws://localhost:8000
|
||||
|
||||
# Resource Limits - Skyvern backend (includes Playwright + Chromium)
|
||||
SKYVERN_CPU_LIMIT=2
|
||||
SKYVERN_MEMORY_LIMIT=4G
|
||||
SKYVERN_CPU_RESERVATION=0.5
|
||||
SKYVERN_MEMORY_RESERVATION=1G
|
||||
|
||||
# Resource Limits - Skyvern UI
|
||||
SKYVERN_UI_CPU_LIMIT=0.5
|
||||
SKYVERN_UI_MEMORY_LIMIT=256M
|
||||
SKYVERN_UI_CPU_RESERVATION=0.1
|
||||
SKYVERN_UI_MEMORY_RESERVATION=64M
|
||||
|
||||
# Resource Limits - PostgreSQL
|
||||
POSTGRES_CPU_LIMIT=1
|
||||
POSTGRES_MEMORY_LIMIT=1G
|
||||
POSTGRES_CPU_RESERVATION=0.25
|
||||
POSTGRES_MEMORY_RESERVATION=256M
|
||||
@@ -0,0 +1,84 @@
|
||||
# Skyvern
|
||||
|
||||
[English](./README.md) | [中文](./README.zh.md)
|
||||
|
||||
Quick start: <https://docs.skyvern.com>.
|
||||
|
||||
This service deploys Skyvern, an AI-powered browser automation platform that uses LLMs and computer vision to execute tasks in web browsers. It can fill forms, navigate websites, and complete multi-step workflows without custom scripts.
|
||||
|
||||
## Services
|
||||
|
||||
- **skyvern**: The Skyvern API server with embedded Playwright + Chromium.
|
||||
- **skyvern-ui**: React-based web UI for task management and browser session viewing.
|
||||
- **postgres**: PostgreSQL database for task history and state.
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Copy `.env.example` to `.env`:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. Set your LLM API key and change the Skyvern API key in `.env`:
|
||||
|
||||
```
|
||||
SKYVERN_API_KEY=your-strong-api-key
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
3. Start the services:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. Open `http://localhost:8080` for the web UI, or send tasks to the API at `http://localhost:8000`.
|
||||
|
||||
## Core Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
| ----------------------- | -------------------------------------------------------------------- | -------------------- |
|
||||
| `SKYVERN_VERSION` | Image version (applies to both skyvern and skyvern-ui) | `v1.0.31` |
|
||||
| `SKYVERN_PORT_OVERRIDE` | Host port for the API | `8000` |
|
||||
| `SKYVERN_UI_PORT_OVERRIDE` | Host port for the web UI | `8080` |
|
||||
| `SKYVERN_API_KEY` | API key for authenticating requests to the Skyvern server — **CHANGEME** | placeholder |
|
||||
| `BROWSER_TYPE` | Browser type: `chromium-headless`, `chromium`, or `chrome` | `chromium-headless` |
|
||||
| `OPENAI_API_KEY` | OpenAI API key (recommended for best results) | *(empty)* |
|
||||
| `ANTHROPIC_API_KEY` | Anthropic API key (alternative to OpenAI) | *(empty)* |
|
||||
| `POSTGRES_PASSWORD` | PostgreSQL password | `skyvern` |
|
||||
| `VITE_API_BASE_URL` | Skyvern API URL as seen from the user's browser | `http://localhost:8000` |
|
||||
| `VITE_WSS_BASE_URL` | WebSocket URL for live session streaming | `ws://localhost:8000` |
|
||||
|
||||
## Volumes
|
||||
|
||||
- `skyvern_artifacts`: Downloaded files and task artifacts.
|
||||
- `skyvern_videos`: Browser session recordings.
|
||||
- `skyvern_har`: HTTP Archive (HAR) files for debugging.
|
||||
- `skyvern_postgres_data`: PostgreSQL data persistence.
|
||||
|
||||
## Ports
|
||||
|
||||
- **8000**: Skyvern REST API
|
||||
- **8080**: Skyvern web UI
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
| Service | CPU Limit | Memory Limit |
|
||||
| ---------- | --------- | ------------ |
|
||||
| skyvern | 2 | 4 GB |
|
||||
| skyvern-ui | 0.5 | 256 MB |
|
||||
| postgres | 1 | 1 GB |
|
||||
|
||||
The `skyvern` service includes Playwright and Chromium. Allocate **4+ GB RAM** and **2+ CPU cores** for reliable browser automation.
|
||||
|
||||
## Notes
|
||||
|
||||
- Database migrations run automatically on startup via Alembic.
|
||||
- If deploying behind a reverse proxy, update `VITE_API_BASE_URL` and `VITE_WSS_BASE_URL` to your public domain.
|
||||
- The `SKYVERN_API_KEY` must be included in API requests as the `x-api-key` header.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Skyvern Docs](https://docs.skyvern.com)
|
||||
- [GitHub](https://github.com/Skyvern-AI/skyvern)
|
||||
@@ -0,0 +1,84 @@
|
||||
# Skyvern
|
||||
|
||||
[English](./README.md) | [中文](./README.zh.md)
|
||||
|
||||
快速开始:<https://docs.skyvern.com>。
|
||||
|
||||
此服务用于部署 Skyvern,一个由 AI 驱动的浏览器自动化平台,使用 LLM 和计算机视觉在 Web 浏览器中执行任务。无需编写自定义脚本,即可填写表单、导航网站和完成多步骤工作流。
|
||||
|
||||
## 服务
|
||||
|
||||
- **skyvern**:集成了 Playwright + Chromium 的 Skyvern API 服务器。
|
||||
- **skyvern-ui**:用于任务管理和浏览器会话查看的 React Web UI。
|
||||
- **postgres**:PostgreSQL 数据库,用于存储任务历史和状态。
|
||||
|
||||
## 快速开始
|
||||
|
||||
1. 将 `.env.example` 复制为 `.env`:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. 在 `.env` 中设置 LLM API Key 并更改 Skyvern API Key:
|
||||
|
||||
```
|
||||
SKYVERN_API_KEY=your-strong-api-key
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
3. 启动服务:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. 打开 `http://localhost:8080` 访问 Web UI,或通过 `http://localhost:8000` 向 API 发送任务。
|
||||
|
||||
## 核心环境变量
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
| -------------------------- | ------------------------------------------------------- | ------------------------ |
|
||||
| `SKYVERN_VERSION` | 镜像版本(同时适用于 skyvern 和 skyvern-ui) | `v1.0.31` |
|
||||
| `SKYVERN_PORT_OVERRIDE` | API 宿主机端口 | `8000` |
|
||||
| `SKYVERN_UI_PORT_OVERRIDE` | Web UI 宿主机端口 | `8080` |
|
||||
| `SKYVERN_API_KEY` | 请求 Skyvern 服务器的认证 API Key——**请修改** | 占位符 |
|
||||
| `BROWSER_TYPE` | 浏览器类型:`chromium-headless`、`chromium` 或 `chrome` | `chromium-headless` |
|
||||
| `OPENAI_API_KEY` | OpenAI API Key(推荐,效果最佳) | *(空)* |
|
||||
| `ANTHROPIC_API_KEY` | Anthropic API Key(OpenAI 的替代方案) | *(空)* |
|
||||
| `POSTGRES_PASSWORD` | PostgreSQL 密码 | `skyvern` |
|
||||
| `VITE_API_BASE_URL` | 从用户浏览器访问的 Skyvern API URL | `http://localhost:8000` |
|
||||
| `VITE_WSS_BASE_URL` | 实时会话流的 WebSocket URL | `ws://localhost:8000` |
|
||||
|
||||
## 数据卷
|
||||
|
||||
- `skyvern_artifacts`:下载的文件和任务产物。
|
||||
- `skyvern_videos`:浏览器会话录像。
|
||||
- `skyvern_har`:用于调试的 HTTP 存档(HAR)文件。
|
||||
- `skyvern_postgres_data`:PostgreSQL 数据持久化。
|
||||
|
||||
## 端口
|
||||
|
||||
- **8000**:Skyvern REST API
|
||||
- **8080**:Skyvern Web UI
|
||||
|
||||
## 资源需求
|
||||
|
||||
| 服务 | CPU 限制 | 内存限制 |
|
||||
| ---------- | -------- | -------- |
|
||||
| skyvern | 2 | 4 GB |
|
||||
| skyvern-ui | 0.5 | 256 MB |
|
||||
| postgres | 1 | 1 GB |
|
||||
|
||||
`skyvern` 服务包含 Playwright 和 Chromium,需分配 **4+ GB RAM** 和 **2+ CPU 核心**以保证浏览器自动化的稳定运行。
|
||||
|
||||
## 说明
|
||||
|
||||
- 数据库迁移通过 Alembic 在启动时自动运行。
|
||||
- 如果部署在反向代理后,请将 `VITE_API_BASE_URL` 和 `VITE_WSS_BASE_URL` 更新为你的公网域名。
|
||||
- API 请求中必须在 `x-api-key` 请求头中包含 `SKYVERN_API_KEY`。
|
||||
|
||||
## 文档
|
||||
|
||||
- [Skyvern 文档](https://docs.skyvern.com)
|
||||
- [GitHub](https://github.com/Skyvern-AI/skyvern)
|
||||
@@ -0,0 +1,110 @@
|
||||
# Change SKYVERN_API_KEY before exposing this stack externally.
|
||||
# Fields marked with CHANGEME must be updated for any non-local deployment.
|
||||
|
||||
x-defaults: &defaults
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 100m
|
||||
max-file: '3'
|
||||
|
||||
services:
|
||||
skyvern:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}skyvern/skyvern:${SKYVERN_VERSION:-v1.0.31}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '${SKYVERN_PORT_OVERRIDE:-8000}:8000'
|
||||
volumes:
|
||||
- skyvern_artifacts:/data/artifacts
|
||||
- skyvern_videos:/data/videos
|
||||
- skyvern_har:/data/har
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- DATABASE_STRING=postgresql+psycopg2://skyvern:${POSTGRES_PASSWORD:-skyvern}@postgres:5432/skyvern
|
||||
- SKYVERN_API_KEY=${SKYVERN_API_KEY:-changeme_skyvern_api_key_CHANGEME}
|
||||
- BROWSER_TYPE=${BROWSER_TYPE:-chromium-headless}
|
||||
- VIDEO_PATH=/data/videos
|
||||
- HAR_PATH=/data/har
|
||||
- ARTIFACT_STORAGE_PATH=/data/artifacts
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- python3
|
||||
- -c
|
||||
- "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/v1/heartbeat')"
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${SKYVERN_CPU_LIMIT:-2}
|
||||
memory: ${SKYVERN_MEMORY_LIMIT:-4G}
|
||||
reservations:
|
||||
cpus: ${SKYVERN_CPU_RESERVATION:-0.5}
|
||||
memory: ${SKYVERN_MEMORY_RESERVATION:-1G}
|
||||
|
||||
skyvern-ui:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}skyvern/skyvern-ui:${SKYVERN_VERSION:-v1.0.31}
|
||||
depends_on:
|
||||
skyvern:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '${SKYVERN_UI_PORT_OVERRIDE:-8080}:8080'
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- VITE_API_BASE_URL=${VITE_API_BASE_URL:-http://localhost:8000}
|
||||
- VITE_WSS_BASE_URL=${VITE_WSS_BASE_URL:-ws://localhost:8000}
|
||||
healthcheck:
|
||||
test: [CMD-SHELL, "curl -sf http://localhost:8080/ > /dev/null 2>&1 || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 15s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${SKYVERN_UI_CPU_LIMIT:-0.5}
|
||||
memory: ${SKYVERN_UI_MEMORY_LIMIT:-256M}
|
||||
reservations:
|
||||
cpus: ${SKYVERN_UI_CPU_RESERVATION:-0.1}
|
||||
memory: ${SKYVERN_UI_MEMORY_RESERVATION:-64M}
|
||||
|
||||
postgres:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}postgres:${POSTGRES_VERSION:-15}
|
||||
environment:
|
||||
- POSTGRES_USER=skyvern
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-skyvern}
|
||||
- POSTGRES_DB=skyvern
|
||||
- TZ=UTC
|
||||
- PGTZ=UTC
|
||||
volumes:
|
||||
- skyvern_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: [CMD-SHELL, pg_isready -U skyvern]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${POSTGRES_CPU_LIMIT:-1}
|
||||
memory: ${POSTGRES_MEMORY_LIMIT:-1G}
|
||||
reservations:
|
||||
cpus: ${POSTGRES_CPU_RESERVATION:-0.25}
|
||||
memory: ${POSTGRES_MEMORY_RESERVATION:-256M}
|
||||
|
||||
volumes:
|
||||
skyvern_artifacts:
|
||||
skyvern_videos:
|
||||
skyvern_har:
|
||||
skyvern_postgres_data:
|
||||
Reference in New Issue
Block a user