An integrated multimodal hackathon platform combining:
Live Agent(real-time voice interaction with ORB visualization)Creative Storyteller(image + video generation pipeline)Workflow Orchestration(task routing, artifact tracking, sync status)UI Navigator(placeholder module for future phase)
- Realtime Live Agent voice session with interruption handling
- Auto-routing from voice/transcript to creative generation tasks
- Storyteller generation flow:
- style suggestion
- image generation
- video generation
- Artifact panel with local/cloud status and links
- Cloud health checks + local fallback mode
- Upload service scaffold for Cloud Run + Cloud Storage
- Frontend: React + TypeScript + Vite
- Realtime module: Lit + Three.js + Gemini Live
- Generation APIs:
@google/genai - Backend upload service: Node.js + Express + Multer + GCS SDK
- Deployment target: Google Cloud Run + Cloud Storage
src/modules/live-agent- ORB Live API module and 3D visualssrc/modules/creative-storyteller- multimodal generation UI + servicessrc/orchestration- routing, tasks, workflow state, compliance guardsrc/cloud/services- cloud upload + cloud health clientssrc/shell- integrated app shell and panelsservices/cloud-upload- deployable upload service backenddocs/- architecture, mappings, handoff, integration notes
- Node.js 20+
- npm
- (Optional for cloud deploy) Google Cloud SDK (
gcloud)
- Install dependencies:
npm install
- Configure env:
- copy
.env.example->.env
- copy
- Set at least:
GEMINI_API_KEY
- Run:
npm run dev
- Open:
http://localhost:3000
GEMINI_API_KEY- required for Gemini Live + generationCLOUD_PERSIST_ENDPOINT- optional upload endpoint (/artifacts/upload)CLOUD_PERSIST_API_KEY- optional API key header (x-upload-api-key)
PORT- default8080BUCKET_NAME- target Cloud Storage bucketGOOGLE_CLOUD_PROJECT- GCP project idCORS_ORIGINS- allowed frontend originsUPLOAD_API_KEY- optional upload API key (must match frontend)MAKE_PUBLIC-falsefor signed URLs,truefor public objectsMAX_UPLOAD_BYTES- upload limit
The app supports three sync states:
Local-first mode- no cloud endpoint configuredCloud sync temporarily offline- endpoint configured but unreachableCloud sync online- upload service reachable and active
Location:
services/cloud-upload
Run locally:
cd services/cloud-uploadnpm install- configure
.env npm run dev
Endpoints:
GET /healthzPOST /artifacts/upload(multipart form-data:file,kind,prompt,timestamp)
You can deploy services/cloud-upload to Cloud Run and point:
CLOUD_PERSIST_ENDPOINT=https://<service-url>/artifacts/upload
Important:
- Some org policies block public Cloud Run (
allUsersinvoker) - If blocked, use local upload service or private authenticated proxy pattern
Deployment helper:
services/cloud-upload/deploy.ps1
- Start frontend and confirm ORB renders
- Start mic and verify Live Agent session/events
- Trigger multimodal request and verify:
- workflow task transitions
- image/video artifacts
- cloud/local sync status
- Toggle fallback mode and test offline behavior
- Build check:
npm run build
UI Navigatoris currently a placeholder module- Intent routing is heuristic regex-based (not model-classified)
- Cloud Run public access may be restricted by org IAM policy
docs/architecture.mddocs/file-mapping.mddocs/suyama-handoff.md