[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72549":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":18,"archived":19,"fork":20,"defaultBranch":21,"hasWiki":19,"hasPages":20,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":14,"starSnapshotCount":14,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},72549,"executive-ai-assistant","langchain-ai\u002Fexecutive-ai-assistant","langchain-ai",null,"Python",2211,724,29,10,0,1,7,30.58,"MIT License",true,false,"main",[],"2026-06-12 02:03:04","# Executive AI Assistant\n\nExecutive AI Assistant (EAIA) is an AI agent that attempts to do the job of an Executive Assistant (EA).\n\nFor a hosted version of EAIA, see documentation [here](https:\u002F\u002Fmirror-feeling-d80.notion.site\u002FHow-to-hire-and-communicate-with-an-AI-Email-Assistant-177808527b17803289cad9e323d0be89?pvs=4).\n\nTable of contents\n\n- [General Setup](#general-setup)\n  - [Env](#env)\n  - [Credentials](#env)\n  - [Configuration](#configuration)\n- [Run locally](#run-locally)\n  - [Setup EAIA](#set-up-eaia-locally)\n  - [Ingest emails](#ingest-emails-locally)\n  - [Connect to Agent Inbox](#set-up-agent-inbox-with-local-eaia)\n  - [Use Agent Inbox](#use-agent-inbox)\n- [Run in production (LangGraph Platform)](#run-in-production--langgraph-platform)\n  - [Setup EAIA on LangGraph Platform](#set-up-eaia-on-langgraph-platform)\n  - [Ingest manually](#ingest-manually)\n  - [Set up cron job](#set-up-cron-job)\n\n## General Setup\n\n### Env\n\n1. Fork and clone this repo. Note: make sure to fork it first, as in order to deploy this you will need your own repo.\n2. Create a Python virtualenv and activate it (e.g. `pyenv virtualenv 3.11.1 eaia`, `pyenv activate eaia`)\n3. Run `pip install -e .` to install dependencies and the package\n\n### Set up your credentials\n\n1. Export OpenAI API key (`export OPENAI_API_KEY=...`)\n2. Export Anthropic API key (`export ANTHROPIC_API_KEY=...`)\n3. Set up Google OAuth\n   1. [Enable the API](https:\u002F\u002Fdevelopers.google.com\u002Fgmail\u002Fapi\u002Fquickstart\u002Fpython#enable_the_api)\n      - Enable Gmail API if not already by clicking the blue button `Enable the API`\n   2. [Authorize credentials for a desktop application](https:\u002F\u002Fdevelopers.google.com\u002Fgmail\u002Fapi\u002Fquickstart\u002Fpython#authorize_credentials_for_a_desktop_application)\n  \n> Note: If you're using a personal email (non-Google Workspace), select \"External\" as the User Type in the OAuth consent screen. With \"External\" selected, you must add your email as a test user in the Google Cloud Console under \"OAuth consent screen\" > \"Test users\" to avoid the \"App has not completed verification\" error. The \"Internal\" option only works for Google Workspace accounts.\n\n5. Download the client secret. After that, run these commands:\n6. `mkdir eaia\u002F.secrets` - This will create a folder for secrets\n7. `mv ${PATH-TO-CLIENT-SECRET.JSON} eaia\u002F.secrets\u002Fsecrets.json` - This will move the client secret you just created to that secrets folder\n8. `python scripts\u002Fsetup_gmail.py` - This will create the Google OAuth provider using LangChain Auth and handle the initial authentication flow.\n\n**Authentication Flow**: EAIA uses LangChain Auth for OAuth management. The setup script creates a Google OAuth provider that handles token storage and refresh automatically. When you first run the application, you'll be prompted to complete OAuth authentication if needed.\n\n### Configuration\n\nThe configuration for EAIA can be found in `eaia\u002Fmain\u002Fconfig.yaml`. Every key in there is required. These are the configuration options:\n\n- `email`: Email to monitor and send emails as. This should match the credentials you loaded above.\n- `full_name`: Full name of user\n- `name`: First name of user\n- `background`: Basic info on who the user is\n- `timezone`: Default timezone where the user is\n- `schedule_preferences`: Any preferences for how calendar meetings are scheduled. E.g. length, name of meetings, etc\n- `background_preferences`: Any background information that may be needed when responding to emails. E.g. coworkers to loop in, etc.\n- `response_preferences`: Any preferences for what information to include in emails. E.g. whether to send calendly links, etc.\n- `rewrite_preferences`: Any preferences for the tone of your emails\n- `triage_no`: Guidelines for when emails should be ignored\n- `triage_notify`: Guidelines for when user should be notified of emails (but EAIA should not attempt to draft a response)\n- `triage_email`: Guidelines for when EAIA should try to draft a response to an email\n\n## Run locally\n\nYou can run EAIA locally.\nThis is useful for testing it out, but when wanting to use it for real you will need to have it always running (to run the cron job to check for emails).\nSee [this section](#run-in-production--langgraph-platform) for instructions on how to run in production (on LangGraph Platform)\n\n### Set up EAIA locally\n\n1. Install development server `pip install -U \"langgraph-cli[inmem]\"`\n2. Run development server `langgraph dev`\n\n### Ingest Emails Locally\n\nLet's now kick off an ingest job to ingest some emails and run them through our local EAIA.\n\nLeave the `langgraph dev` command running, and open a new terminal. From there, get back into this directory and virtual environment. To kick off an ingest job, run:\n\n```shell\npython scripts\u002Frun_ingest.py --minutes-since 120 --rerun 1 --early 0\n```\n\nThis will ingest all emails in the last 120 minutes (`--minutes-since`). It will NOT break early if it sees an email it already saw (`--early 0`) and it will\nrerun ones it has seen before (`--rerun 1`). It will run against the local instance we have running.\n\n### Set up Agent Inbox with Local EAIA\n\nAfter we have [run it locally](#run-locally), we can interract with any results.\n\n1. Go to [Agent Inbox](https:\u002F\u002Fdev.agentinbox.ai\u002F)\n2. Connect this to your locally running EAIA agent:\n   1. Click into `Settings`\n   2. Input your LangSmith API key.\n   3. Click `Add Inbox`\n      1. Set `Assistant\u002FGraph ID` to `main`\n      2. Set `Deployment URL` to `http:\u002F\u002F127.0.0.1:2024`\n      3. Give it a name like `Local EAIA`\n      4. Press `Submit`\n\nYou can now interract with EAIA in the Agent Inbox.\n\n## Run in production (LangGraph Platform)\n\nThese instructions will go over how to run EAIA in LangGraph Platform.\nYou will need a LangSmith Plus account to be able to access [LangGraph Platform](https:\u002F\u002Fdocs.langchain.com\u002Flanggraph-platform)\n\n### Set up EAIA on LangGraph Platform\n\n1. Make sure you have a LangSmith Plus account\n2. Run the local setup first to create the Google OAuth provider (`python scripts\u002Fsetup_gmail.py`)\n3. Navigate to the deployments page in LangSmith\n4. Click `New Deployment`\n5. Connect it to your GitHub repo containing this code.\n6. Give it a name like `Executive-AI-Assistant`\n7. Add the following environment variables\n   1. `OPENAI_API_KEY`\n   2. `ANTHROPIC_API_KEY`  \n8. Click `Submit` and watch your EAIA deploy\n\n### Ingest manually\n\nLet's now kick off a manual ingest job to ingest some emails and run them through our LangGraph Platform EAIA.\n\nFirst, get your `LANGGRAPH_DEPLOYMENT_URL`\n\nTo kick off an ingest job, run:\n\n```shell\npython scripts\u002Frun_ingest.py --minutes-since 120 --rerun 1 --early 0 --url ${LANGGRAPH_DEPLOYMENT_URL}\n```\n\nThis will ingest all emails in the last 120 minutes (`--minutes-since`). It will NOT break early if it sees an email it already saw (`--early 0`) and it will\nrerun ones it has seen before (`--rerun 1`). It will run against the prod instance we have running (`--url ${LANGGRAPH_DEPLOYMENT_URL}`)\n\n### Set up Agent Inbox with LangGraph Platform EAIA\n\nAfter we have [deployed it](#set-up-eaia-on-langgraph-platform), we can interract with any results.\n\n1. Go to [Agent Inbox](https:\u002F\u002Fdev.agentinbox.ai\u002F)\n2. Connect this to your locally running EAIA agent:\n   1. Click into `Settings`\n   2. Click `Add Inbox`\n      1. Set `Assistant\u002FGraph ID` to `main`\n      2. Set `Deployment URL` to your deployment URL\n      3. Give it a name like `Prod EAIA`\n      4. Press `Submit`\n\n### Set up cron job\n\nYou probably don't want to manually run ingest all the time. Using LangGraph Platform, you can easily set up a cron job\nthat runs on some schedule to check for new emails. You can set this up with:\n\n```shell\npython scripts\u002Fsetup_cron.py --url ${LANGGRAPH_DEPLOYMENT_URL}\n```\n\n## Advanced Options\n\nIf you want to control more of EAIA besides what the configuration allows, you can modify parts of the code base.\n\n**Reflection Logic**\nTo control the prompts used for reflection (e.g. to populate memory) you can edit `eaia\u002Freflection_graphs.py`\n\n**Triage Logic**\nTo control the logic used for triaging emails you can edit `eaia\u002Fmain\u002Ftriage.py`\n\n**Calendar Logic**\nTo control the logic used for looking at available times on the calendar you can edit `eaia\u002Fmain\u002Ffind_meeting_time.py`\n\n**Tone & Style Logic**\nTo control the logic used for the tone and style of emails you can edit `eaia\u002Fmain\u002Frewrite.py`\n\n**Email Draft Logic**\nTo control the logic used for drafting emails you can edit `eaia\u002Fmain\u002Fdraft_response.py`\n","Executive AI Assistant (EAIA) 是一个旨在替代执行助理工作的AI代理。其核心功能包括通过处理电子邮件来辅助用户管理日常任务，支持使用OpenAI和Anthropic的API进行智能响应生成，并且能够与Google Gmail API集成以实现邮件的自动读取和回复。技术上，EAIA利用Python开发，采用LangChain Auth进行OAuth认证流程的自动化管理，确保了安全性和易用性。该项目适用于需要高效处理大量电子邮件的企业家、经理或任何希望减轻日常通讯负担的专业人士。",2,"2026-06-11 03:42:31","high_star"]