Spaces:
Running
Running
| # Local Setup | |
| ## 1. Supabase | |
| Create a Supabase project, then run `backend/supabase/migrations/001_initial_schema.sql` in the SQL editor or through the Supabase CLI. | |
| Required Supabase features: | |
| - Auth enabled. | |
| - Realtime enabled for `messages`, `conversations`, and `matches` when you want live updates. | |
| - `vector` extension enabled by the migration. | |
| - Service role key available only to the backend. | |
| ## 2. Stripe | |
| Create either: | |
| - A one-time Price and set `STRIPE_PRICE_ID`. | |
| - Or leave `STRIPE_PRICE_ID` empty and let the backend create dynamic Checkout line items using `ENTRY_FEE_CENTS`. | |
| Create a webhook endpoint: | |
| ```text | |
| POST https://your-backend-domain.com/api/payments/webhook | |
| ``` | |
| Subscribe it to: | |
| ```text | |
| checkout.session.completed | |
| ``` | |
| Set `STRIPE_WEBHOOK_SECRET` from the webhook signing secret. | |
| ## 3. AI | |
| OpenClaw defaults to a local Phi model served through an OpenAI-compatible endpoint. | |
| Recommended local target: | |
| ```text | |
| microsoft/Phi-4-mini-instruct | |
| ``` | |
| For llama.cpp GGUF inference, start a local server on port `8081`: | |
| ```powershell | |
| llama-server ` | |
| -hf ysn-rfd/Phi-4-mini-instruct-GGUF:Q4_0 ` | |
| --alias microsoft/Phi-4-mini-instruct ` | |
| --jinja ` | |
| --host 127.0.0.1 ` | |
| --port 8081 ` | |
| -c 32768 | |
| ``` | |
| Then configure the backend: | |
| ```text | |
| AI_PROVIDER=local | |
| AI_MODEL=microsoft/Phi-4-mini-instruct | |
| LOCAL_AI_BASE_URL=http://127.0.0.1:8081/v1 | |
| LOCAL_AI_API_KEY= | |
| ``` | |
| The local provider also works with vLLM or SGLang if they expose `/v1/chat/completions`. | |
| Cloud fallbacks are still supported: | |
| Set one provider: | |
| ```text | |
| AI_PROVIDER=anthropic | |
| AI_MODEL=claude-sonnet-4-20250514 | |
| ANTHROPIC_API_KEY=... | |
| ``` | |
| or: | |
| ```text | |
| AI_PROVIDER=grok | |
| AI_MODEL=grok-3-latest | |
| GROK_API_KEY=... | |
| GROK_BASE_URL=https://api.x.ai/v1 | |
| ``` | |
| Embeddings use an OpenAI-compatible embeddings endpoint: | |
| ```text | |
| EMBEDDING_BASE_URL=https://api.openai.com/v1 | |
| EMBEDDING_API_KEY=... | |
| EMBEDDING_MODEL=text-embedding-3-small | |
| EMBEDDING_DIMENSIONS=1536 | |
| ``` | |
| The database migration uses `vector(1536)`, so update the migration if you use a different embedding dimension. | |
| ## 4. Backend | |
| ```powershell | |
| cd backend | |
| Copy-Item .env.example .env | |
| npm install | |
| npm run typecheck | |
| npm run build | |
| npm run dev | |
| ``` | |
| Health check: | |
| ```powershell | |
| Invoke-RestMethod http://localhost:8080/health | |
| ``` | |
| ## 5. Flutter | |
| Install Flutter, then from `frontend/`: | |
| ```powershell | |
| flutter create --platforms=web,android,ios . | |
| flutter pub get | |
| flutter run ` | |
| --dart-define=SUPABASE_URL=https://your-project.supabase.co ` | |
| --dart-define=SUPABASE_ANON_KEY=your-anon-key ` | |
| --dart-define=BACKEND_URL=http://localhost:8080/api | |
| ``` | |