AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
AutoMem은 Claude, Cursor, Copilot, Codex, ChatGPT 등 MCP 호환 AI 도구에 지속 메모리를 제공합니다
AutoMem gives Claude, Cursor, Copilot, Codex, ChatGPT, and MCP-compatible AI tools persistent memory through MCP and Streamable HTTP.
개발 도구JavaScript · AstroGitHub @verygoodplugins온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.