This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
MineContext Glass is a "glasses-first personal context platform" that transforms daily life video streams from smart glasses into an organized, searchable knowledge base. It extends ByteDance's MineContext project with video-first context capture capabilities.
# Install dependencies using uv (required)
uv sync
# Set AUC Turbo credentials for speech recognition
export AUC_APP_KEY=your-app-key
export AUC_ACCESS_KEY=your-access-key# Start main context server (no capture mode for glass backend)
uv run opencontext start --port 8000 --config config/config.yaml --no-capture
# Process video for specific date (dd-mm format)
uv run glass start dd-mm --config config/config.yaml
# Generate glass report
uv run python -m opencontext.cli glass report --timeline-id <timeline> --lookback-minutes 120 --output persist/reports/<timeline>.mdcd glass/webui
npm install
npm run dev # Development server on port 5174
npm run build # Production build
npm run preview # Preview production build# Run all tests
uv run pytest
# Skip slow video ingestion tests
uv run pytest -m "not slow"
# Run specific test modules
uv run pytest glass/tests/ingestion/
uv run pytest glass/tests/reports/# Build executable with PyInstaller
./build.sh
# Result in dist/main, includes config and signaturescontext_capture → context_processing → context_storage → context_services → context_consumption
OpenContext Core (opencontext/)
- Five-layer architecture for general context management
- Handles screenshots, file monitoring, vault documents
- Vector DB + Document DB storage backends
- MCP server for application consumption
Glass Extension (glass/)
- Video ingestion pipeline with FFmpeg processing
- AUC Turbo speech recognition integration
- Timeline-based context organization
- Daily report generation
WebUI (glass/webui/)
- React + TypeScript frontend with Vite
- Video upload and management interface
- Report visualization and timeline browsing
- Zustand for state management
- Video Processing Pipeline:
glass/ingestion/→opencontext/processing/→ storage - Speech Recognition: Audio extraction → AUC Turbo API → transcription storage
- Timeline Generation: Video frames + audio → time-aligned context chunks
- Report Generation: Context aggregation → Doubao VLM → markdown reports
Backend Integration Gap: The FastAPI backend in glass/webui/backend/ serves mock JSON instead of real pipeline data. The TimelineRepository uses in-memory dict instead of GlassContextRepository.
State Management: No persistent state machine for upload tasks - tasks restart on server reload.
Data Consistency: CLI pipeline and WebUI backend use different data formats and storage mechanisms.
This project follows Linus Torvalds' development philosophy:
- Good Taste: Eliminate special cases, prefer clean data structures
- Never Break Userspace: Backward compatibility is sacred
- Pragmatism: Solve real problems, not theoretical ones
- Simplicity: Functions should be short, do one thing well
When reviewing code:
- 🟢 Good taste: Clean, no special cases
- 🟡 Tolerable: Works but could be simpler
- 🔴 Garbage: Overly complex or breaks principles
- uv Package Manager: Always use
uv runinstead of direct python commands - Python 3.9+: Minimum version requirement
- FFmpeg Dependency: Required for all video processing
- AUC Turbo API: Speech recognition requires valid credentials
- Local-First: All processing happens locally, no cloud dependencies
- Implement capture interface in
opencontext/capture/ - Add processing logic in
opencontext/processing/ - Update storage schema if needed
- Add CLI command in
opencontext/cli.py
- Ingestion logic:
glass/ingestion/ - Processing pipeline:
glass/processing/ - Storage integration:
glass/storage/ - Report generation:
glass/reports/
- Components in
glass/webui/src/components/ - API calls through
glass/webui/src/api/ - State management in
glass/webui/src/stores/ - Backend mocks in
glass/webui/backend/(replace with real integration)
- Minimum 80% test coverage for new code
- Use pytest fixtures from
glass/tests/conftest.py - Mock external APIs (AUC Turbo, Doubao) in tests
- Test video processing with small sample files
- Verify FFmpeg integration with
pytest.mark.slowtests
- Main config:
config/config.yaml - Environment variables override config file values
- Support for multiple languages (EN/ZH) in
config/prompts_*.yaml - AUC credentials must be set via environment variables
- Graceful Degradation: If speech recognition fails, continue with video-only processing
- User Feedback: Always provide clear error messages in CLI and UI
- Recovery: Implement retry logic for external API calls
- Logging: Use structured logging with appropriate levels
- Validation: Validate all inputs before processing (video formats, date ranges, etc.)