Your Personal AI Assistant powered by Ollama
ElliotOS is a comprehensive local AI assistant that integrates with multiple data sources to provide intelligent morning and evening summaries via Slack. It combines data from your calendar, emails, health metrics, productivity stats, news, and more to give you personalized insights and recommendations.
ElliotOS automatically generates personalized daily summaries by:
- ๐ Collecting Data from 8+ sources (health, productivity, news, sports, etc.)
- ๐ง AI Processing with local Ollama (privacy-first) or cloud AI fallbacks
- ๐ฑ Slack Delivery of beautiful morning and evening digests
- ๐ Smart Insights based on your actual usage patterns and data
- Current time and personalized greeting
- Today's calendar events (if configured)
- Health check (sleep quality, fitness goals)
- Current productivity status
- Chelsea FC updates
- World news headlines
- Daily focus recommendations
- Motivational insights
- Reflection on the day's activities
- Productivity and health summary
- Tomorrow's preview
- Wellness check and rest recommendations
- Sports and news recap
- Positive insights to end the day
- Local AI processing with Ollama (no data leaves your machine)
- Optional cloud fallbacks (OpenAI/Anthropic) only if you configure them
- Secure credential storage in environment variables
- No tracking or analytics unless you enable them
- ๐ Apple Health/HealthKit: Steps, sleep, activity rings, workouts
- ๐ป macOS System Stats: App usage, productivity metrics, system health
- ๐ Google Calendar: Events, meetings, scheduling conflicts
- ๐ง Gmail: Unread emails, important messages, mentions
- ๐ฌ Slack: Messages, mentions, team activity across workspaces
- ๐ฅ MyFitnessPal: Nutrition tracking, calories, meal logging
- ๐ฐ News APIs: World headlines, tech news, trending topics
- โฝ Chelsea FC: Match results, fixtures, team news, league position
- Primary: Ollama (local, private, fast)
- Fallback 1: OpenAI GPT (if configured)
- Fallback 2: Anthropic Claude (if configured)
- Fallback 3: Template responses (always works)
- macOS (for full functionality - some features work on other platforms)
- Python 3.8+
- Ollama installed and running locally
- Slack workspace with webhook or bot permissions
# Clone the repository
git clone <your-repo-url>
cd elliotos
# Run the setup script (installs dependencies and creates directories)
python3 setup.py
# Or install manually:
pip3 install -r requirements.txt# Install Ollama (if not already installed)
curl -fsSL https://ollama.ai/install.sh | sh
# Pull a recommended model
ollama pull mistral:latest
# OR
ollama pull llama3.1:8b
# Start Ollama (keep running in background)
ollama serveCopy the example environment file and edit it:
cp env.example .env
nano .env # or use your preferred editorMinimum required configuration:
# Ollama Configuration
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest
# Slack Configuration (choose one method)
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
# OR
SLACK_BOT_TOKENS=xoxb-your-bot-token
SLACK_SUMMARY_CHANNEL=#elliot-daily
# Schedule
MORNING_DIGEST_TIME=07:00
EVENING_DIGEST_TIME=21:00# Test data collection
python3 main.py --test-data
# Test Slack connection
python3 main.py --test-slack
# Test morning digest
python3 main.py --test-morning
# Check system status
python3 main.py --status# Start the scheduler (runs continuously)
python3 main.py
# Or run in background
nohup python3 main.py > elliotos.log 2>&1 &| File | Purpose | Location |
|---|---|---|
.env |
Main configuration | Root directory |
config/settings.py |
Settings validation | Auto-loaded |
logs/ |
Daily log files | Auto-created |
data/ |
Cached tokens/data | Auto-created |
# Ollama (Required)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest # or llama3.1:8b
# Slack (Required - choose one)
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../...
SLACK_BOT_TOKENS=xoxb-your-bot-token
SLACK_SUMMARY_CHANNEL=#elliot-daily
# Schedule (Required)
MORNING_DIGEST_TIME=07:00
EVENING_DIGEST_TIME=21:00
TIMEZONE=America/New_York# Google Services
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
[email protected],[email protected]
# Health & Fitness
[email protected]
MYFITNESSPAL_PASSWORD=your_password
APPLE_HEALTH_ENABLED=true
# News & Sports
NEWS_API_KEY=your_newsapi_key
CHELSEA_FC_ENABLED=true
FOOTBALL_API_KEY=your_football_api_key
# Backup AI Services
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
# Advanced Features
GITHUB_TOKEN=your_github_token
READWISE_TOKEN=your_readwise_token
NOTION_TOKEN=your_notion_token# Application Settings
LOG_LEVEL=INFO
DATA_RETENTION_DAYS=30
ENABLE_ANALYTICS=true
ENABLE_WEB_DASHBOARD=false
# macOS Features
MACOS_SCREEN_TIME_ENABLED=true
MACOS_APP_USAGE_ENABLED=true- Go to your Slack workspace settings
- Create a new webhook for your channel
- Add
SLACK_WEBHOOK_URLto.env
- Create a Slack app at api.slack.com
- Add bot token scopes:
chat:write,channels:read,users:read - Install the app to your workspace
- Add
SLACK_BOT_TOKENSto.env
-
Create Google Cloud Project:
- Go to Google Cloud Console
- Create a new project
- Enable Calendar API and Gmail API
-
Create OAuth Credentials:
- Go to "Credentials" โ "Create Credentials" โ "OAuth 2.0 Client IDs"
- Application type: "Desktop application"
- Download the JSON file
-
Configure Environment:
GOOGLE_CLIENT_ID=your_client_id GOOGLE_CLIENT_SECRET=your_client_secret [email protected]
- Get a free API key from NewsAPI.org
- Add to
.env:NEWS_API_KEY=your_newsapi_key
ElliotOS automatically integrates with:
- Apple Health (via HealthKit framework)
- macOS Screen Time (via system APIs)
- Activity Monitor (for app usage tracking)
No additional setup required on macOS.
# Run scheduled digests
python3 main.py
# Test individual components
python3 main.py --test-morning # Test morning digest
python3 main.py --test-evening # Test evening digest
python3 main.py --test-data # Test data aggregation
python3 main.py --test-slack # Test Slack connection
# System information
python3 main.py --status # Show system status# Test individual modules
python3 backend/fetch_calendar.py
python3 backend/fetch_health.py
python3 backend/fetch_slack.py
# Test data aggregation
python3 data_aggregator.py
# Test Slack bot
python3 -c "from slack_bot.bot import slack_bot; slack_bot.post_custom_message('Test message')"elliotos/
โโโ backend/ # Data fetching modules
โ โโโ fetch_calendar.py # Google Calendar integration
โ โโโ fetch_gmail.py # Gmail integration
โ โโโ fetch_slack.py # Slack integration
โ โโโ fetch_health.py # Apple Health integration
โ โโโ fetch_mac_stats.py # macOS system stats
โ โโโ fetch_nutrition.py # MyFitnessPal integration
โ โโโ fetch_news.py # News aggregation
โ โโโ fetch_chelsea.py # Chelsea FC data
โ โโโ ollama_client.py # AI integration
โโโ slack_bot/ # Slack integration
โ โโโ bot.py # Slack bot implementation
โโโ config/ # Configuration management
โ โโโ settings.py # Settings and validation
โโโ utils/ # Utilities
โ โโโ logger.py # Logging system
โโโ logs/ # Daily log files
โโโ data/ # Cached data and tokens
โโโ data_aggregator.py # Data aggregation engine
โโโ main.py # Main orchestrator
โโโ setup.py # Setup script
โโโ requirements.txt # Python dependencies
โโโ .env # Your configuration (create from env.example)
โโโ README.md # This file
1. Ollama Connection Failed
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Pull the model if missing
ollama pull mistral:latest2. Slack Messages Not Posting
# Test Slack connection
python3 main.py --test-slack
# Check webhook URL or bot token in .env
# Verify channel permissions3. Environment Variables Not Loading
# Ensure .env file exists (not env)
ls -la .env
# Check file format (one variable per line)
cat .env | head -5
# Verify no extra spaces or characters4. Google APIs Not Working
# Check credentials in .env file
# Verify APIs are enabled in Google Cloud Console
# Check OAuth consent screen configuration5. Health Data Not Available
# Ensure running on macOS
# Check privacy permissions in System Preferences
# Verify HealthKit access if using Apple HealthEnable detailed logging:
LOG_LEVEL=DEBUG python3 main.pyCheck log files:
tail -f logs/elliotos_$(date +%Y%m%d).logCreate a LaunchAgent:
# Create service file
cat > ~/Library/LaunchAgents/com.elliotos.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.elliotos</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>/path/to/elliotos/main.py</string>
</array>
<key>WorkingDirectory</key>
<string>/path/to/elliotos</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
# Load the service
launchctl load ~/Library/LaunchAgents/com.elliotos.plistFROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]- Local Processing: All AI processing happens locally via Ollama
- Secure Storage: Credentials stored in environment variables
- Data Retention: Configurable data retention policies
- Privacy First: Health and personal data never leaves your machine
- Optional Cloud: Only uses cloud APIs you explicitly configure
| Feature | Status | Configuration Required |
|---|---|---|
| ๐ค AI Processing | โ Working | Ollama setup |
| ๐ฑ Slack Integration | โ Working | Webhook or bot token |
| ๐ป macOS Stats | โ Working | None (automatic) |
| ๐ Apple Health | โ Working | None (automatic on macOS) |
| โฝ Chelsea FC | โ Working | None (uses mock data) |
| ๐ฐ News | NewsAPI key for real data | |
| ๐ Google Calendar | Google API credentials | |
| ๐ง Gmail | Google API credentials | |
| ๐ฅ MyFitnessPal | Login credentials | |
| ๐ฌ Slack Messages | Proper bot tokens |
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
# Install development dependencies
pip install -r requirements.txt
pip install pytest black flake8
# Run tests
pytest tests/
# Format code
black .
# Lint code
flake8 .This project is licensed under the MIT License - see the LICENSE file for details.
- Ollama for local AI inference
- Slack for communication platform
- Google for Calendar and Gmail APIs
- Apple for HealthKit and macOS integration
- NewsAPI for news aggregation
- Football-Data.org for sports data
ElliotOS - Your personal AI assistant that respects your privacy while keeping you informed and productive. ๐
If you encounter issues:
- Check the troubleshooting section above
- Review the logs in
logs/elliotos_YYYYMMDD.log - Test individual components with
--test-*flags - Ensure all required environment variables are set
For questions or feature requests, please open an issue in the repository.