Files
vm-cloud/docs/AKASH_INTEGRATION.md
Vault Sovereign a075fcf95f Initial vmc CLI
2025-12-26 19:35:03 +00:00

6.6 KiB

Akash Network Integration

Overview

VaultMesh Cloud CLI integration with Akash Network - a decentralized compute marketplace built on Cosmos blockchain.

Why Akash?

Feature Akash Traditional Cloud
Cost 60-85% cheaper Baseline
Model Reverse auction marketplace Fixed pricing
Billing AKT tokens per-block Fiat monthly/hourly
Lock-in None - switch providers anytime Vendor lock-in
Censorship Resistant (blockchain) Subject to provider

Architecture

┌─────────────────────────────────────────────────────────┐
│                    vmc CLI                              │
├─────────────────────┬───────────────────────────────────┤
│   vmc servers ...   │         vmc akash ...             │
│   (Hetzner)         │         (Akash Network)           │
├─────────────────────┼───────────────────────────────────┤
│   src/lib/hcloud.ts │   src/lib/akash/client.ts         │
│                     │   src/lib/akash/wallet.ts         │
│                     │   src/lib/akash/sdl.ts            │
├─────────────────────┴───────────────────────────────────┤
│              Receipt System (src/lib/receipt.ts)        │
│              Lock System (src/lib/lock.ts)              │
└─────────────────────────────────────────────────────────┘

Akash Concepts

SDL (Stack Definition Language)

YAML-based deployment specification (like docker-compose):

version: "2.0"

services:
  web:
    image: nginx:latest
    expose:
      - port: 80
        as: 80
        to:
          - global: true

profiles:
  compute:
    web:
      resources:
        cpu:
          units: 1
        memory:
          size: 512Mi
        storage:
          - size: 10Gi

  placement:
    akash:
      pricing:
        web: 50uakt  # micro-AKT per block (~6 sec)

deployment:
  web:
    akash:
      profile: web
      count: 1

Deployment Flow

1. CREATE DEPLOYMENT
   └─> SDL manifest → Blockchain transaction
   └─> Returns: DSEQ (deployment sequence number)

2. RECEIVE BIDS
   └─> Providers bid on your deployment
   └─> ~15 minutes window

3. ACCEPT BID → CREATE LEASE
   └─> Select provider
   └─> Escrow AKT for payment

4. SEND MANIFEST
   └─> Upload deployment spec to provider
   └─> Provider starts containers

5. MONITOR / UPDATE / CLOSE
   └─> Check status, update resources, or terminate

Key Identifiers

ID Description
DSEQ Deployment sequence number
GSEQ Group sequence (usually 1)
OSEQ Order sequence (usually 1)
owner Wallet address (akash1...)
provider Provider address (akash1...)

CLI Commands

Read-Only (Phase 1)

# List all deployments for configured wallet
vmc akash list

# Get deployment details
vmc akash status <dseq>

# List bids for a deployment
vmc akash bids <dseq>

# Check wallet balance
vmc akash balance

Mutations (Phase 2)

# Deploy from SDL file
vmc akash deploy --sdl app.yaml --yes --reason "deploy web app"

# Close deployment (refunds remaining escrow)
vmc akash close <dseq> --yes --reason "scaling down"

# Update deployment resources
vmc akash update <dseq> --sdl app.yaml --yes --reason "increase memory"

Configuration

Environment Variables

# Required for queries
AKASH_WALLET_ADDRESS=akash1...       # Your wallet address

# Required for mutations
AKASH_MNEMONIC="word1 word2 ... word12"  # 12-word seed phrase

# Optional
AKASH_NETWORK=testnet                 # testnet or mainnet
AKASH_REST_ENDPOINT=https://api.akashnet.net

Testnet vs Mainnet

Network Endpoint Tokens
Testnet https://api.sandbox.akash.network Free test AKT
Mainnet https://api.akashnet.net Real AKT

Get testnet tokens: Akash Faucet

File Structure

src/lib/akash/
├── types.ts        # TypeScript interfaces
├── client.ts       # REST API client
├── wallet.ts       # Mnemonic/signing (Phase 2)
└── sdl.ts          # SDL parsing (Phase 2)

src/commands/akash/
├── list.ts         # List deployments
├── status.ts       # Deployment details
├── bids.ts         # List bids
├── balance.ts      # Wallet balance
├── deploy.ts       # Create deployment (Phase 2)
└── close.ts        # Close deployment (Phase 2)

templates/akash/
├── web.yaml        # Basic web service
├── gpu.yaml        # GPU workload
└── postgres.yaml   # Database with storage

Receipt Structure

Akash mutations produce VaultMesh-grade receipts:

{
  "timestamp": "2025-12-26T18:30:00.000Z",
  "platform": "akash",
  "network": "testnet",
  "action": "deploy",
  "target": {
    "dseq": "12345",
    "owner": "akash1abc...",
    "provider": "akash1xyz..."
  },
  "request": {
    "sdl_hash": "sha256:abc123...",
    "resources": {
      "cpu": 1,
      "memory": "512Mi",
      "storage": "10Gi"
    },
    "max_price": "50uakt"
  },
  "response": {
    "tx_hash": "ABCD1234...",
    "lease_price": {
      "amount": "45",
      "denom": "uakt"
    },
    "status": "active"
  },
  "reason": "deploy web app",
  "sha256": "..."
}

Dependencies

{
  "@akashnetwork/akash-api": "latest",
  "@cosmjs/stargate": "^0.32.0",
  "@cosmjs/proto-signing": "^0.32.0"
}

Resources

Implementation Status

  • Phase 1: Read-only commands (list, status, bids, balance)
  • Phase 2: Wallet signing + mutations (deploy, close, update)
  • Phase 3: SDL templates and validation
  • Phase 4: Multi-cloud abstraction layer