WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아이들이 요리를 물으면 음성으로 답하고 영상을 찍어, homecookd가 당신 말과 목소리로 레시피를 만들어 줍니다
Your kids ask for a dish. Answer by voice, then film it like always. homecookd turns it into a recipe they can follow, in your own words and voice. Free in early access.
라이프스타일TypeScript · PythonGitHub @calebwang26온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기homecookd: a parent cooks a family dish on video, and their kid gets a recipe they can follow. Built for the 2.6 hackathon.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An older family member cooks once. The next generation cooks it anywhere, hearing their real voice.
A family recipe app that keeps the person in the recipe and keeps the family talking.
Click the thumbnail or badge to watch the full demo video on YouTube
1. Recipes that keep the person. Family recipes were never written down. They live in the hands and voices of our older family members. homecookd turns one cooking video into a step-by-step recipe, and every step plays the cook's own clip.
2. Connection across distance and language. The family cook can record in their ethnic language without typing, and a younger family member follows along in English. When they get stuck, the question goes back to the cook, so the recipe starts a conversation.
3. Hands-free, voice-first. The kid's hands are covered in flour, so they cook by talking to homie, a voice guide that reads steps, sets timers and plays the family cook's clip of that moment.
| Folder | What's in it |
|---|---|
app/ | Expo / React Native iPhone app: the family cook records, the kid cooks by voice |
voice/ | Live voice service (homie) on Cloud Run: Cartesia Ink 2 + Sonic, Claude |
convex/ | Backend: families, recipes, questions, voice notes, live sync, Moss search |
pipeline/ | Python + ffmpeg video worker: cuts clips, runs Gemini and Muse Spark, publishes |
glasses/, edible-glasses/ | ESP32-S3 smart glasses and the VM that turns their stream into video |
web/ | Next.js site on Vercel: landing page, recipe share pages, invites |
cloud/ | Upload signer and Google Cloud setup scripts |
Built with: Cartesia (Ink 2, Sonic) · Claude · Gemini · Muse Spark (Meta) · Moss · Convex · Expo · Google Cloud · Vercel · ESP32-S3
Voice is how both people use homecookd: the kid's hands are busy, and many older family members would rather talk than type, often not in English.
First audio from Sonic arrives in about 120–250 ms.
Gemini is the part of homecookd that watches the family cook's video. To get there we tested several
Gemini models on real cooking footage and compared them on time, cost and accuracy. We finalized
on Gemini 3.8 Flash (gemini-3.8-flash).
| Job | Model | Where |
|---|---|---|
| Watch the video: steps, timestamps, ingredients, the cook's words | gemini-3.8-flash (final) | pipeline/process.py |
| Put out-of-order clips back in order (one small text-only call) | gemini-3.8-flash | pipeline/order.py |
| Check each recipe against frames from the video | gemini-3.8-flash | pipeline/evaluate.py |
| Translate the cook's voice-note answers (e.g. Marathi to English) | gemini-3.8-flash | convex/lib/translate.ts |
| Live listening for languages Ink 2 doesn't cover (Marathi) | gemini-3.5-transcribe-live | voice/src/geminiLive.ts |
| homie's backup voice when Sonic fails | gemini-3.8-flash-tts | voice/src/geminiTts.ts |
| Gemini 3.1 Pro (preview) | Gemini 3.8 Flash | |
|---|---|---|
| Price per 1M tokens (in / out) | $2.00 / $12.00 | $0.75 / $3.75 |
| Extract + merge, same 2 clips | ~$0.20 (90 s clip alone: $0.08, 33 s) | $0.047 for all 3 calls |
| Projected 3-hour recording | ~$3.60 – $6.30 | ~$1.30 – $2.40 |
| Speed | 15-min files could take 3+ min each | Noticeably faster; Batch API run of 2 clips done in ~3 min at half price |
| Accuracy | Most consistent step count run to run | Good recipes; step count varied slightly between runs (8 vs 9), fixed with schema checks and a retry |
Full numbers: docs/COSTS.md.
MEDIA_RESOLUTION_LOW pinned. 5,460 tokens per minute of video vs 17,340 on HIGH (3.2× fewer).pipeline/schema.py), with one retry, which evened out Flash's run-to-run variation.1. Add your keys. Copy .env.example to .env and app/.env.example to app/.env, then fill in
your own keys. No keys are committed to this repo.
2. Start the voice service (homie).
cd voice && npm ci && npm run dev
3. Start the app in a second terminal, then scan the QR code with Expo Go on your iPhone.
cd app && npm ci && npx expo start --clear
More detail: voice/README.md · docs/PRD.md · docs/build/STACK.md
iPhone (Expo app) Google Cloud (free tier) Laptop
───────────────── ──────────────────────── ──────
pick videos ──POST──▶ Cloud Run fn "edible-upload" ──▶ jobs/<id>.json (public status)
◀── signed PUT URLs ──
upload in background ─PUT─▶ gs://edible-uploads-… (private) ◀──poll── pipeline/worker.py
prep → Gemini → publish
library / recipe ◀──GET── gs://edible-media-… (public, no listing) ◀── play.mp4, voice.m4a,
poster.jpg, recipe.json, library.json
Setup: a Python .venv from pipeline/requirements.txt, ffmpeg, gcloud auth login --update-adc,
cloud/grant-iam.sh, cloud/deploy-signer.sh.
Process a video by hand:
.venv/bin/python pipeline/prep.py --id sunday-pancakes --title "Sunday Pancakes" --cook "Mom" --relation "Mom" input/pancakes/*.mov
.venv/bin/python pipeline/process.py --id sunday-pancakes
.venv/bin/python pipeline/publish.py --id sunday-pancakes
Process phone uploads: .venv/bin/python pipeline/worker.py --interval 60
(retry a job with --retry <job_id>).
If clips are out of order, process.py reorders them by content (tests: pipeline/test_order.py).
Check recipes with pipeline/schema.py; republish everything with pipeline/publish.py --all.