Go from zero to deployed in under 5 minutes. Install the CLI, create an account, scaffold a project, and deploy it to the Tawa platform.
npm install -g tawa
Verify the installation:
tawa --version
tawa login
This opens your browser to Bio-ID where you can sign up or log in. On first registration the platform automatically:
Confirm you are authenticated:
tawa whoami
For CI pipelines or AI coding agents (Claude, Cursor, etc.) that cannot open a browser, use stored credentials. The --save flag persists your email and password so the CLI can re-authenticate without a browser:
tawa login --email [email protected] --password 'MyPass!' --save
This writes a YAML file at ~/.tawa/credentials with 0600 permissions. You can also create it manually — especially useful for passwords containing special characters:
# ~/.tawa/credentials (YAML format, 0600 permissions)
email: [email protected]
password: "MyPass!"
The CLI resolves credentials in this priority order:
--email and --password passed directlyTAWA_EMAIL and TAWA_PASSWORD~/.tawa/credentialsTwo official templates are available:
| Template | Command | What you get |
|---|---|---|
| Eco App | tawa sample my-app --eco-app | Full-stack Next.js 15 app with Bio-ID auth, MongoDB, Septor audit, Relay email, cron jobs, and admin dashboard |
| Static Site | tawa sample my-site --static | Static HTML/CSS site with Tailwind 4 design tokens served by nginx |
Every template includes a pre-configured catalog-info.yaml and is ready to deploy.
tawa sample my-app --eco-app
cd my-app
pnpm install
tawa dev --offline # mock services + .env.local generation
pnpm dev # starts on port 4140
tawa dev --offline provides mock Bio-ID (auto-login), mock Septor, Relay, and Storage so you can develop without any external dependencies.
tawa sample my-site --static
cd my-site
pnpm install
pnpm build # compiles Tailwind CSS
tawa deploy --prod
Pass --git to any scaffold to automatically create a git.insureco.io repo and configure the auto-deploy webhook:
tawa sample my-app --eco-app --git
Open catalog-info.yaml. This is the single source of truth for how the builder deploys your service.
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: my-app
description: My app
annotations:
insureco.io/framework: nextjs
spec:
type: service
lifecycle: production
owner: my-org
auth:
mode: sso # auto-provisions Bio-ID OAuth client
databases:
- type: mongodb # auto-provisions MONGODB_URI
metadata.name becomes your service hostname: my-app.tawa.pro (production) or my-app.sandbox.tawa.pro (sandbox).
tawa preflight
Validates catalog-info.yaml syntax, health endpoint, git remote, and framework annotation. Fix any errors before deploying.
tawa deploy --prod
| Flag | Environment | URL Pattern |
|---|---|---|
| (default) | Sandbox | {name}.sandbox.tawa.pro |
--prod | Production | {name}.tawa.pro |
--uat | UAT | {name}.uat.tawa.pro |
WARNING: Always use
tawa deploy --prodfor production deployments. Sandbox deployments trigger real cron jobs and email sends — sandbox isolation controls are not yet in place.
tawa status # deployment status
tawa builds # recent builds
tawa logs # stream live logs
When you run tawa deploy, the builder automatically:
catalog-info.yamltawa troubleshoot
| Symptom | Likely Cause | Fix |
|---|---|---|
| CrashLoopBackOff | Health endpoint missing or wrong port | Ensure insureco.io/health-endpoint matches a real route |
| OOMKilled | Pod tier too small | Increase insureco.io/pod-tier (small, medium, large) |
| Deploy gate failure | Insufficient wallet balance | Buy tokens or lower pod tier |
| Database connection refused | Missing spec.databases | Add database config to catalog-info.yaml |
Last updated: March 30, 2026