CLI Common Tasks

Practical examples and workflows for common CLI tasks.

This guide provides real-world examples for frequently performed operations.


Deployment Workflows

Create and Deploy an Application

1. Write your SDL file (deploy.yml):

version: "2.0"
services:
web:
image: nginx:1.25.3
expose:
- port: 80
as: 80
to:
- global: true
profiles:
compute:
web:
resources:
cpu:
units: 0.5
memory:
size: 512Mi
storage:
size: 512Mi
placement:
akash:
pricing:
web:
denom: uakt
amount: 100
deployment:
web:
akash:
profile: web
count: 1

2. Create deployment:

Terminal window
provider-services tx deployment create deploy.yml \
--from $AKASH_KEY_NAME

3. Wait and query bids:

Terminal window
# Get your address
AKASH_ADDRESS=$(provider-services keys show my-wallet -a)
# Query bids (wait 30 seconds after creating deployment)
provider-services query market bid list --owner $AKASH_ADDRESS

4. Accept a bid (create lease):

Terminal window
provider-services tx market lease create \
--dseq <deployment-seq> \
--provider <provider-address> \
--from $AKASH_KEY_NAME

5. Send manifest:

Terminal window
provider-services send-manifest deploy.yml \
--dseq <deployment-seq> \
--provider <provider-address> \
--from $AKASH_KEY_NAME

Wallet Management

Create and Fund a Wallet

Terminal window
# Create wallet
provider-services keys add my-wallet
# Save mnemonic securely!
# Get address
provider-services keys show my-wallet -a
# Check balance
provider-services query bank balances $(provider-services keys show my-wallet -a)

Restore from Mnemonic

Terminal window
provider-services keys add my-wallet --recover
# Enter your mnemonic when prompted

Export Private Key

Terminal window
provider-services keys export my-wallet
# Enter password when prompted

Monitoring Deployments

Check Deployment Status

Terminal window
# Get deployment info
provider-services query deployment get \
--dseq <deployment-seq> \
--owner <address>
# Check lease status
provider-services query market lease list --owner <address>

View Logs

Terminal window
provider-services lease-logs \
--dseq <deployment-seq> \
--provider <provider-address> \
--from $AKASH_KEY_NAME

Get Service Status

Terminal window
provider-services lease-status \
--dseq <deployment-seq> \
--provider <provider-address> \
--from $AKASH_KEY_NAME

Updating Deployments

What Can Be Updated?

Can update:

  • Container image versions
  • Environment variables
  • Command and args
  • Some exposed port configurations

Cannot update (must close and recreate deployment):

  • CPU, memory, storage, GPU resources
  • Placement criteria (provider attributes)
  • Service names

Update Deployment (2-Step Process)

Updating a deployment requires two steps:

Step 1: Update on-chain deployment hash

Terminal window
# Modify your SDL file
nano deploy.yml
# Update deployment on-chain
akash tx deployment update deploy.yml \
--dseq <deployment-seq> \
--from $AKASH_KEY_NAME

Step 2: Send updated manifest to provider

Terminal window
# Send updated manifest to provider
provider-services send-manifest deploy.yml \
--dseq <deployment-seq> \
--provider <provider-address> \
--from $AKASH_KEY_NAME

Closing Deployments

Close Deployment

Terminal window
provider-services tx deployment close \
--dseq <deployment-seq> \
--from $AKASH_KEY_NAME

Note: This closes the deployment and all associated leases. Funds in escrow are returned.


Querying the Network

Find Providers

Terminal window
# List all providers
provider-services query provider list
# Filter by attributes (example)
provider-services query provider list | grep "region: us-west"

Check Network Status

Terminal window
# Latest block
provider-services query block
# Network parameters
provider-services query params

Scripting and Automation

Deployment Script Example

#!/bin/bash
# Assumes environment variables are set: AKASH_KEY_NAME, AKASH_GAS, AKASH_GAS_ADJUSTMENT
SDL_FILE="deploy.yml"
# Create deployment
echo "Creating deployment..."
RESULT=$(provider-services tx deployment create $SDL_FILE --from $AKASH_KEY_NAME -y --output json)
DSEQ=$(echo $RESULT | jq -r '.logs[0].events[] | select(.type=="akash.v1.EventDeploymentCreated") | .attributes[] | select(.key=="dseq") | .value')
echo "Deployment created: $DSEQ"
echo "Waiting for bids..."
sleep 30
# Query bids
BIDS=$(provider-services query market bid list --owner $(provider-services keys show $AKASH_KEY_NAME -a) --dseq $DSEQ --output json)
PROVIDER=$(echo $BIDS | jq -r '.bids[0].bid.provider')
echo "Creating lease with provider: $PROVIDER"
provider-services tx market lease create --dseq $DSEQ --provider $PROVIDER --from $AKASH_KEY_NAME -y
echo "Sending manifest..."
provider-services send-manifest $SDL_FILE --dseq $DSEQ --provider $PROVIDER --from $AKASH_KEY_NAME
echo "Deployment complete!"
echo "DSEQ: $DSEQ"
echo "Provider: $PROVIDER"

Troubleshooting

Check Transaction Status

Terminal window
# If transaction fails, check the hash
provider-services query tx <tx-hash>

Verify Configuration

Terminal window
# Check all environment variables
env | grep AKASH

Test Connection

Terminal window
# Query latest block
provider-services query block

Next Steps


Need help? Join Discord #developers channel!

footer-logo-dark

© Akash Network 2025 The Akash Network Authors Documentation Distributed under CC BY 4.0

Open-source Apache 2.0 Licensed.

GitHub v0.38.2

Privacy