Dev Mode

Test the full EasyClaw dashboard locally without Docker, Stripe, or a VPS

What is Dev Mode?

Dev mode lets you run and test the entire EasyClaw dashboard UI without needing a real VPS, Docker engine, or Stripe account. It's designed for local development only.

When enabled, dev mode:

  • Skips Docker — Deploy, start, stop, restart, and delete actions update the database but don't create real containers. A fake container ID is assigned instead.
  • Skips Stripe checkout — The landing page flow redirects straight to the dashboard instead of going through Stripe payment.
  • Shows mock subscription — The subscription page displays a fake "Pro / Active" subscription so you can test the full dashboard without paying.
  • Keeps everything else real — Auth, database operations, API key encryption, model selection, and Telegram bot token management all work normally against your Supabase instance.

How to Enable

Add this line to your .env.local file:

NEXT_PUBLIC_DEV_MODE=true

Then restart the dev server:

npm run dev

Never enable dev mode in production. It bypasses billing enforcement and container provisioning.

Minimum .env.local for Dev Mode

With dev mode on, you only need a subset of environment variables. The VPS, Docker, and Stripe values can be placeholders:

# Required — Supabase (real values needed for auth + DB) NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # Required — Encryption (any 32-char hex string) ENCRYPTION_KEY=59507c5fd561661beda5836c23654104 # Dev mode flag NEXT_PUBLIC_DEV_MODE=true # Placeholders — not used in dev mode VPS_HOST=placeholder VPS_SSH_PRIVATE_KEY=placeholder VPS_SSH_HOST_KEY=placeholder STRIPE_SECRET_KEY=sk_test_placeholder NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_placeholder STRIPE_WEBHOOK_SECRET=whsec_placeholder NEXT_PUBLIC_SITE_URL=http://localhost:3000

What Works vs What Doesn't

FeatureDev ModeNotes
Google OAuth sign-inWorksRequires real Supabase project
Deploy instanceWorksCreates DB record with fake container ID
Start / Stop / RestartWorksUpdates DB status, skips Docker calls
Delete instanceWorksRemoves DB record, skips container removal
API key managementWorksEncrypted storage works, skips container restart
Telegram bot tokenWorksToken saved, skips container restart
AI model selectionWorksPreference saved in DB
Subscription pageMockShows fake "Pro / Active" subscription
Stripe checkoutSkippedLanding flow redirects to dashboard
Visit instance URLNoNo real container, subdomain won't resolve
Refresh status from DockerMockReturns current DB status, no Docker query

Switching to Production

When you're ready to go live, remove or set the flag to false:

NEXT_PUBLIC_DEV_MODE=false

Then fill in real values for all environment variables (VPS connection, Stripe keys, etc.) and redeploy. See the full .env.local.example for reference.