尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证App build
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Five private-beta companions on one engine. Each is one page: add up to 10 photos, ask a question, or both, and get an answer with a point of view.查看完整 README ↗Five private-beta companions on one engine. Each is one page: add up to 10 photos, ask a question, or both, and get an answer with a point of view.
The code is shared. Each companion is its own Vercel project with its own address, name, icon and link preview, chosen by one setting: COMPANION=gio, tony, martini, alden or goldie (hub for the Cinq landing page).
Jack has retired. He stays in the code as Jack (jack.ts, jack-prompt.ts) so his old address, still COMPANION=jack, shows a page saying he's no longer one of Cinq's advisors, under his own name and icon. It takes no new questions (the ask route answers 410). Nothing a person asked Jack was ever saved, so there is nothing to move, and nothing presents Jack's link as Alden.
Open by default. Anyone with the address can use the app, with no sign-in. The start screen has a Share button that sends the address by Messages, Mail or WhatsApp. Each visitor can ask 40 questions an hour (QUESTIONS_PER_HOUR), and every question goes on your Anthropic account, so set a monthly spend limit at platform.claude.com → Settings → Limits. The pages are marked not-for-search-engines, but anyone you send the link to can forward it.
Sign-in, if you want it back: set REQUIRE_SIGN_IN=true on a project and redeploy. Then:
INVITE_CODE to something long and hard to guess. The start screen's button becomes Invite, sharing https://<address>/join/<INVITE_CODE>. Whoever opens it enters an email and is in, no password. Ban people in Supabase to remove them; change INVITE_CODE to retire the link.On a phone, Share → Add to Home Screen installs the app with its own icon, opening full screen.
Testers see plain messages ("Amar isn't available right now", "Gio is busy right now"). The reason (a rejected key, no credit, a missing setting) goes to the server log: Vercel → your project → Logs, filtered to errors.
NEXT_TELEMETRY_DISABLED=1 on Vercel too. Fonts are bundled at build time, so the browser never contacts Google. Leave Vercel Analytics and Speed Insights off.Browser ──► Next.js on Vercel ──► Anthropic (claude-opus-5-5, web search)
│
└──► Supabase Auth (sign-in only)
src/components/studio.tsx is the whole interface: the start screen, the conversation and the composer (camera button, optional text, send). A failed answer puts the question and photos back to resend; answers can be copied.src/lib/companions/ holds each companion: its system prompt (gio-prompt.ts, tony-prompt.ts, martini-prompt.ts, alden-prompt.ts, untangled-prompt.ts; jack-prompt.ts for the retired Jack), its capabilities, and the words the page shows (name, tagline, placeholder, status lines). currentCompanion() picks one from COMPANION; ACTIVE_LINEUP is the five on Cinq.src/app/icon.tsx, apple-icon.tsx, opengraph-image.tsx and manifest.ts give each companion its home-screen icon (a letter on each companion's iconTile colour; Alden's claret tile is a placeholder until an approved Alden icon exists) and link preview, drawn at build time with the fonts in assets/fonts (SIL Open Font License).src/lib/ask/photos.ts shrinks photos in the browser. src/lib/ask/budget.ts keeps each request under Vercel's 4.5 MB body limit by dropping the oldest photos from long visits first.src/app/api/ask/route.ts checks the sign-in, validates the request and streams the answer as NDJSON.src/lib/ask/prompt.ts assembles what the model sees, in order: the companion's system prompt, then an app capabilities block (what the app does, that it keeps nothing, that it doesn't know who's asking), then the conversation.src/lib/ai/anthropic.ts streams from Claude with web search, resumes paused search turns, and falls back server-side when a request is refused.To change how a companion thinks, edit its src/lib/companions/<name>-prompt.ts and redeploy both projects' latest deployment (a merge does this automatically).
Needs Node 20+.
npm installnpx supabase start locally, which needs Docker).cp .env.example .env.local and fill in the Supabase URL and publishable key and your Anthropic key. Set COMPANION=tony, martini or jack to run another companion.npm run dev and open http://localhost:3000.The supabase/ folder holds migrations from the earlier, fuller version of Gio. The app no longer reads those tables; an existing project can keep them, and a new one doesn't need them.
npm test # prompt assembly, the ask route, request budgeting, the Anthropic provider
npm run lint
npm run typecheck
npm run build
scripts/dev/mock-anthropic.mjs is an offline stand-in for the Anthropic API. Run it and set ANTHROPIC_BASE_URL=http://127.0.0.1:4010 to try the app without a key.
Every variable is documented in .env.example.
| Variable | Purpose |
|---|---|
COMPANION | gio (default), tony, martini, alden, goldie, or hub; jack only on Jack's retired address. Read at build time: redeploy after changing it |
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | Sign-in, when it's on. NEXT_PUBLIC_SUPABASE_ANON_KEY also works, as set by the Vercel Supabase integration |
ANTHROPIC_API_KEY | Claude |
CHAT_MODEL | Defaults to claude-opus-5-5 (GIO_CHAT_MODEL also works) |
CHAT_EFFORT | How much the companion thinks before answering. Defaults to high |
WEB_SEARCH_MAX_USES | Web searches allowed per answer. Defaults to Gio 5, Amar 8, Martini 5, Alden 5, Goldie 0; 0 turns search off |
REQUIRE_SIGN_IN | Optional. true requires sign-in; unset, the app is open to anyone with the address |
QUESTIONS_PER_HOUR | Optional. Per-visitor cap, default 40; 0 turns it off |
INVITE_CODE | Optional, with sign-in on. Turns on link invitations (/join/<code>) and the Invite button |
SUPABASE_SERVICE_ROLE_KEY | Needed for link invitations; server-side only. Set by the Vercel Supabase integration (SUPABASE_SECRET_KEY also works) |
NEXT_PUBLIC_ALDEN_URL | Hub only. Alden's address for his card on Cinq. Unset, a preview's card says "Coming soon", and a production hub build stops (src/lib/launch.ts) so the live hub never does |
NEXT_TELEMETRY_DISABLED | Set to 1 |
vercel.json pins the framework to Next.js.A second companion is a second Vercel project from the same repo: Add New → Project → import The-Host again, name it (say, tony), and add the same variables plus COMPANION=tony. Connect the same Supabase project (Storage → Connect) so testers keep one login. Every merge to main redeploys both.
Answers stream. The ask route allows up to 300 seconds and ends an answer 20 seconds before that with a message, keeping what was written; lower maxDuration in src/app/api/ask/route.ts if your plan's limit is lower, or raise it (up to your plan's limit) to give long answers more time.
Live prices come from web search, which must be enabled for your Anthropic organization. If a companion never searches, an admin can turn it on in the Claude Console under organization privacy settings.