We integrate Akash Network into your infrastructure to host AI inference (LLM, Stable Diffusion), blockchain nodes (Ethereum, Cosmos), DApp backends, and compute tasks on a decentralized cloud. Providers offer GPU/CPU power; clients manage workloads via SDL manifests; payment in AKT. Key advantage: support for standard Docker containers without custom runtime, simplifying migration of existing applications. Typical scenario: an ML team needs to deploy an inference server for Llama 3 on GPU, but AWS or GCP are expensive, and Kubernetes is overkill. Akash allows running the same Docker image on decentralized providers with savings up to 50% and full blockchain control.
How the SDL Manifest Works and Why It's Critical
Stack Definition Language (SDL) is a YAML format for describing deployments. It looks like docker-compose but has differences that can break deployment without preparation. Here's an example manifest for an inference server:
--- version: "2.0" services: inference-api: image: your-org/llm-inference:sha256-abc123 expose: - port: 8080 as: 80 to: - global: true env: - MODEL_PATH=/models/llama-7b - MAX_CONCURRENT=4 resources: cpu: units: 4.0 memory: size: 16Gi storage: - size: 50Gi attributes: persistent: true class: beta3 profiles: compute: inference-api: resources: cpu: units: 4 memory: size: 16Gi gpu: units: 1 attributes: vendor: nvidia: - model: rtx3090 placement: dcloud: pricing: inference-api: denom: uakt amount: 1000 deployment: inference-api: dcloud: profile: inference-api count: 1 Akash Network Documentation highlights the importance of persistent: true for data surviving restarts. Without it, the container starts fresh when moved to another provider. Use class: beta3 (NVMe) for high IOPS — critical for ML models and databases.
SDL pitfalls:
- persistent storage — mandatory for data that must survive container restarts. Without it, ephemeral storage.
- Storage class —
beta3(NVMe) is significantly faster thanbeta2(HDD). IOPS difference is critical for DBs and ML models. - Image pinning — use digest (sha256) instead of
latesttag. Providers cache images, solatestmay differ. - GPU resources — not available on all providers. Specifying exact model (rtx3090, a100) narrows the pool but guarantees compatibility.
- Missing health check — deployment gets no IP, and you'll pay even for a non-working service.
- Wrong port expose — the application will be inaccessible externally.
How to Programmatically Deploy to Akash
For automation from your application, we use the Akash JavaScript SDK or direct REST API calls (Cosmos-based). Below is an example of creating a deployment via SDK:
import { Registry, DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; import { SigningStargateClient } from "@cosmjs/stargate"; import { MsgCreateDeployment } from "@akashnetwork/akash-api/akash/deployment/v1beta3"; const AKASH_RPC = "https://rpc.akashnet.net:443"; const AKASH_DENOM = "uakt"; async function createDeployment(sdlContent: string, walletMnemonic: string) { const wallet = await DirectSecp256k1HdWallet.fromMnemonic(walletMnemonic, { prefix: "akash", }); const [account] = await wallet.getAccounts(); const client = await SigningStargateClient.connectWithSigner(AKASH_RPC, wallet, { registry: new Registry(/* akash proto types */), }); const dseq = Math.floor(Date.now() / 1000); const msg = { typeUrl: "/akash.deployment.v1beta3.MsgCreateDeployment", value: MsgCreateDeployment.fromPartial({ id: { owner: account.address, dseq: BigInt(dseq), }, groups: parseSDLGroups(sdlContent), deposit: { denom: AKASH_DENOM, amount: "5000000" }, }), }; const result = await client.signAndBroadcast( account.address, [msg], { amount: [{ denom: AKASH_DENOM, amount: "20000" }], gas: "800000" } ); return { dseq, txHash: result.transactionHash }; } After deployment creation, an auction starts: providers place bids, the client selects the best and creates a lease. This is an asynchronous process — you need to subscribe to blockchain events (WebSocket or polling).
async function watchBidsAndCreateLease(dseq: number, ownerAddress: string) { const bids = await pollBids(dseq, ownerAddress, { timeoutMs: 120000 }); if (bids.length === 0) throw new Error("No bids received"); const bestBid = bids.sort((a, b) => Number(a.bid.price.amount) - Number(b.bid.price.amount) )[0]; await createLease(bestBid.bid.bidId, wallet); await sendManifestToProvider(bestBid.bid.bidId.provider, dseq, sdlContent); } How to Manage the Deployment Lifecycle
After lease creation, the deployment is managed via the Provider Service API — HTTP endpoints of the provider. The endpoint is obtained from on-chain provider data.
async function getDeploymentStatus(providerAddress: string, dseq: number, owner: string) { const providerInfo = await queryProviderInfo(providerAddress); const providerHost = providerInfo.hostUri; const response = await fetch( `${providerHost}/lease/${owner}/${dseq}/1/1/status`, { headers: { Authorization: `Bearer ${await getProviderToken()}` } } ); return response.json(); } For production, we integrate monitoring via Prometheus/Grafana, running a sidecar container in the same deployment. We regularly check the deposit balance — when exhausted, the deployment terminates without recovery. To avoid this, we set up automatic refills.
Which Workloads Are Best Suited for Akash?
| Workload Type | Requirements | Recommendations |
|---|---|---|
| AI inference | GPU, persistent storage for models | Init-container for downloading, health check with 5–10 minute timeout |
| Blockchain nodes | 1+ TB persistent, UDP for P2P | Use snapshot bootstrap, specify proto: UDP in expose |
| Stateless backends | Minimal resources | Horizontal scaling via count, external load balancer |
| Databases | Persistent, I/O | Only with replication; critical data outside Akash |
Pricing and Cost Control
Cost is denominated in uAKT per block (~6 seconds). For pre-deployment estimation, use the Cloudmos API: send the SDL and get the price per block. Typical price for ML inference with RTX 3090 GPU is a few tens of cents per hour, offering significant savings compared to cloud providers. For production, we configure automatic deposit refills — otherwise the deployment shuts down without warning.
Comparison of Manual and Programmatic Deployment
| Method | Setup Time | Automation | Scaling |
|---|---|---|---|
| Manual (CLI) | 1–3 days | None | Manual |
| Programmatic (SDK) | 1–2 weeks | Full | Event-driven |
| Full (EVM integration) | 3–5 weeks | On-chain escrow | Via smart contract |
What's Included in the Work
- Analysis of your application and preparation of the SDL manifest
- Development of deployment scripts (CLI or programmatic integration)
- Monitoring and alerting setup
- Integration with EVM contracts (optional)
- Documentation and team training
- Post-launch support
Experience: 5+ years in Web3, 30+ projects in decentralized computing integration. We use Foundry, Cosmos SDK, and TypeScript.
Integration Timelines
- Basic (manual SDL, CLI) — 1 to 3 days
- Programmatic (automated deployment, monitoring) — 1 to 2 weeks
- Full (EVM contract, escrow, lifecycle) — 3 to 5 weeks
We'll evaluate your project within 1–2 business days. Contact us to discuss details. Get a consultation on Akash integration.







