huawei-cloud-flexus-l-server-hermes-deployment · git:20260605.1acee97 · 2026-06-05 · sha256 9d3aa5551ccf91d0

huawei-cloud-flexus-l-server-hermes-deployment git:20260605.1acee97A

Immutable. This exact content is served forever at /api/v1/blob/9d3aa5551ccf91d0.

---
name: huawei-cloud-flexus-l-server-hermes-deployment
description: |
  One-click deployment tool for Hermes on Huawei Cloud Flexus L instances. Supports one-click deployment, ModelArts large model configuration, and robot channel configuration. This skill provides a complete workflow for deploying and configuring Hermes AI Agent platform.
  Trigger words: "Deploy Hermes", "Install Hermes", "Configure Model", "Configure Channel", "部署Hermes", "安装Hermes", "配置大模型", "配置机器人通道"
tags:
  - Hermes Deployment
  - Huawei Cloud Lightweight Server Deployment
  - Flexus L Instance Deployment
  - AI Agent
  - Model Configuration
  - Channel Configuration
metadata: {"hermes": {"version": "1.0.0", "requires": {"bins": ["uv", "python3"]}, "install": [{"kind": "uv", "command": "uv sync --index-url https://repo.huaweicloud.com/repository/pypi/simple"}]}}
---

<!-- 
 ⚠️ 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 commands
 5. AK/SK/Token MUST be passed via environment variables, NEVER appear in conversation
 -->

# Hermes One-Click Deployment Skill

## Overview

This skill supports one-click deployment of the Hermes AI Agent platform to Huawei Cloud Flexus L instances. It provides a complete workflow including:

- Automated instance creation with optimized configurations
- ModelArts large model configuration via COC (Cloud Operations Center)
- Robot channel configuration (Feishu, WeCom, DingTalk, etc.) via COC
- Gateway management for deployed instances

This skill supports both interactive mode (step-by-step prompts) and non-interactive mode (scripted operations), suitable for manual and automated deployment scenarios.

## Prerequisites

### Account Requirements

- Valid Huawei Cloud account with sufficient permissions
- Huawei Cloud temporary credentials: Temporary AK/SK + security_token
- Required permissions:
  - Creating Flexus L instances
  - Accessing COC (Cloud Operations Center) services

**Credential Acquisition Methods:**

This skill supports obtaining Huawei Cloud temporary credentials through the following methods:
1. **Environment Variables**
   - `HW_ACCESS_KEY`: Temporary Access Key AK
   - `HW_SECRET_KEY`: Temporary Access Key SK
   - `HW_SECURITY_TOKEN`: Security token for temporary credentials

### Architecture Diagram

This skill is built on multiple Huawei Cloud services, involving the following cloud services and components:

```
User/Agent      ──────▶│   Flexus L Instance   │──────▶│   Hermes App         │──────▶│ Model Config     │ ──────▶│  Channel Config     │ 
(Skill caller)           (Target Host)                 (AI Agent Platform)             (ModelArts API)           (Feishu/Wecom)            
```

**Component Description**:
- **User/Agent**: Skill caller that triggers Hermes deployment operations via natural language or API
- **Flexus L Instance**: Huawei Cloud Elastic Cloud Server, serving as the target host for Hermes deployment
- **Hermes App**: AI Agent platform running on the Flexus L instance
- **Model Config**: ModelArts large model configuration (API_BASE, API_KEY, MODEL_NAME)
- **Channel Config**: Robot channel configuration (Feishu, WeCom)
---



## Core Commands

### Deployment Commands

```bash
# Deploy using temporary AK/SK and security-token (custom name, if not specified, auto-generates timestamp format: hermes-20260605143022)
python scripts/caller.py deploy --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --name hermes-{timestamp} --region cn-north-4

# Deploy in interactive mode (if not specified, auto-generates timestamp format: hermes-20260605143022)
python scripts/caller.py deploy
```

**Instance Name Description**:
- Can customize instance name via `--name` parameter (e.g., `hermes-prod-01`, `hermes-dev`, etc.)
- If name is not specified, auto-generates timestamp format: `hermes-YYYYMMDDHHMMSS` (e.g., `hermes-20260605143022`)

### Model Configuration Commands

```bash
# Configure model using temporary AK/SK and security-token
python scripts/caller.py maas --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --api-key <api_key> --model-name deepseek-v3.2

# Configure model in interactive mode
python scripts/caller.py maas
```

### Channel Configuration Commands

```bash
# Configure Feishu channel using temporary AK/SK and security-token
python scripts/caller.py channel --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --bot-platform feishu --feishu-app-id <app_id> --feishu-app-secret <app_secret>

# Configure WeCom channel using temporary AK/SK and security-token
python scripts/caller.py channel --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --bot-platform wecom --wecom-bot-id <bot_id> --wecom-secret <secret>

# Configure channel in interactive mode
python scripts/caller.py channel
```

### Gateway Management Commands

```bash
# Restart gateway using temporary AK/SK and security-token
python scripts/caller.py gateway --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4

# Restart gateway in interactive mode
python scripts/caller.py gateway
```

### Query Execution Result Commands

```bash
# Query execution result using temporary AK/SK and security-token
python scripts/caller.py query --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --execute-uuid SCT2023083109562601af694bf
```

**Parameters**:
- `--execute-uuid`: Script execution UUID, format like `SCTxxxxxxxxxxxxxxxbf`

**Status Description**:
- `FINISHED`: Execution successful
- `ABNORMAL`: Execution failed
- `RUNNING`: Executing

## Parameter Reference

### Global Parameters

| Parameter | Description | Required | Default Value |
|-----------|-------------|----------|---------------|
| `--ak` | Temporary Access Key AK | Yes | - |
| `--sk` | Temporary Access Key SK | Yes | - |
| `--security-token` | Security token for temporary credentials | Yes | - |
| `--non-interactive` | Run in non-interactive mode | No | false |

### Deploy Command Parameters

| Parameter | Description | Required | Default Value |
|-----------|-------------|----------|---------------|
| `--name` | Instance name | No | Auto-generated |
| `--region` | Target region | No | cn-north-4 |

### MaaS Command Parameters

| Parameter | Description | Required | Default Value |
|-----------|-------------|----------|---------------|
| `--resource-id` | L instance resource ID | Yes | - |
| `--region-id` | COC service region | No | cn-north-4 |
| `--api-key` | ModelArts API Key | Yes | - |
| `--model-name` | Model name | Yes | - |
| `--api-base-url` | API base URL | No | https://api.modelarts-maas.com/v2 |
| `--timeout` | Execution timeout (seconds) | No | 600 |
| `--execute-user` | Execution user | No | root |

### Channel Command Parameters

| Parameter | Description | Required | Default Value |
|-----------|-------------|----------|---------------|
| `--resource-id` | L instance resource ID | Yes | - |
| `--region-id` | COC service region | No | cn-north-4 |
| `--bot-platform` | Bot platform: feishu or wecom | Yes | - |
| `--feishu-app-id` | Feishu App ID | Conditional | - |
| `--feishu-app-secret` | Feishu App Secret | Conditional | - |
| `--wecom-bot-id` | WeCom Bot ID | Conditional | - |
| `--wecom-secret` | WeCom Secret | Conditional | - |
| `--timeout` | Execution timeout (seconds) | No | 600 |
| `--execute-user` | Execution user | No | root |

### Gateway Command Parameters

| Parameter | Description | Required | Default Value |
|-----------|-------------|----------|---------------|
| `--resource-id` | L instance resource ID | Yes | - |
| `--region-id` | COC service region | No | cn-north-4 |
| `--timeout` | Execution timeout (seconds) | No | 120 |
| `--execute-user` | Execution user | No | root |

## Workflow

The skill follows these workflow steps:

1. **Deploy Hermes**: Create and configure a Flexus L instance with Hermes AI Agent platform
2. **Configure Model**: Set up ModelArts large model via COC (Cloud Operations Center)
3. **Configure Channel**: Set up robot channels (Feishu, WeCom) via COC
4. **Manage Gateway**: Restart gateway service when needed

### Interactive Mode (Menu)

Run the main entry point to access the interactive menu:

```bash
python scripts/caller.py
```

This will display a menu for selecting operations.

## Output Format

### Deploy Command Output

```json
{
  "status": "success",
  "instance_id": "abc12345-6789-0abc-def1-23456789abc0",
  "instance_name": "my-hermes",
  "region": "cn-north-4",
  "spec": "hf.small.1.linux",
  "created_at": "2024-01-15T10:30:00Z"
}
```

### MaaS Command Output

```json
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "model_name": "deepseek-v3.2",
  "api_base_url": "https://api.modelarts-maas.com/v2",
  "executed_at": "2024-01-15T10:35:00Z"
}
```

### Channel Command Output

```json
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "bot_platform": "feishu",
  "channel_id": "channel_123",
  "executed_at": "2024-01-15T10:40:00Z"
}
```

### Gateway Command Output

```json
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "action": "restart",
  "message": "Hermes gateway restarted successfully"
}
```

## Validation Methods

### 1. Deployment Validation

```bash
# Check instance status
python scripts/caller.py deploy --ak <ak> --sk <sk> --name my-hermes --region cn-north-4 --non-interactive
# Expected output: "Instance created successfully" with instance_id
```

### 2. Model Configuration Validation

```bash
# Check model configuration
python scripts/caller.py maas --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --api-key <key> --model-name deepseek-v3.2 --non-interactive
# Expected output: "Model configuration updated successfully"
```

### 3. Channel Configuration Validation

```bash
# Check channel configuration
python scripts/caller.py channel --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --bot-platform feishu --feishu-app-id <id> --feishu-app-secret <secret> --non-interactive
# Expected output: "Channel configuration updated successfully"
```

### 4. Gateway Validation

```bash
# Check gateway restart
python scripts/caller.py gateway --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --non-interactive
# Expected output: "Hermes gateway restarted successfully"
```

## Best Practices

### 1. Credential Management

- **Temporary credentials**: Use temporary AK/SK + security_token for authentication, providing higher security
  - Temporary credentials are issued by STS service with expiration time limits
  - Use `--security-token` parameter to pass the security token
  - Supports environment variables, command line parameters, and interactive input methods
- Use IAM roles with minimal permissions for production environments
- Rotate credentials regularly according to security policies

### 2. Region Selection

- Choose the region closest to your users for better performance
- Consider regional compliance requirements when deploying
- Use `cn-north-4` as default for China mainland deployments
- Hermes deployment only supports: cn-north-4, cn-east-3, cn-south-1, cn-southwest-2

### 3. Instance Management

- Monitor instance health via Huawei Cloud Console
- Set up auto-scaling policies for high availability
- Configure backup policies for data persistence

### 4. Model Configuration

- Test models in staging environment before production
- Have fallback models configured for failover scenarios
- After initial deployment, the default model configuration is **not usable**. **You must configure the model before using Hermes**.

### 5. Channel Configuration

- Use dedicated bot accounts for production
- Monitor channel message throughput
- Configure rate limits to prevent abuse
- Currently only **Feishu** and **WeCom** bot platforms are supported. **Only one bot per platform type is supported**.

## Notes

### General Notes

1. **Instance Creation Time**: It may take **5-10 minutes** for the instance to be fully provisioned
2. **COC Script Execution**: Model and channel configurations are executed remotely via Huawei Cloud COC (Cloud Operations Center)
3. **Security Group**: Configure security group rules in Huawei Cloud Console if external access is needed
4. **Cost**: Using Huawei Cloud resources will incur costs. Ensure your account has sufficient balance.
5. **Subsequent Steps**: When continuing with subsequent steps (configuring models, channels), **there is no need to wait for instance creation to complete**. The system handles instance status automatically.

### Region Notes

- **Fixed Endpoint**: When creating a Hermes L Instance, requests are sent to the fixed endpoint `hcss.cn-north-4.myhuaweicloud.com`. The region parameter only selects instance specifications.
- **Guiyang region** (`cn-southwest-2`) uses spec `ahf.small.1.linux`
- **Other regions** (Beijing/Shanghai/Guangzhou) use spec `hf.small.1.linux`
- **Status Codes**: 200, 201, and 202 all indicate success

### COC Region Concepts

COC involves two different region concepts:

**1. COC Service Region (--region-id)**: The region where COC API service is located (cn-north-4, ap-southeast-3, eu-west-101)

**2. Target Instance Region**: The region where the L instance is located (can be any Huawei Cloud region worldwide)

These can be different - e.g., COC service in cn-north-4 can execute scripts on instances in ap-southeast-1 (Hong Kong).

### Troubleshooting

- **Credential Issues**: Ensure `--ak` and `--sk` parameters are provided, or use interactive mode
- **Region Not Supported**: Use supported region IDs or Chinese names in interactive mode
- **Instance Creation Failed**: Verify account balance, instance type validity, and network connectivity

## Reference Documents

- `scripts/caller.py` - Main CLI entry point
- `scripts/deploy.py` - Hermes deployment module
- `scripts/models.py` - ModelArts model configuration
- `scripts/channels.py` - Robot channel configuration
- `scripts/lib.py` - Core business logic (instance creation, model/channel installation)
- `scripts/utils.py` - Utility functions (credentials setup, input prompts)