huawei-cloud-flexus-l-deploy-jiuwenswarm · v1.0.0 · 2026-08-29 · sha256 ffad1fdb3586a52d
huawei-cloud-flexus-l-deploy-jiuwenswarm v1.0.0A
Immutable. This exact content is served forever at /api/v1/blob/ffad1fdb3586a52d.
---
name: huawei-cloud-flexus-l-deploy-jiuwenswarm
description: "One-click deployment of JiuwenSwarm multi-Agent collaboration platform on Huawei Cloud Flexus L instances. Usage scenarios: When users need to quickly deploy JiuwenSwarm/JiuwenClaw on Huawei Cloud Flexus L instances, when they need to automatically create cloud instances and deploy AI Agent platforms, when they need to configure model APIs and message channels (Xiaoyi/Feishu/DingTalk). Automatically create instances, deploy applications via COC, configure models and message channels. Trigger keywords: JiuwenSwarm deployment, JiuwenClaw deployment, 九问Swarm部署, 九问Claw部署, 一键部署JiuwenSwarm, AI智能体平台部署, 部署九问Swarm, 部署九问Claw,云服务器部署AI平台."
version: 1.0.0
tags:
- JiuwenSwarm
- JiuwenClaw
- AI Agent
metadata: {"jiuwenswarm": {"requires": {"bins": ["python3", "hcloud"]}, "install": [{"kind": "pip", "command": "pip install -r requirements.txt"}]}}
---
## **Important Notes**:
1. All Python files in the `scripts` directory have implemented all functions. **Do not create additional py files**.
2. **Do not modify** the script files in the `scripts` directory.
3. Please operate directly according to the provided code and documentation. No need to check Huawei Cloud official API documentation.
---
## security Execution Rules (Highest Priority):
1. All scripts MUST be executed via skill action=exec, NEVER run directly in shell
2. NEVER print script contents or commands containing AK/SK/Token in conversation
3. NEVER create temporary script files, prefer inline execution (python -c)
4. On execution failure, only return error info, do NOT rewrite scripts or print full commansds
5. AK/SK/Token MUST be passed via environment variables or hcloud config, NEVER appear in conversation
6. NEVER interactively collect Huawei Cloud credentials from users. Credentials MUST be obtained only through:
- hcloud CLI config file (~/.hcloud/config.json) — primary source, auto-detected
- Temporary Security Credentials (STS Token) via environment variables — fallback
- Permanent credentials via environment variables — fallback
---
# JiuwenSwarm Deployment Skill for Huawei Cloud Flexus L Instance
## Overview
This skill provides a complete automated deployment solution for the JiuwenSwarm (JiuwenClaw) multi-Agent collaboration platform on Huawei Cloud Flexus L instances. It implements full-process automation from environment preparation to message channel configuration through phased scripts.
---
## Prerequisites
### 1. Huawei Cloud Account Requirements
- A valid Huawei Cloud account with active subscription
- Sufficient balance or billing method configured
- Flexus L instance quota available in target region (cn-north-4/cn-east-3/cn-south-1/cn-southwest-2)
### 2. IAM Credentials
- Huawei Cloud Access Key (AK) and Secret Key (SK) with appropriate permissions
- **Temporary Security Credentials (STS Token)**: Supports temporary security credentials. When `HUAWEICLOUD_SDK_SECURITY_TOKEN` environment variable is set along with AK/SK, the skill will use temporary credentials for authentication.
- Required IAM permissions: see [references/iam-policies.md](references/iam-policies.md)
### 3. Environment Requirements
- Python 3.8+ installed with pip
- It is recommended to use a Python virtual environment to avoid system package conflicts:
```bash
python3 -m venv .venv && source .venv/bin/activate
```
If you cannot use a virtual environment, you may need to add `--break-system-packages` when running pip on some newer Linux distributions.
- Required Python packages: `requests`, `huaweicloudsdkcore`, `huaweicloudsdkcoc`
- KooCLI (`hcloud`) must be installed and available in PATH (used for IAM/RMS queries, see [references/api-specs.md](references/api-specs.md))
### 4. Network Requirements
- Internet access to Huawei Cloud APIs
- Security group rules allowing outbound HTTP/HTTPS traffic (ports 80, 443)
- For web access: Port 5173 needs to be opened in security group after deployment
### 5. Resource Requirements
- Flexus L instance with minimum specifications:
- Flavor: 2c-4g-50g (2 vCPUs, 4GB RAM, 50GB disk) or higher
- Network: Public IP required
- Supported flavors:
- 2c-4g-50g (2 vCPU 4GB 50GB) - ~60 CNY/month
- 2c-4g-70g (2 vCPU 4GB 70GB) - ~100 CNY/month
- 4c-8g-180g (4 vCPU 8GB 180GB) - ~170 CNY/month
### 6. Configuration Requirements
- Model API credentials (API_BASE, API_KEY) for LLM integration (required for Phase 6)
- Message channel credentials (Xiaoyi/Feishu/DingTalk) if channel configuration is needed (required for Phase 7)
---
### Architecture Diagram
```
User/Agent ──────▶│ Flexus L Instance │──────▶│ JiuwenSwarm App │──────▶│ Model Config │ ──────▶│ Channel Config │
(Skill caller) (Target Host) (Multi-Agent Platform) (API_BASE/KEY) (Xiaoyi/Feishu/Dingtalk)
```
**Component Description**:
- **User/Agent**: Skill caller that triggers JiuwenSwarm deployment operations via natural language or API
- **Flexus L Instance**: Huawei Cloud Elastic Cloud Server, serving as the target host for JiuwenSwarm deployment
- **JiuwenSwarm App**: Multi-agent collaboration platform running on the Flexus L instance
- **Model Config**: Configuration for external LLM services (API_BASE, API_KEY, MODEL_NAME, MODEL_PROVIDER)
- **Channel Config**: Messaging channel configuration (Huawei Xiaoyi, Feishu, Dingtalk)
---
## Skill Responsibilities
### Core Functions
1. **Flexus L Instance Creation** - Call Flexus L API to create instances, supporting parameters like instance name, flavor, region, etc.
2. **Instance Status Query** - Query instance status, public IP, instance ID via KooCLI (`hcloud RMS ListAllResources`)
3. **COC Remote Deployment** - Use Huawei Cloud COC (Cloud Operations Center) to remotely execute deployment scripts on instances
4. **COC Task Status Query** - Query deployment task execution status and results via COC API
5. **System Service Configuration** - Configure systemd service for auto-start on boot
6. **Model Configuration** - Configure API_BASE, API_KEY, MODEL_NAME, MODEL_PROVIDER
7. **Message Channel Configuration** - Support three message channels: Xiaoyi, Feishu, DingTalk
### Typical Use Cases
**English Examples:**
1. **"Help me deploy JiuwenSwarm to Huawei Cloud"**
2. **"I want to install JiuwenClaw on Flexus L instance"**
3. **"How to add Feishu bot to my JiuwenSwarm?"**
4. **"I want to configure JiuwenSwarm to use custom model"**
5. **"Help me deploy JiuwenSwarm with one click and configure Xiaoyi channel"**
---
## 工作流
This skill executes deployment in 7 phases. Each phase must complete before the next begins.
### Phase 1: Environment Preparation
1. Verify Huawei Cloud credentials (AK/SK)
2. Set environment variable: `PYTHONIOENCODING=utf-8`
3. Check dependency modules: requests, huaweicloudsdkcore, huaweicloudsdkcoc, and KooCLI (`hcloud`)
4. Validate credential validity (via KooCLI `hcloud IAM KeystoneListProjects`)
### Phase 2: Create Flexus L Instance
> ⚠️ **Requires customer confirmation before execution!**
1. If `--region` parameter not provided, interactively prompt user to select a region from supported options
2. Display instance configuration to customer (name, flavor, region, estimated cost)
3. Wait for customer confirmation (reply "confirm" or "agree")
4. After confirmation: Get Project ID (KooCLI) → Call Flexus L create API → Save order_id → Poll RMS via KooCLI for completion (polls every **30 seconds**, defaults to **600s/10 minutes** timeout, configurable via `--timeout`) → Get instance_id, public_ip, ecs_instance_id
### Phase 3: COC Remote Dependency Installation
1. Execute dependency installation script via COC
2. Install base tools: git, curl, vim, wget, net-tools, etc.
3. Check Python and Node.js environment
4. Wait for completion (~8 minutes). Only retry if script execution errors occur.
### Phase 4: COC Remote JiuwenSwarm Service Deployment
1. Read deployment script template (assets/deploy_script_template.sh)
2. Execute complete deployment script on instance via COC
3. Install JiuwenSwarm, configure systemd service, start service
4. Wait for completion (~15 minutes). Only retry if script execution errors occur.
### Phase 5: Verify Deployment Result
1. Query COC deployment task status
2. Verify `jiuwenswarm` service is running (`systemctl is-active`)
3. Verify `.env` has `FRONTEND_HOST=0.0.0.0`
4. Verify all ports bound to 0.0.0.0: 5173, 18092, 19000, 19001
5. Check service health (`curl localhost:5173` returns 200)
6. Output web access URL: `http://{public_ip}:5173`
7. Remind user to configure security group for external access
### Phase 6: Model Configuration
1. Interactively collect: API_BASE, API_KEY, MODEL_NAME, MODEL_PROVIDER
2. Generate COC remote execution script: backup `.env`, update 4 core parameters, set permission 600
3. Restart JiuwenSwarm service
### Phase 7: Message Channel Configuration
1. Select channel type: xiaoyi / feishu / dingtalk
2. Collect configuration based on channel type:
- xiaoyi: AK, SK, Agent ID
- feishu: App ID, App Secret
- dingtalk: Client ID, Client Secret, Allow From
3. Generate COC remote execution script: backup `config.yaml`, update channel fields, set permission 644
4. Restart JiuwenSwarm service
### COC Task Status Query
Query COC execution status by UUID. Supports single query, verbose output, wait-for-completion, and file loading. See [references/verification-method.md](references/verification-method.md) for details.
| Status | Description |
|--------|-------------|
| READY | Ready |
| PROCESSING | Running, waiting required |
| FINISHED | Completed successfully |
| ABNORMAL | Execution abnormal, failed |
| CANCELED | Canceled |
---
## 核心命令
### Environment Setup
```bash
# Install dependencies
pip install -r requirements.txt
```
**Credential configuration (choose one):**
Option A — hcloud CLI config (recommended, no env vars needed):
```bash
hcloud configure set --cli-mode=AKSK --cli-region=cn-north-4 \
--cli-access-key=<your-ak> --cli-secret-key=<your-sk>
# For STS token: also add --cli-security-token=<your-token>
```
Option B — Environment variables:
```bash
export HUAWEICLOUD_SDK_AK=<your-access-key>
export HUAWEICLOUD_SDK_SK=<your-secret-key>
export HUAWEICLOUD_SDK_SECURITY_TOKEN=<your-security-token> # STS only
export HUAWEICLOUD_REGION="cn-north-4"
```
### Deployment Commands
```bash
# 1. Environment preparation
python scripts/prepare_env.py
# 2. Create instance (interactive confirmation)
python scripts/create_instance.py --name jiuwenSwarm-<timestamp> --flavor 2c-4g-50g --wait
# 3. Install dependencies
python scripts/install_deps.py --ip <public_ip>
# 4. Deploy service
python scripts/deploy_service.py --ip <public_ip>
# 5. Verify deployment
python scripts/verify_deployment.py --ip <public_ip>
# 6. Configure model
python scripts/config_model.py --ip <public_ip> --interactive
# 7. Configure message channel
python scripts/config_channel.py --channel xiaoyi --ip <public_ip> --interactive
# 8. Query COC task status
python scripts/query_coc_status.py --uuid <execute_uuid> --verbose
```
### COC Status Query Commands
```bash
# Query single task status
python scripts/query_coc_status.py --uuid <execute_uuid>
# Wait for task completion with custom timeout
python scripts/query_coc_status.py --uuid <execute_uuid> --wait --timeout 3600 --interval 30
# Load UUID from JSON file
python scripts/query_coc_status.py --from-file new_instance_info.json
```
---
## 参数确认
### ⚠️ Customer Confirmation Required
**Before executing any cloud resource creation operations, explicit customer consent must be obtained!**
| Operation | Confirmation Required |
|-----------|----------------------|
| Create new Flexus L instance | **Required** |
| Deploy application on existing instance | **Required** |
| Modify cloud resource configuration | **Required** |
**Confirmation Template**:
```
============================================================
⚠️ Cloud Resource Creation Confirmation
============================================================
Operation to be executed: Create new Flexus L instance
Instance Specifications:
- Name: {instance_name}
- Flavor: {flavor} (2c-4g-50g ~60 CNY/month / 2c-4g-70g ~100 CNY/month / 4c-8g-180g ~170 CNY/month)
- Region: {region}
- Estimated Cost: Calculated based on selected flavor
Resources will be created immediately after confirmation.
Please reply "confirm" or "agree" to continue.
============================================================
```
### User-Configurable Parameters
#### create_instance.py
| Parameter | Description | Default Value |
|-----------|-------------|---------------|
| --name | Instance name | jiuwenSwarm-{timestamp} |
| --flavor | Instance flavor (2c-4g-50g / 2c-4g-70g / 4c-8g-180g) | 2c-4g-50g |
| `--region` | Region (cn-north-4/cn-east-3/cn-south-1/cn-southwest-2). If not specified, interactive selection will be shown. | (Interactive) |
| `--wait` | Wait for creation completion (polls RMS every **30s** for instance status) | False |
| --timeout | Maximum time to wait in seconds when `--wait` is used | 600 (10 minutes) |
| --confirm | Skip confirmation prompt | False |
#### deploy_service.py
| Parameter | Description | Default Value |
|-----------|-------------|---------------|
| --ip | Instance public IP | Required |
| --wait | Wait for deployment completion | True |
| --timeout | Timeout in seconds | 1800 |
#### config_model.py
| Parameter | Description |
|-----------|-------------|
| --api-base | Model API URL |
| --api-key | Model API key |
| --model-name | Model name |
| --model-provider | Model provider |
| --ip | Instance public IP |
| --interactive | Interactive configuration |
#### config_channel.py
| Parameter | Description |
|-----------|-------------|
| --channel | Channel type (xiaoyi/feishu/dingtalk) |
| --ip | Instance public IP |
| --interactive | Interactive configuration |
#### query_coc_status.py
| Parameter | Description | Default Value |
|-----------|-------------|---------------|
| --uuid, -u | COC execution UUID | Required |
| --from-file, -f | Read UUID from JSON file | - |
| --key, -k | UUID key name in JSON file | execute_uuid |
| --verbose, -v | Show detailed output | False |
| --wait, -w | Wait for task completion | False |
| --timeout, -t | Wait timeout in seconds | 1800 |
| --interval, -i | Polling interval in seconds | 60 |
---
## Directory Structure
```
huawei-cloud-flexus-l-deploy-jiuwenswarm/
├── SKILL.md # Skill documentation
├── requirements.txt # Python dependency list
├── scripts/ # Phased deployment scripts
│ ├── utils.py # Utility functions
│ ├── prepare_env.py # Environment preparation
│ ├── create_instance.py # Create Flexus L instance
│ ├── install_deps.py # COC remote dependency installation
│ ├── deploy_service.py # COC remote service deployment
│ ├── verify_deployment.py # Verify deployment result
│ ├── config_model.py # Model configuration
│ ├── config_channel.py # Message channel configuration
│ └── query_coc_status.py # COC task status query
├── assets/ # Template files
│ ├── deploy_script_template.sh # Deployment script template
│ ├── jiuwenswarm.service.template # systemd service template
│ ├── config_template.yaml # Configuration template
│ └── env_template.env # Environment variable template
└── references/ # Reference documents
├── api-specs.md # API specifications
├── deployment-checklist.md # Deployment checklist
├── iam-policies.md # IAM policies
├── verification-method.md # Verification methods
├── acceptance-criteria.md # Acceptance criteria
└── troubleshooting.md # Troubleshooting guide
```
---
## Web UI Access
Web UI access requires two conditions:
1. **Service bound to 0.0.0.0** (configured via `.env` `FRONTEND_HOST=0.0.0.0`)
2. **Security group allows port 5173** (configured in Huawei Cloud Console)
#### .env Configuration (Service-side)
The `.env` file at `/root/.jiuwenswarm/config/.env` must use the correct variable names:
| .env Variable | Purpose | Required Value |
| :------------------- | :------------------- | :------------- |
| `FRONTEND_HOST` | Frontend HTTP bind | `0.0.0.0` |
| `FRONTEND_PORT` | Frontend HTTP port | `5173` |
| `WEB_HOST` | WebChannel bind | `0.0.0.0` |
| `AGENT_SERVER_HOST` | AgentServer bind | `0.0.0.0` |
| `GATEWAY_HOST` | Gateway bind | `0.0.0.0` |
#### Security Group Configuration (Cloud-side)
1. Login to [Flexus L Console](https://console.huaweicloud.com/smb/?/resource/list)
2. Find your JiuwenSwarm instance → instance details → Security/Network
3. Configure security group rules to open port 5173 (TCP inbound)
**Access URL**: `http://<instance_public_ip>:5173`
**Security Warning**: After opening the port, JiuwenSwarm Web interface will be accessible. Please evaluate security risks before enabling. It is recommended to open temporarily only when needed and close after use.
---
## Huawei Cloud Credential Configuration
**Credential priority: hcloud config file → environment variables.**
### Option 1: hcloud CLI Config File (Recommended)
Credentials are read from `~/.hcloud/config.json`. If encryption is enabled (`authEncrypt=true`), the script automatically disables it to read plaintext values.
```bash
# Permanent credentials
hcloud configure set --cli-mode=AKSK --cli-region=cn-north-4 \
--cli-access-key=<AK> --cli-secret-key=<SK>
# Temporary credentials (STS Token)
hcloud configure set --cli-mode=AKSK --cli-region=cn-north-4 \
--cli-access-key=<AK> --cli-secret-key=<SK> --cli-security-token=<TOKEN>
```
No environment variables needed — the script reads directly from the config file.
### Option 2: Environment Variables (Fallback)
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| `HUAWEICLOUD_SDK_AK` | Access Key (permanent or temporary) | Yes |
| `HUAWEICLOUD_SDK_SK` | Secret Key (permanent or temporary) | Yes |
| `HUAWEICLOUD_SDK_SECURITY_TOKEN` | Security Token (STS only) | No |
| `HUAWEICLOUD_REGION` | Huawei Cloud Region (default: cn-north-4) | No |
**Reference**: https://support.huaweicloud.com/iam_faq/iam_01_0620.html
---
## Key API Endpoints
| Service | Endpoint | Purpose |
|---------|----------|---------|
| Flexus L | https://hcss.{region}.myhuaweicloud.com/v1/light-instances | Create/query instances |
| IAM | KooCLI: `hcloud IAM KeystoneListProjects --cli-region=<region> [--name=<region>]` | Get Project ID / domain ID (global service, hcloud auto-resolves domain ID with valid credentials) |
| RMS | KooCLI: `hcloud RMS ListAllResources --cli-region=cn-north-4 --cli-domain-id=<domain_id> [--region_id=<region>] [--type=hcss.l-instance]` | Query resources (global service: always use unified cn-north-4 endpoint, filter by target region via `region_id` param) |
| COC | https://coc.myhuaweicloud.com/v1/job/scripts/{script_uuid} | Remote script execution (global service: SDK client always uses cn-north-4 endpoint, each target instance's region is carried in the request body) |
**Supported Regions**: cn-north-4 (North Beijing 4), cn-east-3 (East Shanghai 1), cn-south-1 (South Guangzhou), cn-southwest-2 (Southwest Guiyang 1)
**System Image**: Ubuntu 24.04 LTS
---
## Output Standards
### Success Output Template
```
============================================================
JiuwenSwarm COC Deployment - Complete
============================================================
Target Instance:
Name: {instance_name}
ID: {instance_id}
IP: {public_ip}
COC Execution:
Execute UUID: {execute_uuid}
Status: FINISHED
Deployment Result:
Web Access: http://{public_ip}:5173
Port Binding: 0.0.0.0:5173 (verified)
Submit Time: {submit_time}
NOTE: Huawei Cloud security group must allow inbound TCP 5173
for external web access. Configure at:
https://console.huaweicloud.com/smb/?/resource/list
============================================================
[SUCCESS] Deployment task completed!
============================================================
```
### Error Output Template
```
============================================================
[ERROR] Deployment Failed
============================================================
Error: {error_message}
Suggestions:
1. Check Huawei Cloud credentials
2. Verify instance status
3. Check deployment logs
============================================================
```
---
## 参考文档
The following reference documents provide detailed information for this skill:
| Document | Description |
|----------|-------------|
| [references/api-specs.md](references/api-specs.md) | API specifications for Huawei Cloud services (Flexus L, IAM, RMS, COC) |
| [references/iam-policies.md](references/iam-policies.md) | IAM permission policies and policy JSON for deployment |
| [references/deployment-checklist.md](references/deployment-checklist.md) | Pre/post deployment checklist for all phases |
| [references/verification-method.md](references/verification-method.md) | Verification methods and acceptance testing procedures |
| [references/acceptance-criteria.md](references/acceptance-criteria.md) | Acceptance criteria and sign-off requirements |
| [references/troubleshooting.md](references/troubleshooting.md) | Troubleshooting guide for common deployment issues |