Skip to content

Latest commit

Β 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MAY β€” Personal AI Assistant πŸ€–

Built my own Friday. MAY is a fully functional personal AI assistant inspired by Friday from Iron Man β€” powered by Claude Sonnet, deployed on mobile, and always one step ahead.


✨ What MAY Can Do

  • 🧠 Claude Sonnet 4.5 β€” razor-sharp AI reasoning
  • πŸ” Real-time web search β€” Claude's native search, no extra APIs
  • πŸ“… Google Calendar β€” read, create, and delete events
  • πŸ“§ Gmail β€” read, filter, and summarize emails
  • βœ… Google Tasks β€” list, create, and complete tasks
  • πŸ’Ύ Persistent memory β€” Supabase + pgvector semantic search across sessions
  • πŸ“± React Native mobile app β€” Chat, Dashboard, and Memory screens
  • πŸ”Š Voice responses β€” TTS speaks MAY's replies aloud
  • ☁️ Deployed on Render β€” works anywhere, not just on WiFi

πŸ—οΈ Architecture

React Native App  ──HTTP──▢  FastAPI (Render)  ──▢  MAYOrchestrator
                                  β”œβ”€β”€ POST /chat          (Claude + memory)
                                  β”œβ”€β”€ GET  /calendar/today (Google Calendar)
                                  β”œβ”€β”€ GET  /memories       (Supabase)
                                  └── GET  /health

πŸ—‚οΈ Project Structure

MAY/
β”œβ”€β”€ serve.py                  # FastAPI server entry point
β”œβ”€β”€ main.py                   # CLI entry point
β”œβ”€β”€ pyproject.toml
β”‚
β”œβ”€β”€ may/
β”‚   β”œβ”€β”€ config.py             # Centralised env/config loading
β”‚   β”œβ”€β”€ orchestrator.py       # Claude agent + skill orchestration
β”‚   β”‚
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   └── server.py         # FastAPI REST endpoints
β”‚   β”‚
β”‚   β”œβ”€β”€ memory/
β”‚   β”‚   └── supabase_memory.py   # Long-term memory (Supabase + pgvector)
β”‚   β”‚
β”‚   β”œβ”€β”€ notifications/
β”‚   β”‚   └── scheduler.py      # Proactive notifications (APScheduler)
β”‚   β”‚
β”‚   └── skills/
β”‚       β”œβ”€β”€ productivity/     # Google Calendar
β”‚       β”œβ”€β”€ gmail/            # Gmail integration
β”‚       └── tasks/            # Google Tasks
β”‚
β”œβ”€β”€ mobile/                   # React Native app (Expo)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ screens/          # Chat, Dashboard, Memory
β”‚   β”‚   β”œβ”€β”€ components/       # MessageBubble, MicButton, EventCard...
β”‚   β”‚   └── api/              # mayClient.js
β”‚   └── App.js
β”‚
└── credentials/              # Google OAuth tokens (git-ignored)

πŸš€ Quick Start

Prerequisites

  • Python 3.11+
  • Node.js 20 LTS
  • Supabase project with pgvector enabled
  • Anthropic API key
  • Google Cloud project with Calendar, Gmail, Tasks APIs enabled

Backend Setup

# Clone and install
git clone https://github.com/RYTH-07/MAY.git
cd MAY
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

# Configure environment
copy .env.example .env
# Fill in your API keys in .env

# Run Supabase migration (in Supabase SQL Editor)
# See may/memory/supabase_memory.py for the SQL

# Start backend
python serve.py

Mobile Setup

cd mobile
npm install --legacy-peer-deps

# Update src/api/mayClient.js with your backend URL
# Then start Expo
npx expo start

βš™οΈ Environment Variables

ANTHROPIC_API_KEY=           # Anthropic API key
SUPABASE_URL=                # Supabase project URL
SUPABASE_SERVICE_ROLE_KEY=   # Supabase service role key
GOOGLE_CREDENTIALS_PATH=     # Path to google_credentials.json
GOOGLE_TOKEN_PATH=           # Path to google_token.json
GOOGLE_TOKEN_JSON=           # Token JSON string (for Render deployment)
GOOGLE_CREDENTIALS_JSON=     # Credentials JSON string (for Render deployment)
VOYAGE_API_KEY=              # Voyage AI key for embeddings

πŸ—ƒοΈ Memory Architecture

Layer Storage Purpose
Short-term Python list Current conversation context
Long-term Supabase + pgvector Semantic memories across sessions

πŸ”Œ Adding New Skills

  1. Create may/skills/<skill_name>/handler.py
  2. Define a TOOLS list with Anthropic tool definitions
  3. Implement the tool functions
  4. Skills are auto-discovered at startup

πŸ—ΊοΈ Roadmap

  • Voice mode (ElevenLabs STT + TTS dev build)
  • WhatsApp integration (Twilio)
  • Proactive morning briefing
  • Event reminders
  • Notion integration

πŸ“œ License

MIT

About

πŸ€– MAY β€” Personal AI assistant powered by Claude Sonnet. Google Calendar, Gmail, Tasks, web search, persistent memory, and React Native mobile app. Built by a Year 2 CSE student.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages