Decentralized application deployment platform using Sui blockchain, Walrus distributed storage, and Kubernetes orchestration.

DaasVader is an decentralized Kubernetes service integrated with Sui blockchain, an innovative project that replaces traditional centralized authentication systems with blockchain-based staking mechanisms.
Users are consumers of Sui's Vercel serverless platform, and compute providers (stakers) are shared Kubernetes administrators. Using Sui Nautilus for master node and control plane operations with Move contracts, and utilizing Nautilus for secure communications and verification processes (master node verification). The goal is to become Sui's Vercel.
- Users: Deploy applications seamlessly through blockchain contracts (serverless experience)
- Stakers: Provide compute resources and earn rewards as shared Kubernetes cluster administrators
- Walrus Storage: Replace OCI/DockerHub with Sui-native container registry
- Move Contracts: Handle all authentication, authorization, and resource allocation
- Goal: Create a fully decentralized, trustless alternative to traditional cloud platforms
- Sui blockchain + K8s native integration
- Sui Native architecture (Replace OCI/DockerHub with Walrus as Sui-native Container Registry)
- Real-time event processing (Sui events → masternode execution)
- Economic security model (staking-based permission management)
- Event-driven automation (blockchain events trigger K8s operations)
sequenceDiagram
participant U as User
participant F as Next.js Frontend
participant W as Walrus Storage
participant B as Sui Blockchain
Note over U,B: User uploads app and creates task pool
U->>F: 1. Connect Sui Wallet
U->>F: 2. Upload Docker Image (.tar)
F->>W: 3. Store as Walrus Blob
W-->>F: 4. Return Blob ID
F->>B: 5. Register Deployment (Contract Call)
B->>B: 6. Emit DeploymentRegisteredEvent
F->>B: 7. Create Task Pool (with Blob ID)
B->>B: 8. Emit TaskPoolCreatedEvent
B-->>F: 9. Task Pool Created
F-->>U: 10. Display Task Pool Status & Wait for Staker
sequenceDiagram
participant S as Staker/CLI
participant B as Sui Blockchain
participant N as Nautilus Master
participant K as K3s Control Plane
participant W as Worker Container
Note over S,W: Staker provides compute infrastructure
S->>B: 1. sui client call stake_and_register_worker
B->>B: 2. Emit WorkerRegisteredEvent
B->>B: 3. Emit StakeDepositedEvent
N->>B: 4. Listen for events
N->>N: 5. Process registration
S->>B: 6. sui client call activate_worker
B->>B: 7. Emit WorkerStatusChangedEvent
N->>N: 8. Set join token in contract
B->>B: 9. Emit JoinTokenSetEvent
S->>W: 10. docker run worker container
W->>K: 11. Join cluster with token
K-->>N: 12. Worker ready notification
sequenceDiagram
participant F as Frontend
participant B as Sui Blockchain
participant N as Nautilus Master
participant W as Walrus Storage
participant K as K3s Control Plane
participant P as Running Pods
Note over F,P: Staker picks up user's task and executes
F->>B: 1. Monitor Task Pool Status
N->>B: 2. Detect available Task Pool
N->>B: 3. Submit K8s Request (submit_k8s_request)
B->>B: 4. Emit K8sAPIRequestScheduledEvent
B->>B: 5. Emit WorkerAssignedEvent
N->>N: 6. Process deployment request
N->>W: 7. Fetch Docker image from Blob ID
W-->>N: 8. Return image data
N->>K: 9. Auto execute kubectl command
K->>P: 10. Create Pod with Walrus image
K-->>N: 11. kubectl output: pod/xxx created
N->>B: 12. Update contract state (Task Completed)
B-->>F: 13. Task completion event
F-->>F: 14. Display live app URL & status
Path: /frontend
Technology: Next.js 14, TypeScript, Tailwind CSS
- Wallet Integration: Connect Sui wallets (Suiet, Slush Wallet)
- File Upload Interface: Browser-based upload of Docker images and project folders
- Deployment Management: Track and manage deployed applications
- Real-time Monitoring: Display deployment status and logs
- Project Folders: Select and upload entire project directories
- Docker Images: Upload .tar files created with
docker save - Individual Files: Support for single file uploads
- Deployment Dashboard: View active deployments and access URLs
Integration: Distributed storage for Docker images and application data
- Blob Storage: Store files as immutable blob objects in Walrus network
- Content Addressing: Assign unique IDs to each blob for permanent reference
- Gateway Access: Direct access support through Walrus gateway endpoints
Path: /worker-release
File count: 127 Go files
- K3s Agent execution: Integrates standard K3s agent with Stake token authentication
- Staking management: Manages staking status by communicating with Sui blockchain
- Metrics collection: Monitors node performance and status
- Auto registration: Automatic cluster join using Stake tokens
worker-release/
├── main.go # Entry point - worker node initialization
├── k3s_agent_integration.go # K3s agent integration logic
├── pkg-reference/ # Modified k3s fork code (worker node)
│ ├── security/
│ │ ├── seal_auth.go # Seal token authentication implementation
│ │ ├── sui_client.go # Sui RPC client
│ │ └── kubectl_auth.go # kubectl request authentication
│ ├── agent/
│ │ ├── run.go # Agent execution logic
│ │ ├── config/ # Agent configuration
│ │ └── tunnel/ # Master connection tunnel
│ └── containerd/ # Container runtime integration
Path: /nautilus-release
File count: 4 core Go files
- K3s control plane: Execute K3s master node in Docker container
- Real-time blockchain event processing: Listen and process Sui contract events
- Auto kubectl execution: Convert contract events to kubectl commands automatically
- Enhanced monitoring: Provide real-time logging with emoji indicators
// Sui event processing structure
type SuiEventProcessor struct {
logger *logrus.Logger
rpcClient *sui.Client
k3sManager *K3sManager
eventStream chan *SuiEvent
}
// K3s automation engine
type K3sManager struct {
logger *logrus.Logger
kubectlPath string
configPath string
isRunning bool
}GET /healthz- Health check endpointGET /readyz- Ready status checkGET /api/nodes- Query registered nodes statusGET /api/transactions/history- Transaction historyPOST /api/contract/call- Contract state queriesANY /api/*,/apis/*- Kubernetes API proxy (port 6443)
Path: /contracts-release
Deployed on: Sui Testnet (Verified & Production Ready)
| Contract | Address | Function | Status |
|---|---|---|---|
| Package | 0x029f3e4a78286e7534e2958c84c795cee3677c27f89dee56a29501b858e8892c |
Main package | Deployed |
| Worker Registry | 0x733fe1e93455271672bdccec650f466c835edcf77e7c1ab7ee37ec70666cdc24 |
Worker management | Active |
| K8s Scheduler | 0x1e3251aac591d8390e85ccd4abf5bb3326af74396d0221f5eb2d40ea42d17c24 |
Pod scheduling | Active |
| Deployment Registry | (To be deployed) | App deployment tracking | 🚧 In Progress |
| Function | Purpose | Events Emitted | Status |
|---|---|---|---|
stake_and_register_worker |
Stake SUI & register worker | WorkerRegisteredEvent, StakeDepositedEvent |
Tested |
activate_worker |
Activate staked worker | WorkerStatusChangedEvent, JoinTokenSetEvent |
Tested |
submit_k8s_request |
Deploy Pods via contract | K8sAPIRequestScheduledEvent, WorkerAssignedEvent |
Tested |
register_deployment |
Register app deployment | DeploymentRegisteredEvent |
Planned |
sequenceDiagram
participant U as User
participant F as Frontend
participant W as Walrus
participant S as Sui Contracts
U->>F: 1. Connect Wallet
U->>F: 2. Upload Docker Image (.tar)
F->>W: 3. Store as Blob
W-->>F: 4. Return Blob ID
F->>S: 5. Register Deployment
S->>S: 6. Emit DeploymentRegisteredEvent
S-->>F: 7. Return Contract Record
F-->>U: 8. Display Access URL
sequenceDiagram
participant U as User/CLI
participant B as Sui Blockchain
participant N as Nautilus Master
participant K as K3s Control Plane
participant W as Worker Container
U->>B: 1. sui client call stake_and_register_worker
B->>B: 2. Emit WorkerRegisteredEvent
B->>B: 3. Emit StakeDepositedEvent
N->>B: 4. Listen for events
N->>N: 5. Process registration
U->>B: 6. sui client call activate_worker
B->>B: 7. Emit WorkerStatusChangedEvent
N->>N: 8. Set join token in contract
B->>B: 9. Emit JoinTokenSetEvent
U->>W: 10. docker run worker container
W->>K: 11. Join cluster with token
K-->>N: 12. Worker ready notification
sequenceDiagram
participant F as Frontend
participant B as Sui Blockchain
participant N as Nautilus Master
participant K as K3s Control Plane
participant W as Walrus
participant P as Pod
F->>B: 1. submit_k8s_request (with Walrus Blob ID)
B->>B: 2. Emit K8sAPIRequestScheduledEvent
B->>B: 3. Emit WorkerAssignedEvent (Load Balancing)
N->>B: 4. Listen for events
N->>N: 5. Process K8s request
N->>W: 6. Fetch Docker image from Blob
W-->>N: 7. Return image data
N->>K: 8. Auto execute kubectl command
K->>P: 9. Create Pod with Walrus image
K-->>N: 10. kubectl output: pod/xxx created
N->>N: 11. Log success
N->>B: 12. Update contract state
Connect your Sui wallet to get started. Make sure you have testnet SUI tokens for gas fees.
[WALLET CONNECTION STEP-BY-STEP GIF PLACEHOLDER]
- Project Folders: Select and upload entire project directories
- Docker Images: Upload .tar files created with
docker save - Individual Files: Support for single file uploads
[FILE UPLOAD OPTIONS DEMO GIF PLACEHOLDER]
# Build Docker image
docker build -t myapp .
# Save as tar archive
docker save myapp > myapp.tar
# Upload the tar file through the platform[DOCKER DEPLOYMENT PROCESS GIF PLACEHOLDER]
After upload completion, you'll receive:
- Blob ID for permanent reference
- Direct access URL through Walrus gateways
- On-chain deployment record
- Real-time deployment status
[DEPLOYMENT DASHBOARD WITH LIVE STATUS GIF PLACEHOLDER]