Quickstart
From a wallet to a live URL: sign in, choose a plan, deploy an image and give it its variables.
This guide deploys the public nginx image as a web service. A static site needs no plan at all: to host one, go to Static sites.
Before you start
- A Solana wallet in your browser.
- USDC on Solana for the plan, and a little SOL for the network fee.
Sign in
Open wabi.is and choose Connect wallet. Your wallet asks you to sign a message that names wabi.is. It is a message, not a transaction: it costs nothing and moves nothing. Your session lasts 30 days.
More in Wallet sign-in.
Choose a plan
Web services, workers and databases run on a plan. Pick one and a term:
| Plan | Per month | vCPU | Memory | Disk | Services |
|---|---|---|---|---|---|
| Hobby | $8 | 1 | 1 GB | 5 GB | 3 |
| Pro | $20 | 2 | 4 GB | 20 GB | 10 |
| Scale | $50 | 4 | 8 GB | 50 GB | 30 |
Three months take 5% off, twelve months 15%. If you stake WABI, your tier's discount can come off as well (Staking).
wabi makes a quote that holds its price for 15 minutes. Your wallet signs and sends one USDC transfer, and the plan starts once the transaction is finalized on Solana. On a phone, scan the quote's QR code with your wallet instead.
Every plan's full resources are in Limits; how payment works is in Plans and payment.
Create a project
A project groups related services. Create one and give it a name of 1–40 characters, for example shop.
Create a web service
In the project, create a web service with an image as its source:
| Setting | Value |
|---|---|
| Name | hello |
| Image | nginx |
| Port | 80 |
| CPU | 0.5 vCPU |
| Memory | 512 MB |
wabi sends traffic to the service's port, 8080 unless you set another, and sets the PORT environment variable to it. nginx listens on port 80 and doesn't read PORT, so set the port to 80. An app that listens on PORT works with the default.
The service's address label defaults to its name. Labels are unique across all of wabi, so if hello is taken, choose another.
Add variables first
nginx needs no variables. When you deploy your own app, it usually does: an API key, a database URL. In that case, choose to add variables before the first deploy. wabi creates the service without starting it, you enter the values, your wallet signs them as version 1, and then you deploy.
Each value is sealed in your browser before it leaves, and opened only inside your service's microVM. PORT is set by wabi, so it is never one of your variables. More in Sealed variables.
See it live
The deployment moves from queued to deploying to live. wabi pulls the image, pins it by digest, starts it in its own microVM, and routes traffic to it once it accepts connections on port 80.
Your service is now at https://<label>.projectwabi.app, with a certificate already in place:
curl -I https://<label>.projectwabi.appNext steps
- Build and deploy on every push: Deploy from GitHub.
- Add a database and connect it with a reference: Postgres.
- Serve the service on your own domain: Domains.
- Follow its output and resource use: Logs and metrics.
- Learn how sizes, health checks and rollbacks work: Services.