AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Marketing site, blog, and docs for AutoMem — long-term graph+vector memory for AI agents (Astro + Cloudflare Pages).
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Marketing site, blog, and product documentation for AutoMem — an intelligent memory service for AI agents.
Live: https://automem.ai
/docs/*Three runtimes share this project:
functions/ (plain .js) handle the waitlist signup, double-opt-in confirm, unsubscribe, and admin broadcast endpoints. They are dispatched through src/middleware.ts./_emdash/* for editorial workflows, backed by its own D1 database and KV-stored sessions.npm run dev swaps the Cloudflare adapter out and uses libsql + filesystem sessions locally (workerd cannot load Node DB drivers in dev). npm run build swaps the adapter back in and uses D1 + KV.
npm install
npm run dev # Astro dev server on http://localhost:4321 (host 0.0.0.0)
npm run build # Production build via scripts/build-pages.mjs
npm run preview # Preview production build
npm run check-links # Linkinator broken-link check (run AFTER npm run build)
npm run cms:seed:validate
npm run cms:seed:apply
npm run cms:migrate-blog
Always use
npm run build, neverastro builddirectly — the build pipeline does extra work (see below).
Blog content is CMS-first. src/content/blog is migration input only; runtime blog routes and RSS must not read markdown files or use getCollection('blog'). Local EmDash commands explicitly target data/emdash.db.
npm run build runs scripts/build-pages.mjs, which:
pages_build_output_dir from wrangler.toml (Astro's adapter rejects the build if it's present).astro build.scripts/bundle-worker.mjs (esbuild) to bundle the Pages worker.wrangler.toml in a finally block.The src/live.config.ts and src/live.config.emdash.ts files are kept side-by-side so EmDash can read whichever one is appropriate per environment — they're not swapped during the build.
automem-website/
├── src/
│ ├── components/ # Astro + React components (mascot, hero, EmailSignup, SEO schemas)
│ ├── content/
│ │ └── docs/ # Starlight documentation
│ ├── content.config.ts # Content collection definitions (docs only)
│ ├── layouts/ # Layout.astro (single base layout)
│ ├── lib/ # Shared utilities (blog helpers, emdash email plugin)
│ ├── live.config.ts # EmDash live preview config (dev)
│ ├── live.config.emdash.ts # EmDash live preview config (prod, swapped in at build)
│ ├── middleware.ts # Workers env bootstrap, API/admin route dispatch
│ ├── pages/ # Routes (.astro / .mdx)
│ └── styles/ # global.css (Tailwind v4 @theme + CSS vars), starlight-custom.css
├── functions/ # Cloudflare Pages Functions (plain .js)
│ ├── api/signup.js # Waitlist signup (Turnstile + D1 + optional double opt-in)
│ ├── confirm.js # HMAC-token email confirmation
│ ├── unsubscribe.js # HMAC-token unsubscribe
│ ├── admin/ # Bearer-token-protected admin endpoints
│ └── lib/ # tokens.js (HMAC), email.js, campaigns.js
├── scripts/
│ ├── build-pages.mjs # Build orchestrator (use via npm run build)
│ ├── bundle-worker.mjs # esbuild worker bundling
│ ├── check-links.js # Linkinator wrapper
│ ├── migrate-blog-to-emdash.mjs # One-way markdown-to-CMS migration
│ └── file-doc-map.json # Source-to-doc mapping for /update-docs workflow
├── seed/
│ └── seed.json # EmDash schema, menus, widgets, settings, byline
├── schema/ # D1 schemas (waitlist, etc.)
├── public/ # Static assets
├── patches/ # patch-package patches
├── astro.config.mjs
└── wrangler.toml # Cloudflare bindings (D1, KV) for prod and preview
The waitlist needs a D1 database; EmDash needs a second D1 database and a KV namespace.
# Create the waitlist D1
npx wrangler d1 create automem-waitlist
npx wrangler d1 execute automem-waitlist --file=./schema/d1-schema.sql
# Create the EmDash D1
npx wrangler d1 create automem-emdash
# Create the sessions KV
npx wrangler kv namespace create SESSION
Update wrangler.toml with your own database and namespace IDs. The IDs in this repo point at the verygoodplugins/automem-website deployment and are not credentials — they're resource pointers and won't grant access without the matching Cloudflare account.
See WAITLIST_SETUP.md for the full waitlist setup, including double-opt-in and Resend wiring.
Public vars are declared in wrangler.toml (PUBLIC_API_URL, PUBLIC_GITHUB_URL, PUBLIC_TURNSTILE_SITE_KEY).
Secrets are never committed — set them in the Cloudflare Pages dashboard under Settings → Environment variables → Encrypted, or via wrangler pages secret put. The endpoints expect:
| Variable | Used by | Notes |
|---|---|---|
ADMIN_TOKEN | functions/admin/* | Long random string; bearer auth for admin endpoints |
RESEND_API_KEY | signup, confirm, broadcast, admin preview, EmDash email | Resend API key |
TURNSTILE_SECRET_KEY | functions/api/signup.js | Cloudflare Turnstile server secret |
CONFIRM_SECRET | confirm, unsubscribe | HMAC signing secret (falls back to ADMIN_TOKEN) |
FROM_EMAIL, FROM_NAME, BASE_URL | email senders | Defaults exist; override per environment |
DOUBLE_OPT_IN, SEND_WELCOME_EMAIL | signup | Feature flags |
For local dev, mirror these in .dev.vars (gitignored).
Preview isolation note: wrangler.toml currently uses a separate preview
EMDASH_DB, but preview still shares the waitlist D1 database and SESSION
KV namespace with production. Before enabling write-capable PR previews for
signup/admin/session flows, create preview-specific waitlist D1 and session KV
resources and bind those under [env.preview].
Deployed to Cloudflare Pages. The repo-owned production deploy path is
.github/workflows/deploy.yml, which builds with npm run build and uploads
dist/client via wrangler pages deploy --project-name automem-website --branch main. If Cloudflare's connected Git integration is enabled in the dashboard,
keep one deploy path canonical and disable or document the other to avoid double
deploys.
To deploy manually:
npm run build
npx wrangler pages deploy dist/client --project-name=automem-website
This site documents three sibling projects:
Documentation source-to-doc mapping lives in scripts/file-doc-map.json. See AGENTS.md for the full doc update workflow.
feat(scope):, fix(scope):, docs:, chore:, refactor:).extends astro/tsconfigs/strict); ESM throughout.package.json by hand.@tailwindcss/vite..env, .dev.vars, data/, uploads/, or .wrangler/.See AGENTS.md for the full contributor guide.
To report a security issue, please use GitHub Security Advisories on this repository (Security → Report a vulnerability). See SECURITY.md for scope and disclosure policy.