Rename openclaw to hermes across documentation and workflows
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Has been cancelled
Deploy to Testnet / deploy-testnet (push) Has been cancelled
Documentation Validation / validate-docs (push) Has been cancelled
Documentation Validation / validate-policies-strict (push) Has been cancelled
Multi-Node Stress Testing / stress-test (push) Has been cancelled
Node Failover Simulation / failover-test (push) Has been cancelled
Integration Tests / test-service-integration (push) Has been cancelled
Security Scanning / security-scan (push) Has been cancelled
Python Tests / test-python (push) Has been cancelled
CLI Tests / test-cli (push) Has been cancelled
Blockchain Synchronization Verification / sync-verification (push) Successful in 11s
Contract Performance Benchmarks / benchmark-gas-usage (push) Successful in 1m36s
Contract Performance Benchmarks / benchmark-execution-time (push) Successful in 1m24s
Contract Performance Benchmarks / benchmark-throughput (push) Successful in 1m25s
Cross-Chain Functionality Tests / test-cross-chain-sync (push) Successful in 2s
Cross-Chain Functionality Tests / test-cross-chain-transactions (push) Successful in 5s
Cross-Chain Functionality Tests / test-cross-chain-bridge (push) Has been skipped
Cross-Chain Functionality Tests / test-multi-chain-consensus (push) Successful in 3s
Cross-Chain Functionality Tests / aggregate-results (push) Has been skipped
Multi-Chain Island Architecture Tests / test-multi-chain-island (push) Successful in 2s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 3s
P2P Network Verification / p2p-verification (push) Successful in 2s
Smart Contract Tests / test-solidity (map[name:aitbc-contracts path:contracts]) (push) Failing after 1m28s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 21s
Smart Contract Tests / test-foundry (push) Failing after 20s
Smart Contract Tests / lint-solidity (push) Successful in 30s
Smart Contract Tests / deploy-contracts (push) Successful in 1m40s
Systemd Sync / sync-systemd (push) Successful in 26s
Contract Performance Benchmarks / compare-benchmarks (push) Successful in 4s

- Update workflow paths from docs/openclaw to docs/hermes
- Rename skill prefixes from openclaw-* to hermes-*
- Update agent skill references in refactoring and analysis docs
- Rename OPENCLAW_AITBC_MASTERY_PLAN.md to reflect hermes branding
- Update CLI examples and command references throughout documentation
This commit is contained in:
aitbc
2026-05-07 11:42:06 +02:00
parent 151aae1916
commit 852f2e5a8a
307 changed files with 3333 additions and 2837 deletions

View File

@@ -25,7 +25,7 @@ The AITBC CLI provides 27 commands for comprehensive blockchain management:
- `ai-ops` - AI compute operations
- `mining` - Mining operations and status
- `agent` - AI agent workflow and execution management
- `openclaw` - OpenClaw agent ecosystem operations
- `hermes` - Hermes agent ecosystem operations
- `workflow` - Workflow automation and management
- `resource` - Resource management and optimization
- `system` - System status and information
@@ -52,8 +52,8 @@ aitbc list
**Output:**
```
Wallets:
openclaw-backup: ait1cebd266469be5f85b5f0052f1556b5d708b42de9
openclaw-trainee: ait10a252a31c79939c689bf392e960afc7861df5ee9
hermes-backup: ait1cebd266469be5f85b5f0052f1556b5d708b42de9
hermes-trainee: ait10a252a31c79939c689bf392e960afc7861df5ee9
```
### 2. Get Balance
@@ -66,12 +66,12 @@ aitbc balance --name <wallet-name>
**Examples:**
```bash
# Get balance for specific wallet
aitbc balance --name openclaw-backup
aitbc balance --name hermes-backup
```
**Output:**
```
Wallet: openclaw-backup
Wallet: hermes-backup
Address: ait1cebd266469be5f85b5f0052f1556b5d708b42de9
Balance: 0 AIT
Nonce: 0

View File

@@ -1292,8 +1292,8 @@ def agent_operations(action: str, **kwargs) -> Optional[Dict]:
return None
def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
"""Handle OpenClaw agent ecosystem operations"""
def hermes_training_operations(action: str, **kwargs) -> Optional[Dict]:
"""Handle hermes agent ecosystem operations"""
try:
if action == "deploy":
return {
@@ -1301,7 +1301,7 @@ def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
"deployment_id": f"deploy_{int(time.time())}",
"environment": kwargs.get("environment", "dev"),
"status": "Deploying",
"agent_id": f"openclaw_{int(time.time())}",
"agent_id": f"hermes_{int(time.time())}",
"estimated_deployment_time": "2-3 minutes",
"deployment_cost": "50 AIT"
}
@@ -1325,9 +1325,9 @@ def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
"action": "market",
"market_action": "list",
"agents": [
{"id": "openclaw_001", "name": "Data Analysis Pro", "price": 100, "rating": 4.8},
{"id": "openclaw_002", "name": "Trading Expert", "price": 250, "rating": 4.6},
{"id": "openclaw_003", "name": "Content Creator", "price": 75, "rating": 4.9}
{"id": "hermes_001", "name": "Data Analysis Pro", "price": 100, "rating": 4.8},
{"id": "hermes_002", "name": "Trading Expert", "price": 250, "rating": 4.6},
{"id": "hermes_003", "name": "Content Creator", "price": 75, "rating": 4.9}
],
"total_available": 3
}
@@ -1373,17 +1373,17 @@ def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
os.makedirs(log_dir, exist_ok=True)
log_file = f"{log_dir}/agent_{kwargs.get('agent_id')}_{stage}_{int(time.time())}.log"
# Execute training operations with actual OpenClaw calls
# Execute training operations with actual hermes calls
operations = training_config.get('training_data', {}).get('operations', [])
completed_ops = 0
failed_ops = 0
# OpenClaw service endpoints
# hermes service endpoints
agent_coordinator_url = "http://localhost:9001"
exchange_url = "http://localhost:8001"
blockchain_rpc_url = "http://localhost:8006"
# Write training log with actual OpenClaw calls
# Write training log with actual hermes calls
for i, op in enumerate(operations, 1):
operation = op.get('operation')
parameters = op.get('parameters', {})
@@ -1399,16 +1399,16 @@ def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
}
}
# Execute training via OpenClaw agent with allowlist enabled
# Execute training via hermes agent with allowlist enabled
start_time = time.time()
try:
# Build prompt for OpenClaw agent to execute AITBC command
# Build prompt for hermes agent to execute AITBC command
prompt_message = f"Execute AITBC CLI command: {operation}"
if parameters:
prompt_message += f" with parameters: {json.dumps(parameters)}"
# Use OpenClaw agent with allowlist (AITBC CLI now allowed)
cmd = ["openclaw", "agent", "--message", prompt_message, "--agent", "main"]
# Use hermes agent with allowlist (AITBC CLI now allowed)
cmd = ["hermes", "agent", "--message", prompt_message, "--agent", "main"]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
@@ -1551,7 +1551,7 @@ def openclaw_training_operations(action: str, **kwargs) -> Optional[Dict]:
return {"action": action, "status": "Not implemented yet"}
except Exception as e:
print(f"Error in OpenClaw operations: {e}")
print(f"Error in hermes operations: {e}")
return None
@@ -2132,7 +2132,7 @@ def legacy_main():
mining_parser.add_argument("--wallet", help="Wallet name for mining rewards")
mining_parser.add_argument("--rpc-url", default=DEFAULT_RPC_URL, help="RPC URL")
# Agent management commands (OpenClaw agent focused)
# Agent management commands (hermes agent focused)
agent_parser = subparsers.add_parser("agent", help="AI agent workflow and execution management")
agent_subparsers = agent_parser.add_subparsers(dest="agent_action", help="Agent actions")
@@ -2162,27 +2162,27 @@ def legacy_main():
agent_list_parser = agent_subparsers.add_parser("list", help="List available agent workflows")
agent_list_parser.add_argument("--status", choices=["active", "completed", "failed"], help="Filter by status")
# OpenClaw specific commands
openclaw_parser = subparsers.add_parser("openclaw", help="OpenClaw agent ecosystem operations")
openclaw_subparsers = openclaw_parser.add_subparsers(dest="openclaw_action", help="OpenClaw actions")
# hermes specific commands
hermes_parser = subparsers.add_parser("hermes", help="hermes agent ecosystem operations")
hermes_subparsers = hermes_parser.add_subparsers(dest="hermes_action", help="hermes actions")
# OpenClaw deploy
openclaw_deploy_parser = openclaw_subparsers.add_parser("deploy", help="Deploy OpenClaw agent")
openclaw_deploy_parser.add_argument("--agent-file", required=True, help="Agent configuration file")
openclaw_deploy_parser.add_argument("--wallet", required=True, help="Wallet for deployment costs")
openclaw_deploy_parser.add_argument("--environment", choices=["dev", "staging", "prod"], default="dev", help="Deployment environment")
# hermes deploy
hermes_deploy_parser = hermes_subparsers.add_parser("deploy", help="Deploy hermes agent")
hermes_deploy_parser.add_argument("--agent-file", required=True, help="Agent configuration file")
hermes_deploy_parser.add_argument("--wallet", required=True, help="Wallet for deployment costs")
hermes_deploy_parser.add_argument("--environment", choices=["dev", "staging", "prod"], default="dev", help="Deployment environment")
# OpenClaw monitor
openclaw_monitor_parser = openclaw_subparsers.add_parser("monitor", help="Monitor OpenClaw agent performance")
openclaw_monitor_parser.add_argument("--agent-id", help="Specific agent ID to monitor")
openclaw_monitor_parser.add_argument("--metrics", choices=["performance", "cost", "errors", "all"], default="all", help="Metrics to show")
# hermes monitor
hermes_monitor_parser = hermes_subparsers.add_parser("monitor", help="Monitor hermes agent performance")
hermes_monitor_parser.add_argument("--agent-id", help="Specific agent ID to monitor")
hermes_monitor_parser.add_argument("--metrics", choices=["performance", "cost", "errors", "all"], default="all", help="Metrics to show")
# OpenClaw market
openclaw_market_parser = openclaw_subparsers.add_parser("market", help="OpenClaw agent marketplace")
openclaw_market_parser.add_argument("--action", choices=["list", "publish", "purchase", "evaluate"],
# hermes market
hermes_market_parser = hermes_subparsers.add_parser("market", help="hermes agent marketplace")
hermes_market_parser.add_argument("--action", choices=["list", "publish", "purchase", "evaluate"],
required=True, help="Market action")
openclaw_market_parser.add_argument("--agent-id", help="Agent ID for market operations")
openclaw_market_parser.add_argument("--price", type=float, help="Price for market operations")
hermes_market_parser.add_argument("--agent-id", help="Agent ID for market operations")
hermes_market_parser.add_argument("--price", type=float, help="Price for market operations")
# Workflow automation commands
workflow_parser = subparsers.add_parser("workflow", help="Workflow automation and management")
@@ -2600,7 +2600,7 @@ def legacy_main():
else:
sys.exit(1)
elif args.command == "openclaw":
elif args.command == "hermes":
# Only pass arguments that are defined for this subcommand
kwargs = {}
if hasattr(args, 'agent_file') and args.agent_file:
@@ -2614,14 +2614,14 @@ def legacy_main():
if hasattr(args, 'metrics') and args.metrics:
kwargs['metrics'] = args.metrics
# Handle the market action parameter specifically
if hasattr(args, 'action') and args.action and args.openclaw_action == 'market':
if hasattr(args, 'action') and args.action and args.hermes_action == 'market':
kwargs['market_action'] = args.action
if hasattr(args, 'price') and args.price:
kwargs['price'] = args.price
result = openclaw_operations(args.openclaw_action, **kwargs)
result = hermes_operations(args.hermes_action, **kwargs)
if result:
print(f"OpenClaw {result['action']}:")
print(f"hermes {result['action']}:")
for key, value in result.items():
if key != "action":
if isinstance(value, list):
@@ -2989,13 +2989,13 @@ def legacy_main():
print("Falling back to mock balances:")
print(" genesis: 10000 AIT")
print(" aitbc1: 5000 AIT")
print(" openclaw-trainee: 100 AIT")
print(" hermes-trainee: 100 AIT")
except Exception as e:
print(f"Warning: Failed to query wallet daemon: {e}")
print("Falling back to mock balances:")
print(" genesis: 10000 AIT")
print(" aitbc1: 5000 AIT")
print(" openclaw-trainee: 100 AIT")
print(" hermes-trainee: 100 AIT")
elif args.name:
try:
http_client = AITBCHTTPClient(base_url=daemon_url, timeout=5)
@@ -3045,7 +3045,7 @@ def legacy_main():
print("All wallet balances:")
print(" genesis: 10000 AIT")
print(" aitbc1: 5000 AIT")
print(" openclaw-trainee: 100 AIT")
print(" hermes-trainee: 100 AIT")
elif args.command == "mining":
# Handle flag-based commands

View File

@@ -31,7 +31,7 @@ class CLIConfig(BaseAITBCConfig):
governance_service_url: str = Field(default="http://localhost:8105", description="Governance Service URL")
ai_service_url: str = Field(default="http://localhost:8106", description="AI Service URL")
monitoring_service_url: str = Field(default="http://localhost:8107", description="Monitoring Service URL")
openclaw_service_url: str = Field(default="http://localhost:8108", description="OpenClaw Service URL")
hermes_service_url: str = Field(default="http://localhost:8108", description="hermes Service URL")
plugin_service_url: str = Field(default="http://localhost:8109", description="Plugin Service URL")
wallet_daemon_url: str = Field(default="http://localhost:8003", description="Wallet daemon URL")
wallet_url: str = Field(default="http://localhost:8003", description="Wallet daemon URL (alias for compatibility)")

View File

@@ -65,7 +65,7 @@ cli/
13. **agent** - Agent operations
14. **multimodal** - Multimodal AI operations
15. **optimize** - Optimization operations
16. **openclaw** - OpenClaw operations
16. **hermes** - hermes operations
17. **advanced** - Advanced marketplace operations
18. **swarm** - Swarm operations
19. **plugin** - Plugin management

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
OpenClaw DAO CLI Commands
Hermes DAO CLI Commands
Provides command-line interface for DAO governance operations
"""
@@ -14,7 +14,7 @@ from utils.config import load_config
@click.group()
def dao():
"""OpenClaw DAO governance commands"""
"""Hermes DAO governance commands"""
pass
@dao.command()
@@ -22,7 +22,7 @@ def dao():
@click.option('--timelock-address', required=True, help='Timelock controller address')
@click.option('--network', default='mainnet', help='Blockchain network')
def deploy(token_address: str, timelock_address: str, network: str):
"""Deploy OpenClaw DAO contract"""
"""Deploy Hermes DAO contract"""
try:
w3 = get_web3_connection(network)
config = load_config()
@@ -60,7 +60,7 @@ def deploy(token_address: str, timelock_address: str, network: str):
# Wait for confirmation
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
click.echo(f"OpenClaw DAO deployed at: {receipt.contractAddress}")
click.echo(f"Hermes DAO deployed at: {receipt.contractAddress}")
click.echo(f"📦 Transaction hash: {tx_hash.hex()}")
except Exception as e:
@@ -87,7 +87,7 @@ def propose(dao_address: str, targets: str, values: str, calldatas: str,
calldata_list = calldatas.split(',')
# Get contract
dao_contract = get_contract(dao_address, "OpenClawDAO")
dao_contract = get_contract(dao_address, "HermesDAO")
# Build transaction
tx = dao_contract.functions.propose(
@@ -137,7 +137,7 @@ def vote(dao_address: str, proposal_id: int):
config = load_config()
# Get contract
dao_contract = get_contract(dao_address, "OpenClawDAO")
dao_contract = get_contract(dao_address, "HermesDAO")
# Check proposal state
state = dao_contract.functions.state(proposal_id).call()
@@ -196,7 +196,7 @@ def execute(dao_address: str, proposal_id: int):
config = load_config()
# Get contract
dao_contract = get_contract(dao_address, "OpenClawDAO")
dao_contract = get_contract(dao_address, "HermesDAO")
# Check proposal state
state = dao_contract.functions.state(proposal_id).call()
@@ -228,7 +228,7 @@ def list_proposals(dao_address: str):
"""List all proposals"""
try:
w3 = get_web3_connection()
dao_contract = get_contract(dao_address, "OpenClawDAO")
dao_contract = get_contract(dao_address, "HermesDAO")
# Get proposal count
proposal_count = dao_contract.functions.proposalCount().call()
@@ -277,7 +277,7 @@ def status(dao_address: str):
"""Show DAO status and statistics"""
try:
w3 = get_web3_connection()
dao_contract = get_contract(dao_address, "OpenClawDAO")
dao_contract = get_contract(dao_address, "HermesDAO")
# Get DAO info
token_address = dao_contract.functions.governanceToken().call()
@@ -289,7 +289,7 @@ def status(dao_address: str):
# Get active proposals
active_proposals = dao_contract.functions.getActiveProposals().call()
click.echo("🏛️ OpenClaw DAO Status")
click.echo("🏛️ Hermes DAO Status")
click.echo("=" * 40)
click.echo(f"📊 Total Supply: {total_supply / 1e18:.2f} tokens")
click.echo(f"📋 Total Proposals: {proposal_count}")

View File

@@ -1,4 +1,4 @@
"""OpenClaw integration commands for AITBC CLI"""
"""hermes integration commands for AITBC CLI"""
import click
import httpx
@@ -12,8 +12,8 @@ from utils import output, error, success, warning
@click.group()
def openclaw():
"""OpenClaw integration with edge computing deployment"""
def hermes():
"""hermes integration with edge computing deployment"""
pass
@@ -23,7 +23,7 @@ def deploy():
pass
openclaw.add_command(deploy)
hermes.add_command(deploy)
@deploy.command()
@@ -36,7 +36,7 @@ openclaw.add_command(deploy)
@click.pass_context
def deploy_agent(ctx, agent_id: str, region: str, instances: int, instance_type: str,
edge_locations: Optional[str], auto_scale: bool):
"""Deploy agent to OpenClaw network"""
"""Deploy agent to hermes network"""
config = ctx.obj['config']
deployment_data = {
@@ -53,7 +53,7 @@ def deploy_agent(ctx, agent_id: str, region: str, instances: int, instance_type:
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/deploy",
f"{config.coordinator_url}/hermes/deploy",
headers={"X-Api-Key": config.api_key or ""},
json=deployment_data
)
@@ -92,7 +92,7 @@ def scale(ctx, deployment_id: str, instances: int, auto_scale: bool, min_instanc
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/deployments/{deployment_id}/scale",
f"{config.coordinator_url}/hermes/deployments/{deployment_id}/scale",
headers={"X-Api-Key": config.api_key or ""},
json=scale_data
)
@@ -126,7 +126,7 @@ def optimize(ctx, deployment_id: str, objective: str):
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/deployments/{deployment_id}/optimize",
f"{config.coordinator_url}/hermes/deployments/{deployment_id}/optimize",
headers={"X-Api-Key": config.api_key or ""},
json=optimization_data
)
@@ -147,11 +147,11 @@ def optimize(ctx, deployment_id: str, objective: str):
@click.group()
def monitor():
"""OpenClaw monitoring operations"""
"""hermes monitoring operations"""
pass
openclaw.add_command(monitor)
hermes.add_command(monitor)
@monitor.command()
@@ -161,7 +161,7 @@ openclaw.add_command(monitor)
@click.option("--interval", default=10, help="Update interval for real-time monitoring")
@click.pass_context
def monitor_metrics(ctx, deployment_id: str, metrics: str, real_time: bool, interval: int):
"""Monitor OpenClaw agent performance"""
"""Monitor hermes agent performance"""
config = ctx.obj['config']
params = {"metrics": [m.strip() for m in metrics.split(',')]}
@@ -170,7 +170,7 @@ def monitor_metrics(ctx, deployment_id: str, metrics: str, real_time: bool, inte
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/deployments/{deployment_id}/metrics",
f"{config.coordinator_url}/hermes/deployments/{deployment_id}/metrics",
headers={"X-Api-Key": config.api_key or ""},
params=params
)
@@ -220,7 +220,7 @@ def status(ctx, deployment_id: str):
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/deployments/{deployment_id}/status",
f"{config.coordinator_url}/hermes/deployments/{deployment_id}/status",
headers={"X-Api-Key": config.api_key or ""}
)
@@ -241,7 +241,7 @@ def edge():
pass
openclaw.add_command(edge)
hermes.add_command(edge)
@edge.command()
@@ -266,7 +266,7 @@ def deploy(ctx, agent_id: str, locations: str, strategy: str, replicas: int):
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/edge/deploy",
f"{config.coordinator_url}/hermes/edge/deploy",
headers={"X-Api-Key": config.api_key or ""},
json=edge_data
)
@@ -299,7 +299,7 @@ def resources(ctx, location: Optional[str]):
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/edge/resources",
f"{config.coordinator_url}/hermes/edge/resources",
headers={"X-Api-Key": config.api_key or ""},
params=params
)
@@ -337,7 +337,7 @@ def optimize(ctx, deployment_id: str, latency_target: Optional[int],
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/edge/deployments/{deployment_id}/optimize",
f"{config.coordinator_url}/hermes/edge/deployments/{deployment_id}/optimize",
headers={"X-Api-Key": config.api_key or ""},
json=optimization_data
)
@@ -371,7 +371,7 @@ def compliance(ctx, deployment_id: str, standards: Optional[str]):
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/edge/deployments/{deployment_id}/compliance",
f"{config.coordinator_url}/hermes/edge/deployments/{deployment_id}/compliance",
headers={"X-Api-Key": config.api_key or ""},
params=params
)
@@ -393,7 +393,7 @@ def routing():
pass
openclaw.add_command(routing)
hermes.add_command(routing)
@routing.command()
@@ -414,7 +414,7 @@ def optimize(ctx, deployment_id: str, algorithm: str, weights: Optional[str]):
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/routing/deployments/{deployment_id}/optimize",
f"{config.coordinator_url}/hermes/routing/deployments/{deployment_id}/optimize",
headers={"X-Api-Key": config.api_key or ""},
json=routing_data
)
@@ -443,7 +443,7 @@ def status(ctx, deployment_id: str):
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/routing/deployments/{deployment_id}/status",
f"{config.coordinator_url}/hermes/routing/deployments/{deployment_id}/status",
headers={"X-Api-Key": config.api_key or ""}
)
@@ -460,11 +460,11 @@ def status(ctx, deployment_id: str):
@click.group()
def ecosystem():
"""OpenClaw ecosystem development"""
"""hermes ecosystem development"""
pass
openclaw.add_command(ecosystem)
hermes.add_command(ecosystem)
@click.group()
@@ -473,7 +473,7 @@ def train():
pass
openclaw.add_command(train)
hermes.add_command(train)
@ecosystem.command()
@@ -485,7 +485,7 @@ openclaw.add_command(train)
@click.option("--package", type=click.File('rb'), help="Solution package file")
@click.pass_context
def create(ctx, name: str, type: str, description: str, package):
"""Create OpenClaw ecosystem solution"""
"""Create hermes ecosystem solution"""
config = ctx.obj['config']
solution_data = {
@@ -501,7 +501,7 @@ def create(ctx, name: str, type: str, description: str, package):
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/ecosystem/solutions",
f"{config.coordinator_url}/hermes/ecosystem/solutions",
headers={"X-Api-Key": config.api_key or ""},
data=solution_data,
files=files
@@ -509,7 +509,7 @@ def create(ctx, name: str, type: str, description: str, package):
if response.status_code == 201:
solution = response.json()
success(f"OpenClaw solution created: {solution['id']}")
success(f"hermes solution created: {solution['id']}")
output(solution, ctx.obj['output_format'])
else:
error(f"Failed to create solution: {response.status_code}")
@@ -527,7 +527,7 @@ def create(ctx, name: str, type: str, description: str, package):
@click.option("--limit", default=20, help="Number of solutions to list")
@click.pass_context
def list(ctx, type: Optional[str], category: Optional[str], limit: int):
"""List OpenClaw ecosystem solutions"""
"""List hermes ecosystem solutions"""
config = ctx.obj['config']
params = {"limit": limit}
@@ -539,7 +539,7 @@ def list(ctx, type: Optional[str], category: Optional[str], limit: int):
try:
with httpx.Client() as client:
response = client.get(
f"{config.coordinator_url}/openclaw/ecosystem/solutions",
f"{config.coordinator_url}/hermes/ecosystem/solutions",
headers={"X-Api-Key": config.api_key or ""},
params=params
)
@@ -559,13 +559,13 @@ def list(ctx, type: Optional[str], category: Optional[str], limit: int):
@click.argument("solution_id")
@click.pass_context
def install(ctx, solution_id: str):
"""Install OpenClaw ecosystem solution"""
"""Install hermes ecosystem solution"""
config = ctx.obj['config']
try:
with httpx.Client() as client:
response = client.post(
f"{config.coordinator_url}/openclaw/ecosystem/solutions/{solution_id}/install",
f"{config.coordinator_url}/hermes/ecosystem/solutions/{solution_id}/install",
headers={"X-Api-Key": config.api_key or ""}
)
@@ -590,7 +590,7 @@ def install(ctx, solution_id: str):
@click.option("--log-level", default="INFO", type=click.Choice(["DEBUG", "INFO", "SUCCESS", "WARNING", "ERROR"]), help="Logging level")
@click.pass_context
def agent(ctx, agent_id: str, stage: str, training_data: str, log_level: str):
"""Train OpenClaw agent on AITBC operations"""
"""Train hermes agent on AITBC operations"""
config = ctx.obj['config']
# Load training data
@@ -869,11 +869,11 @@ def certify(ctx, agent_id: str):
}, ctx.obj['output_format'])
@openclaw.command()
@hermes.command()
@click.argument("deployment_id")
@click.pass_context
def terminate(ctx, deployment_id: str):
"""Terminate OpenClaw deployment"""
"""Terminate hermes deployment"""
config = ctx.obj['config']
if not click.confirm(f"Terminate deployment {deployment_id}? This action cannot be undone."):
@@ -883,7 +883,7 @@ def terminate(ctx, deployment_id: str):
try:
with httpx.Client() as client:
response = client.delete(
f"{config.coordinator_url}/openclaw/deployments/{deployment_id}",
f"{config.coordinator_url}/hermes/deployments/{deployment_id}",
headers={"X-Api-Key": config.api_key or ""}
)

View File

@@ -688,10 +688,10 @@ def list(ctx, status: Optional[str], gpu_model: Optional[str], price_max: Option
error(f"Network error: {e}")
# OpenClaw Agent Marketplace Commands
# hermes Agent Marketplace Commands
@marketplace.group()
def agents():
"""OpenClaw agent marketplace operations"""
"""hermes agent marketplace operations"""
pass
@@ -704,7 +704,7 @@ def agents():
@click.pass_context
def register(ctx, agent_id: str, agent_type: str, capabilities: Optional[str],
region: Optional[str], reputation: float):
"""Register agent on OpenClaw marketplace"""
"""Register agent on hermes marketplace"""
config = ctx.obj['config']
agent_data = {
@@ -994,7 +994,7 @@ def analytics(ctx, time_range: str):
# Governance Commands
@marketplace.group()
def governance():
"""OpenClaw agent governance operations"""
"""hermes agent governance operations"""
pass
@@ -1104,7 +1104,7 @@ def list_proposals(ctx, status: Optional[str], limit: int):
# Performance Testing Commands
@marketplace.group()
def test():
"""OpenClaw marketplace testing operations"""
"""hermes marketplace testing operations"""
pass

View File

@@ -75,7 +75,7 @@ def check(service):
else:
click.echo(f"❌ Service file missing: {service_file}")
else:
services = ['marketplace', 'mining-blockchain', 'openclaw-ai', 'blockchain-node']
services = ['marketplace', 'mining-blockchain', 'hermes-ai', 'blockchain-node']
for svc in services:
service_file = f"/etc/systemd/system/aitbc-{svc}.service"
if os.path.exists(service_file):

View File

@@ -5,14 +5,14 @@ This document analyzes the currently disabled CLI commands and provides recommen
## Disabled Commands
### 1. `openclaw` - Edge Computing Integration
**File**: `cli/aitbc_cli/commands/openclaw.py`
### 1. `hermes` - Edge Computing Integration
**File**: `cli/aitbc_cli/commands/hermes.py`
**Status**: Commented out in `main.py` line 28
**Reason**: "Temporarily disabled due to command registration issues"
**Analysis**:
- **Size**: 604 lines of code
- **Functionality**: OpenClaw integration with edge computing deployment
- **Functionality**: hermes integration with edge computing deployment
- **Dependencies**: httpx, JSON, time utilities
- **Potential Value**: High - edge computing is strategic for AITBC
@@ -55,11 +55,11 @@ This document analyzes the currently disabled CLI commands and provides recommen
## Cleanup Action Items
### Immediate Actions (High Priority)
1. **Fix `openclaw` registration**
1. **Fix `hermes` registration**
```bash
# Uncomment line 28 in main.py
# from .commands.openclaw import openclaw
# cli.add_command(openclaw)
# from .commands.hermes import hermes
# cli.add_command(hermes)
```
- Test for naming conflicts
- Rename if necessary (e.g., `edge-deploy`)
@@ -116,7 +116,7 @@ Before re-enabling any disabled command:
| Week | Action | Status |
|------|--------|--------|
| 1 | Fix openclaw registration issues | 🔄 In Progress |
| 1 | Fix hermes registration issues | 🔄 In Progress |
| 1 | Resolve marketplace command conflicts | 🔄 In Progress |
| 2 | Locate and evaluate marketplace_advanced | ⏳ Pending |
| 2 | Add comprehensive tests | ⏳ Pending |
@@ -126,7 +126,7 @@ Before re-enabling any disabled command:
| Command | Risk Level | Action |
|---------|-----------|--------|
| openclaw | Low | Re-enable after testing |
| hermes | Low | Re-enable after testing |
| marketplace_cmd | Low | Merge or delete |
| marketplace_advanced | Unknown | Locate and evaluate |

View File

@@ -191,8 +191,8 @@ def handle_agent_sdk_action(args, render_mapping):
render_mapping("SDK Operation:", sdk_result)
def handle_openclaw_training_action(args, openclaw_training_operations, first, render_mapping):
"""Handle OpenClaw training action command."""
def handle_hermes_training_action(args, hermes_training_operations, first, render_mapping):
"""Handle hermes training action command."""
kwargs = {}
for name in ("agent_file", "wallet", "environment", "agent_id", "metrics", "price"):
value = getattr(args, name, None)
@@ -203,7 +203,7 @@ def handle_openclaw_training_action(args, openclaw_training_operations, first, r
kwargs["market_action"] = market_action
# Handle train actions
if getattr(args, "openclaw_training_action", None) == "train":
if getattr(args, "hermes_training_action", None) == "train":
train_action = getattr(args, "train_action", None)
if train_action == "agent":
for name in ("agent_id", "stage", "training_data", "log_level"):
@@ -224,10 +224,10 @@ def handle_openclaw_training_action(args, openclaw_training_operations, first, r
kwargs[name] = value
kwargs["train_action"] = "certify"
result = openclaw_training_operations(args.openclaw_training_action, **kwargs)
result = hermes_training_operations(args.hermes_training_action, **kwargs)
if not result:
sys.exit(1)
render_mapping(f"OpenClaw Training {result['action']}:", result)
render_mapping(f"hermes Training {result['action']}:", result)
def handle_workflow_action(args, workflow_operations, render_mapping):

View File

@@ -1,6 +1,6 @@
"""Parser registration modules for the unified CLI."""
from . import ai, agent, analytics, blockchain, bridge, contract, genesis, market, messaging, network, openclaw, pool_hub, resource, script, system, wallet, workflow
from . import ai, agent, analytics, blockchain, bridge, contract, genesis, market, messaging, network, hermes, pool_hub, resource, script, system, wallet, workflow
def register_all(subparsers, ctx):
wallet.register(subparsers, ctx)
@@ -13,7 +13,7 @@ def register_all(subparsers, ctx):
script.register(subparsers, ctx)
system.register(subparsers, ctx)
agent.register(subparsers, ctx)
openclaw.register(subparsers, ctx)
hermes.register(subparsers, ctx)
workflow.register(subparsers, ctx)
resource.register(subparsers, ctx)
genesis.register(subparsers, ctx)

48
cli/parsers/hermes.py Normal file
View File

@@ -0,0 +1,48 @@
"""hermes Agent Training command registration for the unified CLI."""
import argparse
from parser_context import ParserContext
def register(subparsers: argparse._SubParsersAction, ctx: ParserContext) -> None:
hermes_training_parser = subparsers.add_parser("hermes-training", help="hermes agent training operations")
hermes_training_parser.set_defaults(handler=lambda parsed, parser=hermes_training_parser: parser.print_help())
hermes_training_subparsers = hermes_training_parser.add_subparsers(dest="hermes_training_action")
hermes_deploy_parser = hermes_training_subparsers.add_parser("deploy", help="Deploy an hermes agent")
hermes_deploy_parser.add_argument("--agent-file", required=True)
hermes_deploy_parser.add_argument("--wallet", required=True)
hermes_deploy_parser.add_argument("--environment", choices=["dev", "staging", "prod"], default="dev")
hermes_deploy_parser.set_defaults(handler=ctx.handle_hermes_training_action)
hermes_monitor_parser = hermes_training_subparsers.add_parser("monitor", help="Monitor hermes performance")
hermes_monitor_parser.add_argument("--agent-id")
hermes_monitor_parser.add_argument("--metrics", choices=["performance", "cost", "errors", "all"], default="all")
hermes_monitor_parser.set_defaults(handler=ctx.handle_hermes_training_action)
hermes_market_parser = hermes_training_subparsers.add_parser("market", help="Manage hermes marketplace activity")
hermes_market_parser.add_argument("market_action", nargs="?", choices=["list", "publish", "purchase", "evaluate"])
hermes_market_parser.add_argument("--action", dest="market_action_opt", choices=["list", "publish", "purchase", "evaluate"], help=argparse.SUPPRESS)
hermes_market_parser.add_argument("--agent-id")
hermes_market_parser.add_argument("--price", type=float)
hermes_market_parser.set_defaults(handler=ctx.handle_hermes_training_action, hermes_training_action="market")
hermes_train_parser = hermes_training_subparsers.add_parser("train", help="Agent training operations")
hermes_train_subparsers = hermes_train_parser.add_subparsers(dest="train_action")
hermes_train_agent_parser = hermes_train_subparsers.add_parser("agent", help="Train hermes agent on AITBC operations")
hermes_train_agent_parser.add_argument("--agent-id", required=True, help="Agent ID to train")
hermes_train_agent_parser.add_argument("--stage", required=True, help="Training stage (stage1_foundation, stage2_operations_mastery, etc.)")
hermes_train_agent_parser.add_argument("--training-data", required=True, help="Path to training data JSON file")
hermes_train_agent_parser.add_argument("--log-level", default="INFO", choices=["DEBUG", "INFO", "SUCCESS", "WARNING", "ERROR"], help="Logging level")
hermes_train_agent_parser.set_defaults(handler=ctx.handle_hermes_training_action, hermes_training_action="train")
hermes_train_validate_parser = hermes_train_subparsers.add_parser("validate", help="Validate agent training progress")
hermes_train_validate_parser.add_argument("--agent-id", required=True, help="Agent ID to validate")
hermes_train_validate_parser.add_argument("--stage", required=True, help="Training stage to validate")
hermes_train_validate_parser.set_defaults(handler=ctx.handle_hermes_training_action, hermes_training_action="train")
hermes_train_certify_parser = hermes_train_subparsers.add_parser("certify", help="Certify agent mastery")
hermes_train_certify_parser.add_argument("--agent-id", required=True, help="Agent ID to certify")
hermes_train_certify_parser.set_defaults(handler=ctx.handle_hermes_training_action, hermes_training_action="train")

View File

@@ -1,48 +0,0 @@
"""OpenClaw Agent Training command registration for the unified CLI."""
import argparse
from parser_context import ParserContext
def register(subparsers: argparse._SubParsersAction, ctx: ParserContext) -> None:
openclaw_training_parser = subparsers.add_parser("openclaw-training", help="OpenClaw agent training operations")
openclaw_training_parser.set_defaults(handler=lambda parsed, parser=openclaw_training_parser: parser.print_help())
openclaw_training_subparsers = openclaw_training_parser.add_subparsers(dest="openclaw_training_action")
openclaw_deploy_parser = openclaw_training_subparsers.add_parser("deploy", help="Deploy an OpenClaw agent")
openclaw_deploy_parser.add_argument("--agent-file", required=True)
openclaw_deploy_parser.add_argument("--wallet", required=True)
openclaw_deploy_parser.add_argument("--environment", choices=["dev", "staging", "prod"], default="dev")
openclaw_deploy_parser.set_defaults(handler=ctx.handle_openclaw_training_action)
openclaw_monitor_parser = openclaw_training_subparsers.add_parser("monitor", help="Monitor OpenClaw performance")
openclaw_monitor_parser.add_argument("--agent-id")
openclaw_monitor_parser.add_argument("--metrics", choices=["performance", "cost", "errors", "all"], default="all")
openclaw_monitor_parser.set_defaults(handler=ctx.handle_openclaw_training_action)
openclaw_market_parser = openclaw_training_subparsers.add_parser("market", help="Manage OpenClaw marketplace activity")
openclaw_market_parser.add_argument("market_action", nargs="?", choices=["list", "publish", "purchase", "evaluate"])
openclaw_market_parser.add_argument("--action", dest="market_action_opt", choices=["list", "publish", "purchase", "evaluate"], help=argparse.SUPPRESS)
openclaw_market_parser.add_argument("--agent-id")
openclaw_market_parser.add_argument("--price", type=float)
openclaw_market_parser.set_defaults(handler=ctx.handle_openclaw_training_action, openclaw_training_action="market")
openclaw_train_parser = openclaw_training_subparsers.add_parser("train", help="Agent training operations")
openclaw_train_subparsers = openclaw_train_parser.add_subparsers(dest="train_action")
openclaw_train_agent_parser = openclaw_train_subparsers.add_parser("agent", help="Train OpenClaw agent on AITBC operations")
openclaw_train_agent_parser.add_argument("--agent-id", required=True, help="Agent ID to train")
openclaw_train_agent_parser.add_argument("--stage", required=True, help="Training stage (stage1_foundation, stage2_operations_mastery, etc.)")
openclaw_train_agent_parser.add_argument("--training-data", required=True, help="Path to training data JSON file")
openclaw_train_agent_parser.add_argument("--log-level", default="INFO", choices=["DEBUG", "INFO", "SUCCESS", "WARNING", "ERROR"], help="Logging level")
openclaw_train_agent_parser.set_defaults(handler=ctx.handle_openclaw_training_action, openclaw_training_action="train")
openclaw_train_validate_parser = openclaw_train_subparsers.add_parser("validate", help="Validate agent training progress")
openclaw_train_validate_parser.add_argument("--agent-id", required=True, help="Agent ID to validate")
openclaw_train_validate_parser.add_argument("--stage", required=True, help="Training stage to validate")
openclaw_train_validate_parser.set_defaults(handler=ctx.handle_openclaw_training_action, openclaw_training_action="train")
openclaw_train_certify_parser = openclaw_train_subparsers.add_parser("certify", help="Certify agent mastery")
openclaw_train_certify_parser.add_argument("--agent-id", required=True, help="Agent ID to certify")
openclaw_train_certify_parser.set_defaults(handler=ctx.handle_openclaw_training_action, openclaw_training_action="train")

View File

@@ -133,7 +133,7 @@ class TestIntegrationScenarios:
def test_cli_help_comprehensive(self):
result = run_cli("--help")
assert result.returncode == 0
for command in ["wallet", "blockchain", "network", "market", "ai", "mining", "agent", "openclaw", "workflow", "resource", "simulate"]:
for command in ["wallet", "blockchain", "network", "market", "ai", "mining", "agent", "hermes", "workflow", "resource", "simulate"]:
assert command in result.stdout
def test_wallet_alias_and_nested_forms(self):

View File

@@ -59,7 +59,7 @@ def run_cli(argv, core):
ai_operations = core["ai_operations"]
mining_operations = core["mining_operations"]
agent_operations = core["agent_operations"]
openclaw_training_operations = core["openclaw_training_operations"]
hermes_training_operations = core["hermes_training_operations"]
workflow_operations = core["workflow_operations"]
resource_operations = core["resource_operations"]
simulate_blockchain = core["simulate_blockchain"]
@@ -577,8 +577,8 @@ def run_cli(argv, core):
def handle_agent_sdk_action(args):
system_handlers.handle_agent_sdk_action(args, render_mapping)
def handle_openclaw_training_action(args):
system_handlers.handle_openclaw_training_action(args, openclaw_training_operations, first, render_mapping)
def handle_hermes_training_action(args):
system_handlers.handle_hermes_training_action(args, hermes_training_operations, first, render_mapping)
def handle_workflow_action(args):
system_handlers.handle_workflow_action(args, workflow_operations, render_mapping)
@@ -739,7 +739,7 @@ def run_cli(argv, core):
"handle_analytics": handle_analytics,
"handle_agent_action": handle_agent_action,
"handle_agent_sdk_action": handle_agent_sdk_action,
"handle_openclaw_training_action": handle_openclaw_training_action,
"handle_hermes_training_action": handle_hermes_training_action,
"handle_workflow_action": handle_workflow_action,
"handle_resource_action": handle_resource_action,
"handle_simulate_action": handle_simulate_action,