Guiding you across the river of daily complexities
Your intelligent orchestrator for work, leisure, and life management
Charon is a multi-agent AI system that serves as your personal assistant, intelligently managing both productive work tasks and personal leisure time. Named after the mythological ferryman who guided souls across the river Styx, Charon navigates the complexities of your schedule and helps you make optimal decisions about how to spend your time.
- Specialized Agents: Each agent has domain expertise (work, leisure, files, calendar, etc.)
- Intelligent Routing: Automatically determines which agents to consult based on your request
- Contextual Coordination: Agents work together to provide comprehensive assistance
- ๐ Smart Scheduling: Analyzes your calendar to find optimal time slots and schedules activities
- ๐ Personal Content Curation: Manages your books, movies, YouTube subscriptions, and Substack newsletters
- ๐ป Development Workflow: Integrates with GitHub, analyzes local projects, estimates development time
- ๐๏ธ Calendar Management: Full Google Calendar integration for viewing and creating events
- ๐ Journal & Sleep Tracking: Personal insights and habit tracking
- ๐๏ธ Multimodal Interface: Voice input (STT) and voice output (TTS) with customizable voices
Big Boss Orchestrator Agent
โโโ Task Agent (Work & Productivity)
โ โโโ File Search Agent
โ โโโ GitHub Agent
โ โโโ Google Calendar Agent
โโโ Home Agent (Leisure & Entertainment)
โโโ Books Agent
โโโ Movies Agent
โโโ Recommender Agent
- Python 3.8+
- uv package manager
- Git
-
Clone the repository
git clone <your-repo-url> cd charon
-
Install dependencies
uv sync
-
Run the configuration wizard
uv run charon.py setup
-
Set up environment variables (see Environment Variables section)
-
Configure Google Calendar (see Google Calendar Setup section)
-
Start Charon
uv run charon.py chat
Create a .env file in the project root with the following variables:
# Required: Language Model API Keys
OPENROUTER_API_KEY=your_openrouter_api_key_here
# Required: GitHub Integration
GITHUB_TOKEN=your_github_personal_access_token
# Optional: Movie Information
OMDB_API_KEY=your_omdb_api_key
# Optional: YouTube Integration
YOUTUBE_API_KEY=your_youtube_api_key # Needed for YouTube recommendations
# Optional: Voice Features
ELEVENLABS_API_KEY=your_elevenlabs_api_key # For speech-to-text
# AWS Credentials (if using Bedrock models)
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_DEFAULT_REGION=us-east-1- OpenRouter: Get from openrouter.ai
- GitHub: Create a Personal Access Token in GitHub Settings โ Developer Settings
- OMDB: Free API key from omdbapi.com
- ElevenLabs: Get from elevenlabs.io (optional, for STT)
Charon integrates with Google Calendar for intelligent scheduling. Here's how to set it up:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the Google Calendar API:
- Navigate to "APIs & Services" โ "Library"
- Search for "Google Calendar API"
- Click "Enable"
- Go to "APIs & Services" โ "Credentials"
- Click "Create Credentials" โ "OAuth client ID"
- Configure OAuth consent screen if prompted:
- Choose "External" user type
- Fill required fields (app name, user support email, developer contact)
- Add your email to test users
- Create OAuth client ID:
- Application type: "Desktop application"
- Name: "Charon Calendar Integration"
- Download the credentials JSON file
- Rename the downloaded file to
credentials.json - Place it in your project root directory
- On first calendar use, Charon will open a browser for authorization
- Grant calendar permissions
- Credentials will be saved as
google_credentials.jsonfor future use
Charon requires these Google Calendar permissions:
https://www.googleapis.com/auth/calendar.events- Create and modify eventshttps://www.googleapis.com/auth/calendar- Read calendar data
# Start interactive chat
uv run charon.py chat
# Start with minimal UI
uv run charon.py chat --minimal
# Disable audio output
uv run charon.py chat --no-audio
# Run setup wizard
uv run charon.py setupWork & Productivity:
You: "I need to implement authentication for my React app. How long will it take and when can I schedule it?"
Charon: ๐ Consulting Task Agent
Analyzing your project structure and GitHub repository...
Based on your current React app structure, implementing authentication will take approximately 4-6 hours:
Looking at your calendar, I found perfect time slots:
โข Tomorrow 9:00 AM - 1:00 PM (4 hours) - Great for focused development
โข Thursday 2:00 PM - 4:00 PM (2 hours) - For testing and refinement
Shall I block these times for "React Authentication Implementation"?
Leisure & Entertainment:
You: "I have 2 hours free tonight. What should I do?"
Charon: ๐ Consulting Home Agent
I see you're free from 7:00-9:00 PM tonight! Here are some perfect options:
๐ **Reading**: Start "The Seven Husbands of Evelyn Hugo" - you loved similar character-driven stories
๐ฌ **Movie**: "The Grand Budapest Hotel" (99 mins) - matches your taste for visual storytelling
๐บ **YouTube**: 3-4 videos from your subscribed channels about AI and productivity
What sounds most appealing for your evening wind-down?
Mixed Planning:
You: "Balance my development work with reading time this week"
Charon: Let me coordinate your work schedule with leisure time...
๐ Consulting Task Agent for work commitments
๐ Consulting Home Agent for reading recommendations
**This Week's Balanced Schedule:**
**Work Focus Blocks:**
โข Mon/Wed/Fri: 9 AM - 12 PM (Morning coding sessions)
โข Tue/Thu: 2 PM - 5 PM (Afternoon development)
**Reading Sessions:**
โข Daily: 8:00-8:30 PM (30min evening reading)
โข Weekend: Sat 10 AM - 12 PM (2hr deep reading)
I've scheduled "The Midnight Library" for your evening sessions based on your recent preferences. Sound good?
With audio enabled, you can speak naturally to Charon:
- "What's on my calendar today?"
- "Find me something good to read"
- "Block two hours for coding tomorrow morning"
# In chat, use these commands:
sessions # Show all sessions
charon-switch-session <id> # Switch to different session
audio on/off # Toggle voice output
status # Show system status
help # Show available commandsBig Boss Orchestrator Agent
- Main entry point and request router
- Analyzes user intent (work vs leisure)
- Coordinates between Task Agent and Home Agent
- Manages journal entries and sleep tracking
Task Agent (Work & Productivity)
- Delegates to File Search Agent for local project analysis
- Delegates to GitHub Agent for repository management
- Delegates to Calendar Agent for work scheduling
Home Agent (Leisure & Entertainment)
- Delegates to Books Agent for reading recommendations
- Delegates to Movies Agent for viewing suggestions
- Delegates to Recommender Agent for content curation
- Integrates with Calendar Agent for leisure scheduling
Smart Context Switching
- Charon remembers context within conversations
- Seamlessly transitions between work and personal assistance
- Maintains session history for continuity
Intelligent Time Management
- Analyzes calendar patterns and availability
- Suggests optimal time blocks for different activities
- Considers energy levels, context switching, and buffer time
Personal Learning
- Journal integration captures preferences and patterns
- Learns from your ratings and choices
- Adapts recommendations based on your habits
charon/
โโโ config/
โ โโโ project-config.yaml # Main configuration
โ โโโ project-config-generated.yaml # Generated from setup
โโโ data/
โ โโโ book_list.json # Personal book library
โ โโโ movie_and_show.json # Movie/TV watchlist
โ โโโ sleep_tracking.json # Sleep data
โ โโโ sessions/ # Conversation history
โ โโโ substack_newsletters.json # Newsletter subscriptions
โ โโโ youtube_channels.json # YouTube subscriptions
โโโ src/
โ โโโ agents/ # Specialized agents
โ โ โโโ big_boss_orchestrator_agent.py
โ โ โโโ task_agent.py
โ โ โโโ home_agent.py
โ โ โโโ file_search_agent.py
โ โ โโโ github_agent.py
โ โ โโโ google_calendar_agent.py
โ โ โโโ books_agent.py
โ โ โโโ movies_agent.py
โ โ โโโ recommender_agent.py
โ โโโ cli/ # Command-line interface
โ โ โโโ charon_cli.py # Main CLI application
โ โโโ constants/ # Application constants
โ โ โโโ directories.py # Directory scanning constants
โ โโโ models/ # Data models (reserved for future use)
โ โโโ pipelines/ # Agent runner scripts
โ โ โโโ running_big_boss_orchestrator.py
โ โ โโโ running_task_agent.py
โ โ โโโ running_home_agent.py
โ โ โโโ running_*.py # Individual agent runners
โ โโโ playground/ # Experimental and testing code
โ โ โโโ playing_with_kokoro_tts.py
โ โ โโโ playing_with_nova_sonic.py
โ โโโ schemas/ # Data validation schemas
โ โ โโโ config_schema.py # Configuration validation
โ โ โโโ calendar_agent_returns_schema.py
โ โ โโโ file_search_returns_schemas.py
โ โ โโโ *.py # Other validation schemas
โ โโโ tools/ # Agent tools and functions
โ โ โโโ big_boss_orchestrator_tools.py
โ โ โโโ task_agent_tools.py
โ โ โโโ home_agent_tools.py
โ โ โโโ celander_tools.py # Google Calendar integration
โ โ โโโ file_search_tools.py
โ โ โโโ books_tools.py
โ โ โโโ movies_tools.py
โ โ โโโ recommender_agent_tools.py
โ โ โโโ sleep_tracking_tools.py
โ โโโ utils/ # Utilities and helpers
โ โโโ config_loader.py # Configuration loading
โ โโโ directory_scanning.py # File system utilities
โ โโโ google_calendar_auth.py # Google OAuth handling
โ โโโ tts_manager.py # Text-to-speech management
โ โโโ tts_callback_handler.py # TTS integration
โ โโโ demonic_voice_processor.py # Voice effects
โ โโโ substack_api_utils.py # Substack integration
โ โโโ youtube_api_utils.py # YouTube API utilities
โ โโโ prompts.py # Agent system prompts
โ โโโ callback_hanlder_subagents.py # UI callbacks
โโโ credentials.json # Google OAuth credentials
โโโ google_credentials.json # Google access tokens
โโโ .env # Environment variables
- Calendar Integration: Calendar tools and agent implementation adapted from PersonalAgents by JoelKong
- Strands Framework: Built using the strands-agents framework
- Kokoro TTS: Text-to-speech functionality using Kokoro voice synthesis
- Google Calendar API: Integration with Google Calendar for scheduling
- GitHub MCP: GitHub integration using Model Context Protocol
- Voice Effects: Demonic voice processing for thematic audio output
This project is licensed under the MIT License - see the LICENSE file for details.
Common Issues:
- TTS Not Working: Ensure Kokoro dependencies are installed:
pip install kokoro-tts - Calendar Auth Failed: Delete
google_credentials.jsonand re-authenticate - GitHub Access Issues: Verify your GITHUB_TOKEN has necessary repository permissions
- Model API Errors: Check your API keys and rate limits
Getting Help:
- Check the logs in your terminal for detailed error messages
- Verify all environment variables are set correctly
- Ensure all required APIs are enabled and have valid credentials
"Just as Charon navigated treacherous waters, this agent navigates your complex schedule." ๐ถโก