Contributing to AugmentOS
Thank you for your interest in contributing to AugmentOS! This guide will help you understand the project architecture, development workflow, and how to make effective contributions.
Project Overview​
AugmentOS is an open-source operating system, app store, and development framework for smart glasses. The system follows a distributed architecture where most processing happens in the cloud, with the glasses primarily acting as input/output devices.
Core Components​
System Components​
-
AugmentOS Manager (
augmentos_manager/
):- React Native application for smartphones
- User interface for managing glasses, apps, and settings
- Interfaces with native modules on iOS/Android
-
AugmentOS Core (
augmentos_core/
):- Android native module
- Handles Bluetooth communication with glasses
- Manages glass connections and capabilities
-
iOS Native Module (
augmentos_manager/ios
):- iOS native module
- Handles Bluetooth communication with glasses
- Manages glass connections and capabilities
-
ASG Client (
augmentos_asg_client/
):- Android app for Android-based smart glasses
- Enables glasses to connect to the AugmentOS ecosystem
- Provides a BLE API for android-based glasses to connect to AugmentOS Manager
- Communicates with AugmentOS Cloud directly for streaming photos/videos
-
AugmentOS Cloud (
augmentos_cloud/
):- Node.js backend services
- Manages app sessions, transcription, and display
- Handles real-time communication between glasses and TPAs
- Controls app lifecycle and display rendering
-
AugmentOS Store (
augmentos_cloud/store/
):- Web application for users to discover and install apps
- Showcases available third-party applications
- Provides app ratings, descriptions, and screenshots
- Handles app installation
-
AugmentOS Developer Console (
augmentos_cloud/developer-portal/
):- Web application for developers to register and manage apps
- Provides tools for app submission and updates
- Includes documentation and SDK resources
-
Third-Party Apps:
- External web servers that connect to AugmentOS cloud
- Use webhooks and websockets for real-time communication
- Leverage AugmentOS SDK for display and input handling
Data Flow​
Third-Party App Architecture​
Third-party apps in the AugmentOS ecosystem follow a specific pattern:
- Webhook Endpoint - Entry point for starting an app session
- WebSocket Connection - Real-time communication channel
- Event Subscriptions - Listen for specific user events
- Display Requests - Send content to be displayed on glasses
Development Environment Setup​
Prerequisites​
- Node.js and npm/yarn/bun
- Android Studio (for Android development)
- Xcode (for iOS development)
- Docker and Docker Compose (for cloud development)
Project Links​
- GitHub Project Board for General Tasks
- GitHub Project Board for iOS Specific Tasks
- All GitHub Projects
Setting Up the Manager App​
# Clone the repository
git clone https://github.com/AugmentOS-Community/AugmentOS.git
cd AugmentOS/augmentos_manager
# Install dependencies
npm install
# For iOS
cd ios && pod install && cd ..
# Start the development server
npm start
# Run on Android/iOS
npm run android
# or
npm run ios
Setting Up the Cloud Backend​
cd AugmentOS/augmentos_cloud
# Install dependencies
bun install
# Setup Docker network
bun run dev:setup-network
# Start development environment
./scripts/docker-setup.sh
# or
bun run setup-deps
bun run dev
Build Commands​
Android Core​
# Build the Android core
./gradlew build
./gradlew assembleDebug
# Run Android tests
./gradlew test
./gradlew androidTest
React Native​
# Start the development server
npm start
# Build and run on Android/iOS
npm run android
npm run ios
# Build Android packages
npm run build-android
npm run build-android-release
# Run tests
npm test
npm test -- -t "test name" # Run a single test
# Lint code
npm run lint
Contribution Workflow​
- Fork the Repository: Create your own fork of the AugmentOS repository.
- Create a Branch: Make your changes in a new branch.
- Develop and Test: Make your changes and test thoroughly.
- Submit a Pull Request: Create a PR with a clear description of your changes.
Coding Standards and Guidelines​
Naming Conventions​
- Top-level folders follow the pattern:
augmentos_${component}
- User-facing names use CamelCase: "AugmentOS App", "AugmentOS Store", "AugmentOS Manager"
- Code follows language-specific conventions (Java, TypeScript, Swift, etc.)
Code Style​
- For TypeScript/JavaScript: Follow ESLint configurations
- For Java: Follow Android code style guidelines
- For Swift: Follow Swift style guide
Documentation​
- Update relevant documentation when adding new features
- Include code comments for complex logic
- Create or update API documentation as needed
Testing​
- Write unit tests for new features
- Ensure your changes pass existing tests
- Test on actual devices when possible
Communication​
- Join our Discord community
- Report issues on GitHub
- Discuss major changes in advance
Where to Start​
Good First Issues​
- Documentation improvements
- Bug fixes
- UI enhancements
- Test improvements
Key Areas for Contribution​
- Display Rendering: Improve UI components and layouts
- Glasses Support: Add support for new smart glasses models
- SDK Enhancements: Improve developer experience
- Performance Optimization: Reduce latency and improve efficiency
License​
By contributing to AugmentOS, you agree that your contributions will be licensed under the MIT License, which is the project's license. The full license text can be found here.