A React Native mobile client for Google's Jules AI coding assistant
🇯🇵 日本語 • 📐 Architecture • 🔌 API Reference • 🤖 Agent Guide • 🍎 GitHub Integration • 📖 User Guide • 💻 Developer Guide
- 📱 Cross-Platform - Works on iOS and Android via Expo
- 🌙 Dark Mode - Full dark/light theme support
- 🌐 i18n - Japanese and English localization
- 🔐 Secure Storage - API keys stored securely with expo-secure-store
- 💬 Real-time Chat - View and interact with Jules sessions
- 📝 Markdown Support - Rich text rendering with syntax highlighting
- ⚡ Optimized Performance - Memoized components and efficient list rendering
- 🍎 GitHub Integration - Complete GitHub repository management and monitoring
- 🔄 Repository Sync - Automatic synchronization with intelligent caching
- 📋 Pull Request Analysis - AI-powered code review and analysis
- 🔔 Notifications - Real-time alerts for repository events and workflow status
| Sessions | New Task | Settings |
|---|---|---|
| View all active sessions | Create new coding tasks | Configure API key & preferences |
The Jules Mobile Client now includes comprehensive GitHub integration features:
- Automatic Sync: Background synchronization with configurable intervals
- Smart Caching: Intelligent cache invalidation and management
- Offline Support: Full functionality without internet connection
- Conflict Resolution: Automatic handling of local vs remote changes
- AI-Powered Review: Intelligent code review and analysis using Jules AI
- Automated Reviews: Automatic PR review generation with actionable feedback
- Metrics Calculation: Comprehensive PR metrics including complexity scoring
- Review Workflow: Full integration with GitHub review and approval workflows
- Real-time Alerts: Push notifications for repository events and workflow status
- Customizable Preferences: User-configurable notification settings and filtering
- Event Types: Support for workflow, PR, repository, comment, and mention events
- Smart Filtering: Quiet hours support and intelligent notification filtering
- Workflow Monitoring: Real-time monitoring of GitHub Actions workflows
- Run History: Complete workflow run history and detailed logs
- Status Updates: Real-time status changes and notifications
- Log Viewing: Access to detailed workflow execution logs
- URL-based Sessions: Create sessions directly from GitHub URLs
- Repository Context: Sessions include repository metadata and context
- Branch Selection: Choose specific branches for coding sessions
- Smart Templates: Repository-specific prompt templates
For detailed information about GitHub integration, see GitHub Integration Guide.
- Bun (recommended JavaScript runtime)
- Node.js 18+ (alternative)
- Expo CLI
- Jules API Key from Google Cloud Console
# Clone the repository
git clone https://github.com/Involvex/jules-mobile-client.git
cd jules-mobile-client
# Install dependencies (using bun - recommended)
bun install
# Or install Expo-specific packages
bunx expo install <package-name>
# Start the development server
bun start# iOS Simulator
bun ios
# Android Emulator
bun android
# Web Browser
bun web# Development
bun start # Start Expo dev server
bun ios # Run on iOS simulator
bun android # Run on Android emulator
bun web # Run in browser
# Package management
bun install # Install all dependencies
bun add <pkg> # Add a new package
bunx expo install <pkg> # Add Expo-compatible package version
# Other
bun lint # Run ESLint
bun reset-project # Reset to clean state- Open the app
- Navigate to Settings tab
- Enter your Jules API Key
- The key is securely stored on your device
💡 Get your API key from Google Cloud Console or Jules Settings page.
jules-mobile-client/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigation screens
│ │ ├── index.tsx # Sessions list
│ │ ├── repos.tsx # GitHub repositories
│ │ └── settings.tsx # Settings screen
│ ├── session/ # Session management
│ │ └── [id].tsx # Session detail/chat
│ ├── create-session.tsx # New task creation
│ ├── licenses.tsx # License information
│ ├── modal.tsx # Modal components
│ └── _layout.tsx # Root layout
├── components/
│ ├── github/ # GitHub integration components
│ │ ├── enhanced-repository-manager.tsx
│ │ ├── github-session-creator.tsx
│ │ ├── github-url-handler.tsx
│ │ ├── notifications-center.tsx
│ │ ├── optimized-workflow-dashboard.tsx
│ │ ├── pull-request-analyzer.tsx
│ │ ├── repository-sync-manager.tsx
│ │ ├── webhook-management.tsx
│ │ ├── workflow-card.tsx
│ │ ├── workflow-dashboard.tsx
│ │ ├── workflow-job-card.tsx
│ │ ├── workflow-run-card.tsx
│ │ ├── workflow-run-details.tsx
│ │ ├── workflow-logs-viewer.tsx
│ │ └── workflow-notifications.tsx
│ ├── jules/ # Jules-specific components
│ │ ├── activity-item.tsx # Chat bubbles + ActivityItemSkeleton
│ │ ├── session-card.tsx # Session cards + SessionCardSkeleton
│ │ ├── loading-overlay.tsx
│ │ ├── code-block.tsx # Syntax highlighted code
│ │ └── data-renderer.tsx # Data visualization
│ └── ui/ # Generic UI components
│ ├── collapsible.tsx
│ ├── icon-symbol.ios.tsx
│ ├── icon-symbol.tsx
│ └── optimized-list.tsx
├── constants/
│ ├── api-key-context.tsx # API key management
│ ├── github-context.tsx # GitHub integration context
│ ├── i18n-context.tsx # Internationalization context
│ ├── i18n.ts # Translations
│ ├── theme-enhanced.ts # Enhanced theming
│ ├── theme.ts # Color schemes
│ └── types.ts # TypeScript types
├── credentials/
│ └── android/ # Android credentials
├── docs/ # Documentation
├── hooks/
│ ├── use-color-scheme.ts
│ ├── use-color-scheme.web.ts
│ ├── use-github-api.ts # GitHub API integration
│ ├── use-github-deep-linking.ts
│ ├── use-github-service.ts
│ ├── use-github-session.ts
│ ├── use-github-webhooks-native.ts
│ ├── use-github-webhooks.ts
│ ├── use-jules-api.ts # Jules API hook
│ ├── use-notifications.ts
│ ├── use-pull-request-analysis.ts
│ ├── use-repository-manager.ts
│ ├── use-repository-sync.ts
│ ├── use-secure-storage.ts
│ ├── use-theme-color.ts
│ └── use-workflow-updates.ts
├── services/
│ └── github.ts # GitHub service layer
├── utils/
│ ├── enhanced-cache.ts
│ └── performance.ts
├── __tests__/ # Test suite
│ ├── accessibility.test.tsx
│ ├── e2e.test.tsx
│ ├── github-integration.test.ts
│ ├── github-repos-integration.test.tsx
│ ├── github-webhooks-native.test.ts
│ ├── notifications.test.ts
│ ├── performance.test.ts
│ ├── pull-request-analysis.test.ts
│ ├── repository-sync.test.ts
│ ├── security.test.ts
│ └── workflow-integration.test.ts
└── assets/ # Static assets
The app integrates with the Jules API to:
- List Sessions - View all coding sessions
- Create Sessions - Start new tasks with repository context
- View Activities - Real-time chat history with polling
- Approve Plans - Confirm AI-generated plans
See API Reference for detailed documentation.
| Technology | Purpose |
|---|---|
| Expo SDK 54 | React Native framework |
| Expo Router | File-based routing |
| React Native 0.81 | Mobile UI framework |
| TypeScript | Type safety |
| expo-secure-store | Secure storage |
| react-native-markdown-display | Markdown rendering |
# Install EAS CLI
npm install -g eas-cli
# Login to Expo
eas login
# Build for Android (APK)
eas build --platform android --profile production
# Build for iOS
eas build --platform ios --profile production| Profile | Description |
|---|---|
development |
Development client with debugging |
preview |
Internal distribution APK |
production |
Production-ready build |
Contributions are welcome! Please read our contributing guidelines before submitting a PR.
- Fork the repository on GitHub to your account
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/jules-mobile-client.git cd jules-mobile-client - Set up upstream remote to stay updated with the main repository:
git remote add upstream https://github.com/Involvex/jules-mobile-client.git
- Create a feature branch for your changes:
git checkout -b feature/your-feature-name # or for bug fixes git checkout -b fix/issue-description - Make your changes and ensure they follow the project's coding standards
- Run tests to verify your changes:
bun test - Commit your changes with descriptive messages:
git add . git commit -m "Add: brief description of your feature"
- Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request to the main repository (
Involvex/jules-mobile-client)
To keep your fork in sync with the upstream repository:
# Fetch upstream changes
git fetch upstream
# Merge upstream changes into your main branch
git checkout main
git merge upstream/main
# Push updates to your fork
git push origin main- Follow TypeScript best practices
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is licensed under the BSD 2-Clause License - see the LICENSE file for details.
- Google Jules - AI coding assistant
- Expo - Amazing React Native tooling
- React Native - Mobile framework
If you find this project helpful, consider supporting its development! You can sponsor the maintainer through various platforms:
- GitHub Sponsors: Sponsor Involvex
- Buy Me a Coffee: Support on Buy Me a Coffee
- PayPal: Donate via PayPal
- Bing Rewards: Earn and donate points
For more funding options, see our FUNDING.yml file.
Made with ❤️ by Involvex


