The Akash Network Console is a comprehensive web-based platform for deploying and managing containerized applications on the Akash decentralized cloud network. This repository contains a monorepo housing multiple interconnected applications and services that together provide end-to-end functionality for users to deploy workloads, manage billing, monitor deployments, and interact with the Akash blockchain.
This document provides a high-level introduction to the system architecture, key applications, technology stack, and how the components interact. For detailed information about specific subsystems:
The Akash Network Console is organized as a monorepo with the following structure:
/apps/
├── deploy-web/ # Main user-facing Next.js application
├── api/ # Hono-based REST API backend
├── provider-proxy/ # Gateway for provider communications
├── indexer/ # Blockchain data synchronization service
├── notifications/ # NestJS email and notification service
├── log-collector/ # Provider log aggregation worker
├── stats-web/ # Network statistics dashboard
└── provider-console/ # Provider management interface
/packages/
├── database/ # Shared database schemas and migrations
├── http-sdk/ # Auto-generated API client SDKs
├── react-query-sdk/ # React Query hooks for API calls
├── logging/ # Shared logging utilities
├── net/ # Network configuration and metadata
└── env-loader/ # Environment variable management
Sources: package-lock.json1-35 apps/deploy-web/package.json1-187 apps/api/package.json1-163
Sources: apps/deploy-web/package.json1-187 apps/api/package.json1-163 apps/provider-proxy/package.json1-68 apps/notifications/package.json1-123
| Application | Package Name | Version | Primary Responsibility |
|---|---|---|---|
| deploy-web | @akashnetwork/console-web | 3.19.0 | User interface for deployment management, wallet integration, billing |
| console-api | @akashnetwork/console-api | 3.19.0 | Business logic, blockchain transactions, managed wallets, billing orchestration |
| provider-proxy | @akashnetwork/provider-proxy | 2.8.0 | Secure gateway for provider communications with certificate validation |
| indexer | @akashnetwork/indexer | - | Syncs blockchain state to PostgreSQL via AkashStatsIndexer |
| notifications | @akashnetwork/notifications | 2.11.0 | Email notifications, alerts, and user communication via Novu |
| stats-web | @akashnetwork/stats-web | 1.11.0 | Network analytics and provider statistics dashboard |
| provider-console | @akashnetwork/provider-console | 1.34.1 | Provider operator dashboard for infrastructure management |
| log-collector | @akashnetwork/log-collector | 2.10.0 | Aggregates deployment logs from providers via Kubernetes API |
Sources: apps/deploy-web/package.json2-4 apps/api/package.json2-4 apps/provider-proxy/package.json2-4 apps/notifications/package.json2-4 apps/provider-console/package.json2-4 apps/stats-web/package.json2-4 apps/log-collector/package.json2-4
Sources: apps/deploy-web/package.json27-133 apps/api/package.json39-113 apps/provider-proxy/package.json24-39
Sources: package-lock.json6-34 apps/deploy-web/package.json27-133 apps/api/package.json39-113
Sources: apps/api/package.json39-113 apps/deploy-web/package.json27-133 apps/provider-proxy/package.json1-68
Data Flow: Blockchain Indexing to PostgreSQL
Sources: apps/indexer/src/chain/chainSync.ts1-30 apps/indexer/src/indexers/akashStatsIndexer.ts1-50 apps/indexer/src/chain/dataStore.ts1-7 packages/database/dbSchemas/akash/deployment.ts1-17 packages/database/dbSchemas/akash/akashMessage.ts1-12 packages/database/dbSchemas/base/transaction.ts1-11 packages/database/dbSchemas/base/transactionEvent.ts1-2
The console-api provides a managed wallet service via ManagedSignerService where users don't need to maintain their own private keys. The system:
m/44'/118'/0'/0/{userId}TxManagerService and BatchSigningClientServicecosmos.feegrant.v1beta1.MsgGrantAllowance) and deployment allowances (cosmos.authz.v1beta1.MsgGrant) automaticallyRefillService and TopUpManagedDeploymentsServiceThe provider-proxy service acts as a secure gateway with certificate validation:
hostUri endpointscockatiel circuit breakerBoth console-api and notifications use pg-boss 11.0.4 backed by PostgreSQL for asynchronous task execution:
BalanceMonitoringService checking predictedClosedHeight for deploymentsTopUpManagedDeploymentsService charging default payment methods when balance is lowFEE_ALLOWANCE_REFILL_THRESHOLDThe system supports multiple Akash networks (mainnet, testnet, sandbox) with configuration managed via @akashnetwork/net package:
meta.json files per networkakashnet-2), testnet (sandbox-02), sandbox (sandbox-03)uakt (micro-AKT), usdc (micro-USDC on IBC)The system uses a dual ORM approach for database management:
AkashBlock, AkashMessage, Deployment, Lease, Provider)Block, Message, Transaction with Akash-specific fieldsdrizzle-kit for schema versioningSources: apps/api/package.json99-100 apps/provider-proxy/package.json24-39 packages/database/chainDefinitions.ts1-43 packages/database/dbSchemas/akash/deployment.ts1-17 packages/database/dbSchemas/base/message.ts1-18 packages/database/dbSchemas/index.ts1-17
The repository uses npm workspaces for dependency management with Turborepo for build orchestration:
"@akashnetwork/*": "*" in package.json)release-it 17.6.0 with conventional changelog plugincreate-pre-release-pr workflow creates PR to release/bumps branchdeployment, billing, wallet24.11.1 LTS, npm version 11.6.2 per package-lock.json31-34Each application is containerized and published to GitHub Container Registry (ghcr.io/akash-network):
prepare stage resets version to 1.0.0 for cache optimization, builder stage compiles TypeScript, production stage runs with minimal dependencies-beta and -prod image tags based on GitHub release vs commitEnvironment variables are managed through hierarchical system:
.env files with precedence: .env.local (local overrides) > .env.{environment} (environment-specific) > .env (base defaults)env-config.schema.ts files per applicationbuild-env-schemas script using TypeScript compilerdoppler run -- node dist/server.js)@akashnetwork/env-loader package using dotenv and dotenv-expandThe release pipeline implements safety checks:
package.json changes in main branchop inject commandSources: package-lock.json1-35 apps/deploy-web/package.json14-15 apps/api/package.json13-23 .commitlintrc.json1-40
The monorepo includes several internal packages that provide shared functionality:
| Package | Purpose |
|---|---|
@akashnetwork/database | Drizzle ORM schemas, migrations, and database utilities |
@akashnetwork/http-sdk | Auto-generated TypeScript API clients from OpenAPI specs |
@akashnetwork/react-query-sdk | React Query hooks for API consumption |
@akashnetwork/logging | Structured logging with OpenTelemetry integration |
@akashnetwork/net | Network configuration and metadata (nodes, versions, chain IDs) |
@akashnetwork/env-loader | Environment variable loading and validation |
@akashnetwork/ui | Shared UI components and themes |
@akashnetwork/network-store | Network state management utilities |
@akashnetwork/dev-config | Shared ESLint, TypeScript, and tooling configurations |
Sources: apps/deploy-web/package.json28-35 apps/api/package.json43-49 package-lock.json8-11
Refresh this wiki
This wiki was recently refreshed. Please wait 1 day to refresh again.