Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
전략 에이전트가 목표를 근거 있는 브리프로 만들고, 합성 페르소나가 검토하며, 담당자가 최종 승인합니다
Strategy agents turn a campaign objective into an evidenced brief; synthetic personas critique it; a person signs it off.
마케팅TypeScript · PLpgSQLGitHub @rorymcclelland온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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