Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A demonstration multi-agent campaign studio: AI agents take a marketing campaign from a one-line objective to checked, on-brand ads in every size and language, with a person approving every step that spends, publishes, or replaces work. Non-commercial; fictional brands and simulated data.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗A multi-agent campaign studio for marketing teams. Three squads of AI agents (Strategy, Creative and Performance) share one Business Context store and take a campaign from a one-line objective to on-brand creative that stays above its performance threshold. A person approves every consequential move.
About this project. Studio is a demonstration, built to show how a team of AI agents can take on marketing production safely, and it has no commercial aim: it is not for sale, and it is not offered as a service. The idea was inspired by multi-agent campaign platforms I saw while working at Elsewhen. Studio was built independently, after I left, and uses none of Elsewhen's code, data, or designs. All brands and figures in the app are fictional or simulated.
Status: Sprint 9 of 11 (Performance I: simulator and monitor). What works today:
The rest of the Performance squad (fatigue forecasts, swaps and budget) arrives in Sprint 10. Every performance figure is simulated, and the app says so wherever it shows one.
Next.js 16 on Vercel (London), Postgres on Neon (London, with row-level security per workspace), Studio's own sign-in with links sent by Resend, Inngest for durable agent workflows, the Vercel AI SDK with Claude and Gemini behind one provider layer. See docs/decisions/ for why (0015 for Neon and the sign-in).
Needs Node 22 and a local Postgres 16 on port 54329 (trust auth for postgres).
npm ci
cp .env.example .env.local # the console mailer and MODEL_PROVIDER_OVERRIDE=mock need no keys
npm run db:reset # rebuild the local database from db/migrations, with the dev seed
npm run dev # app on http://localhost:3000
npm run inngest # workflow dev server on http://localhost:8288 (separate terminal)
To sign in, enter an ALLOWED_EMAILS address on /signin. Locally no email is sent: the sign-in link is written to the npm run dev log (look for [mail]); open it and press Continue. It works once, for 15 minutes.
With MODEL_PROVIDER_OVERRIDE=mock nothing is spent. To use real models, set ANTHROPIC_API_KEY (and GOOGLE_GENERATIVE_AI_API_KEY for Gemini) and remove the override.
| Command | Does |
|---|---|
npm run typecheck / npm run lint | Types and lint, zero warnings |
npm test | Unit, database (tenancy and RLS) and agent-workflow tests |
npm run test:e2e | Playwright against a running app and Inngest dev server |
npm run check:secrets | Blocks anything key-shaped from being committed |
npm run db:migrate | Applies pending files in db/migrations to DATABASE_URL and records them in schema_migrations; -- --dry-run lists them and changes nothing |
CI runs all of these on every push. A git pre-commit hook and Claude Code hooks run the same checks locally.
Sprint sign-off (decision 0021). Every agreed test case is in tests/e2e/cases.ts with how it is checked. In CI the browser tests are recorded, and each push's results and recordings go to the branch e2e-results/ci/<branch>; node scripts/demo-page.mjs --results <checkout of that branch> --sprint <N> --out <folder> builds the demo page Rory signs the sprint off from. Locally, E2E_VIDEO=1 npm run test:e2e records too, and node scripts/e2e-results.mjs --out <folder> gathers a run's results the same way.
Honest by default; fictional brands only; people approve consequential actions; every agent run is traceable; spend is capped; secrets stay out of the repo; tenancy from day one; the image model never draws text. In full in CLAUDE.md.
docs/refinement/: each sprint's stories, test cases and agreed answersdocs/decisions/: decision recordsdocs/design/directions.md: the Sprint 1 design directions (Soft machine chosen; see decision 0007 and /design for the design system)docs/hosting.md: setting up Neon, Resend, Vercel, Inngest and the model keys, and applying migrationsdocs/new-demo-app.md: the sign-in, migrations and Neon set-up to copy into the next demo app