Livelab init#156
Conversation
- Created a new Python project with a virtual environment and dependencies. - Added README.md with setup instructions and example usage. - Implemented simple_quickstart.py for basic search functionality. - Developed advance_query.py for advanced search options with filtering. - Included .python-version to specify Python version. - Added pyproject.toml for project metadata and dependencies. - Generated uv.lock for dependency management.
There was a problem hiding this comment.
Pull request overview
Adds multiple “live lab” sample projects demonstrating how to use the Moss SDK across Python, TypeScript, and a full image-search demo (setup scripts + backend + React UI), plus a LiveKit-based voice agent example.
Changes:
- Add Python and TypeScript quickstart/query examples with uv/npm lockfiles.
- Add a voice-agent example integrating Moss retrieval into a LiveKit agent.
- Add an end-to-end image-search demo (dataset tooling, FastAPI backend, React UI, and assets).
Reviewed changes
Copilot reviewed 51 out of 63 changed files in this pull request and generated 23 comments.
Show a summary per file
| File | Description |
|---|---|
| Moss-live-labs/python/uv.lock | Adds locked Python dependencies for the Python examples. |
| Moss-live-labs/python/simple_quickstart.py | Basic async example that loads an index and runs a query. |
| Moss-live-labs/python/pyproject.toml | Declares Python example project metadata/dependencies. |
| Moss-live-labs/python/advance_query.py | Advanced Python query example using QueryOptions. |
| Moss-live-labs/python/README.md | Setup + usage docs for Python examples. |
| Moss-live-labs/python/.python-version | Pins the Python version for the Python examples. |
| Moss-live-labs/examples/voice-agent/pyproject.toml | Declares voice-agent dependencies (LiveKit + Moss). |
| Moss-live-labs/examples/voice-agent/agent.py | Implements a LiveKit agent that injects Moss search results into chat context. |
| Moss-live-labs/examples/voice-agent/README.md | Setup + run docs for the voice-agent sample. |
| Moss-live-labs/examples/voice-agent/.python-version | Pins the Python version for the voice-agent example. |
| Moss-live-labs/examples/image-search/setup-py/uv.lock | Locks Python dependencies for image-search setup scripts. |
| Moss-live-labs/examples/image-search/setup-py/query.py | Python script to load and query a tiered image index. |
| Moss-live-labs/examples/image-search/setup-py/pyproject.toml | Declares deps for Python setup tooling. |
| Moss-live-labs/examples/image-search/setup-py/download_coco.py | Downloads COCO captions + generates tiered JSON datasets. |
| Moss-live-labs/examples/image-search/setup-py/create_index.py | Creates a Moss index for a selected COCO tier (Python). |
| Moss-live-labs/examples/image-search/setup-py/create_all_indexes.py | Creates indexes for all tiers (Python). |
| Moss-live-labs/examples/image-search/setup-js/tsconfig.json | TypeScript config for JS setup tooling. |
| Moss-live-labs/examples/image-search/setup-js/query.ts | JS script to load/query a tiered image index. |
| Moss-live-labs/examples/image-search/setup-js/package.json | Dependencies/scripts for JS setup tooling. |
| Moss-live-labs/examples/image-search/setup-js/downloadCoco.ts | JS downloader + tiered dataset generator for COCO captions. |
| Moss-live-labs/examples/image-search/setup-js/createIndex.ts | JS script to create a tiered Moss index. |
| Moss-live-labs/examples/image-search/setup-js/createAllIndexes.ts | JS script to create indexes for all tiers. |
| Moss-live-labs/examples/image-search/readme.md | Top-level image-search demo documentation. |
| Moss-live-labs/examples/image-search/react-app/vite.config.ts | Vite configuration for the React UI. |
| Moss-live-labs/examples/image-search/react-app/tsconfig.node.json | TS config for Vite config/build tooling. |
| Moss-live-labs/examples/image-search/react-app/tsconfig.json | TS project references for the React app. |
| Moss-live-labs/examples/image-search/react-app/tsconfig.app.json | TS config for React app source compilation. |
| Moss-live-labs/examples/image-search/react-app/src/utils/searchUtils.ts | Client utilities for calling the Python backend + tier definitions. |
| Moss-live-labs/examples/image-search/react-app/src/utils/galleryUtils.ts | Maps query results to gallery UI items. |
| Moss-live-labs/examples/image-search/react-app/src/styles/Lightbox.css | Lightbox styling for image viewer. |
| Moss-live-labs/examples/image-search/react-app/src/styles/ItemsPage.css | Main search/results page styling. |
| Moss-live-labs/examples/image-search/react-app/src/styles/ItemDetailPage.css | Styling for individual image detail page. |
| Moss-live-labs/examples/image-search/react-app/src/pages/ItemsPage.tsx | Main search page UI logic + lightbox integration. |
| Moss-live-labs/examples/image-search/react-app/src/pages/ItemDetailPage.tsx | Image detail page (requires navigation state). |
| Moss-live-labs/examples/image-search/react-app/src/main.tsx | React entrypoint wiring. |
| Moss-live-labs/examples/image-search/react-app/src/index.css | Global app theme + base styles. |
| Moss-live-labs/examples/image-search/react-app/src/components/Lightbox.tsx | Lightbox component with keyboard navigation. |
| Moss-live-labs/examples/image-search/react-app/src/components/Favicon.tsx | Runtime favicon swap to Moss logo. |
| Moss-live-labs/examples/image-search/react-app/src/App.tsx | Router + page composition. |
| Moss-live-labs/examples/image-search/react-app/src/App.css | Minimal root/app layout styling. |
| Moss-live-labs/examples/image-search/react-app/public/images/InferEdgeLogo_Dark_Mono_Icon.png | Adds logo asset used in UI. |
| Moss-live-labs/examples/image-search/react-app/public/images/InferEdgeLogo_Dark_Icon.png | Adds logo asset used in UI. |
| Moss-live-labs/examples/image-search/react-app/public/Moss-logo.jpeg | Adds favicon/logo asset. |
| Moss-live-labs/examples/image-search/react-app/package.json | React app dependencies and scripts. |
| Moss-live-labs/examples/image-search/react-app/index.html | React app HTML template (fonts/title/favicon). |
| Moss-live-labs/examples/image-search/react-app/eslint.config.js | ESLint configuration for the React app. |
| Moss-live-labs/examples/image-search/react-app/.gitignore | React app ignore rules. |
| Moss-live-labs/examples/image-search/backend-py/requirements.txt | Adds pip requirements for backend (in addition to uv/pyproject). |
| Moss-live-labs/examples/image-search/backend-py/pyproject.toml | Declares backend dependencies (FastAPI + Moss + uvicorn). |
| Moss-live-labs/examples/image-search/backend-py/main.py | FastAPI backend that loads indexes on-demand and proxies search. |
| Moss-live-labs/examples/image-search/backend-py/Dockerfile | Container build/run for the backend using uv. |
| Moss-live-labs/examples/image-search/.gitignore | Ignores env, venvs, and generated COCO artifacts for the demo. |
| Moss-live-labs/TypeScript/package.json | Declares TypeScript example dependencies. |
| Moss-live-labs/TypeScript/package-lock.json | Locks TypeScript example dependencies. |
| Moss-live-labs/TypeScript/advance_query.ts | Advanced TypeScript query example using query options. |
| Moss-live-labs/TypeScript/README.md | Setup + usage docs for TypeScript examples. |
| Moss-live-labs/TypeScript/simple_quickstart.ts | Placeholder for basic TypeScript quickstart (currently empty). |
| Moss-live-labs/.gitignore | Root ignore rules for environments/build artifacts. |
Files not reviewed (2)
- Moss-live-labs/TypeScript/package-lock.json: Language not supported
- Moss-live-labs/examples/image-search/setup-js/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 2. Copy the env file and fill in your keys: | ||
|
|
||
| ```bash | ||
| cp .env.example .env | ||
| ``` | ||
|
|
There was a problem hiding this comment.
This README instructs users to copy from .env.example, but there is no .env.example file in Moss-live-labs/examples/voice-agent/. Either add the referenced file or update the instructions to match the actual setup.
| ```bash | ||
| cd setup-js && npm install && npx tsx createIndex.ts && cd .. | ||
| ``` | ||
| > To use 10k, 50k, or 100k tiers, run `npx tsx downloadCoco.ts` first to generate those files. |
There was a problem hiding this comment.
1k is enough, no need beyond that for demo
- Created .env.example for environment variable configuration. - Added .python-version file to specify Python version. - Introduced README.md with setup instructions and example usage. - Implemented simple_quickstart.py for basic query functionality. - Developed advance_query.py for advanced querying options. - Added pyproject.toml for project metadata and dependencies. - Generated uv.lock for dependency management.
| All routes are mounted under the `/demo/image-search` prefix: | ||
| - `GET /demo/image-search/search` — semantic search endpoint | ||
| - `GET /demo/image-search/health` — health check | ||
| - `GET /demo/image-search/image-proxy` — secure image proxy (rewrites `http://` COCO URLs to pass through the backend) |
There was a problem hiding this comment.
🚩 README documents a /demo/image-search/image-proxy endpoint that doesn't exist in the backend
The readme at moss-live-labs/examples/image-search/readme.md:79 lists GET /demo/image-search/image-proxy as an available route described as a "secure image proxy". However, no such endpoint is defined in moss-live-labs/examples/image-search/backend-py/main.py — the router only has /health and /search. This is a documentation discrepancy that could confuse users trying to use the API.
Was this helpful? React with 👍 or 👎 to provide feedback.
## Pull Request Checklist Please ensure that your PR meets the following requirements: - [ ] I have read the [CONTRIBUTING](CONTRIBUTING.md) guide. - [ ] I have updated the documentation (if applicable). - [ ] My code follows the style guidelines of this project. - [ ] I have performed a self-review of my own code. - [ ] I have added tests that prove my fix is effective or that my feature works. - [ ] New and existing unit tests pass locally with my changes. ## Description Adds working samples/examples for the Livelabs ## Type of Change - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] This change requires a documentation update <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/usemoss/moss/pull/156" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end -->
Pull Request Checklist
Please ensure that your PR meets the following requirements:
Description
Adds working samples/examples for the Livelabs
Type of Change