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