尚未偵測到更新。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.