Local setup
Prerequisites:
- Node.js 19+, pnpm
- OpenClaw installed (see Self-hosting)
- Two phone numbers: one for the OpenClaw bot (its WhatsApp account) and one to message from (your personal phone). You cannot send messages to yourself on WhatsApp.
Start the OpenClaw gateway
CI/CD
LogLife uses two CI/CD pipelines: GitHub Actions for testing and plugin deployment, and Vercel for the website.GitHub Actions secrets
If you fork this repository, you need to add the following secrets in Settings > Secrets and variables > Actions:| Secret | Used by | Description |
|---|---|---|
SERVER_HOST | deploy.yml | Public IP or hostname of the production server |
SERVER_USER | deploy.yml | SSH username on the production server |
SSH_PRIVATE_KEY | deploy.yml | Private SSH key authorized on the server (see below) |
LOGLIFE_API_KEY | deploy.yml | LogLife plugin API key — used for post-deploy health checks |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | ci.yml | Clerk publishable key — needed for the website build step |
Vercel environment variables
Set these in your Vercel project settings:| Variable | Description |
|---|---|
OPENCLAW_API_URL | Production API URL (e.g. https://api.loglife.co) |
OPENCLAW_API_KEY | Same key as LOGLIFE_API_KEY above |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Clerk publishable key |
CLERK_SECRET_KEY | Clerk secret key (server-side only) |
Plugin deployment
When plugin changes are pushed tomain, the deploy workflow (.github/workflows/deploy.yml):
- SSHes into the production server
- Pulls the latest code
- Restarts the OpenClaw gateway (graceful — waits for in-flight replies to drain)
- Runs a health check against the plugin endpoints
sessions.json. In-memory verification codes are cleared, but that’s expected (5-minute TTL, users simply re-request).
Health checks
The deploy workflow verifies two things after each restart:GET /loglife/sessions?phone=healthcheckreturns 404 (plugin loaded, searched, found nothing)POST /loglife/verify/checkwith dummy data returns 200 (verify endpoint loaded)
Website deployment
The website deploys to Vercel automatically on push tomain. No gateway restart needed — the website is a separate deployment that connects to the plugin via OPENCLAW_API_URL.
User lifecycle and onboarding tests
Use these commands to verify the V1 onboarding flow and monitor user state while testing.Monitor registered users
One-time check:Remove a user quickly
Use the helper script:V1 onboarding test checklist
Start from a clean user state
Remove your test phone with
unregister-user.sh.Confirm
/loglife/users shows your phone is no longer registered.Run dashboard onboarding
In the dashboard, enter your phone number and continue the V1 flow:
- register first, 2) send/check verification code.
You should receive a verification code on WhatsApp and complete verification.
Verify backend state
Query
/loglife/users and confirm your user appears.The
count increases and your phone appears in users.Verify idempotency
Repeat the same registration for the same phone.
Registration should not create duplicates.
Docs preview
To preview documentation changes locally:http://localhost:3000.