by elie222
Organizes email inbox, drafts replies in the user's tone, tracks follow‑ups, and provides analytics to achieve inbox zero quickly.
Inbox Zero is an AI‑powered personal assistant that helps you manage your email faster. It automatically categorizes senders, suggests replies in your own style, tracks messages that need a response, and offers analytics on your email habits.
pnpm/Turbo..env file.Q: Do I need to pay for any services?
A: The core app is open source and free. Premium features require a paid subscription or making yourself an admin in the .env file.
Q: Which email providers are supported? A: Google Gmail (via OAuth) and Microsoft Outlook/Exchange are supported.
Q: Can I run the app locally without Docker?
A: Yes. After cloning the repo, run pnpm install, configure .env, and start with turbo dev or pnpm run dev.
Q: What LLMs can I use? A: OpenAI, Anthropic, AWS Bedrock (Anthropic), Google Gemini, Groq, and local Ollama models are supported. Set the appropriate env vars.
Q: How do I receive real‑time email notifications?
A: Set up Google Pub/Sub, create a topic and subscription, and configure GOOGLE_PUBSUB_TOPIC_NAME and GOOGLE_PUBSUB_VERIFICATION_TOKEN in .env. The app provides a webhook endpoint for push notifications.
Q: Is there a Docker image available?
A: Yes. Build with docker build --build-arg NEXT_PUBLIC_BASE_URL="https://your-domain.com" -t inbox-zero -f docker/Dockerfile.prod . and run with the required environment variables.
To help you spend less time in your inbox, so you can focus on what matters.
Learn more in our docs.
![]() |
![]() |
|---|---|
| AI Assistant | Reply Zero |
![]() |
![]() |
| Gmail client | Bulk Unsubscriber |
To request a feature open a GitHub issue, or join our Discord.
We offer a hosted version of Inbox Zero at https://getinboxzero.com.
The easiest way to self-host Inbox Zero is using our pre-built Docker image.
See our Self-Hosting Guide for complete instructions.
Here's a video on how to set up the project. It covers the same steps mentioned in this document. But goes into greater detail on setting up the external services.
Start PostgreSQL and Redis:
docker compose -f docker-compose.dev.yml up -d
Install dependencies and set up environment:
pnpm install
./docker/scripts/setup-env.sh # Creates .env with auto-generated secrets
Configure OAuth and LLM:
Edit apps/web/.env and add:
Run database migrations:
cd apps/web
pnpm prisma migrate dev
Run the development server:
pnpm dev
The app will be available at http://localhost:3000.
The setup script auto-generates all required secrets. The sections below cover the services you need to configure manually. For a comprehensive reference of all environment variables, see the Environment Variables Guide.
Go to Google Cloud Console and create a new project if necessary.
Create new credentials:
If the banner shows up, configure consent screen (if not, you can do this later)
Get Started.ExternalCreate.Create new credentials:
+Create Credentials button. Choose OAuth Client ID.Application Type, Choose Web applicationhttp://localhost:3000 (or your custom domain)Authorized redirect URIs enter (or your custom domain):http://localhost:3000/api/auth/callback/googlehttp://localhost:3000/api/google/linking/callbackhttp://localhost:3000/api/google/calendar/callback (only required for calendar integration)Create.Update .env file:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETUpdate scopes
Data Access in the left sidebar (or click link above)Add or remove scopesManually add scopes box:https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/gmail.settings.basic
https://www.googleapis.com/auth/contacts
https://www.googleapis.com/auth/calendar (only required for calendar integration)
UpdateSave in the Data Access page.Add yourself as a test user
Test users section, click +Add usersSaveEnable required APIs in Google Cloud Console:
PubSub enables real-time email notifications. Follow the official guide:
Set GOOGLE_PUBSUB_TOPIC_NAME in your .env file.
When creating the subscription, select Push and set the URL to:
https://yourdomain.com/api/google/webhook?token=TOKEN
Set GOOGLE_PUBSUB_VERIFICATION_TOKEN in your .env file to the value of TOKEN.
For local development, use ngrok to expose your local server:
ngrok http 3000
Then update the webhook endpoint in the Google PubSub subscriptions dashboard.
Email watch renewal: Gmail watch subscriptions expire periodically and must be renewed. If using Docker Compose, this is handled automatically by the cron container every 6 hours. Otherwise, set up a cron job to call /api/watch/all (see Self-Hosting Guide).
Go to Microsoft Azure Portal and create a new Azure Active Directory app registration:
Navigate to Azure Active Directory
Go to "App registrations" in the left sidebar or search it in the searchbar
Click "New registration"
http://localhost:3000/api/auth/callback/microsofthttp://localhost:3000/api/outlook/linking/callbackhttp://localhost:3000/api/outlook/calendar/callback (only required for calendar integration)Get your credentials from the Overview tab:
MICROSOFT_CLIENT_IDValue → this is your MICROSOFT_CLIENT_SECRET (Important: copy Value, not Secret ID)Configure API permissions:
In the "Manage" menu click "API permissions" in the left sidebar
Click "Add a permission"
Select "Microsoft Graph"
Select "Delegated permissions"
Add the following permissions:
NEXT_PUBLIC_EMAIL_SEND_ENABLED=true, which is the default)Click "Add permissions"
Click "Grant admin consent" if you're an admin
Update your .env file with the credentials:
MICROSOFT_CLIENT_ID=your_client_id_here
MICROSOFT_CLIENT_SECRET=your_client_secret_here
In your .env file, uncomment one of the LLM provider blocks and add your API key:
Users can also change the model in the app on the /settings page.
To test a production build locally:
# Without Docker
pnpm run build
pnpm start
# With Docker (includes Postgres and Redis)
NEXT_PUBLIC_BASE_URL=http://localhost:3000 docker compose --profile all up --build
For production deployments, see our guides:
You can view open tasks in our GitHub Issues. Join our Discord to discuss tasks and check what's being worked on.
ARCHITECTURE.md explains the architecture of the project (LLM generated).
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by activepieces
A self‑hosted, open‑source platform that provides a no‑code builder for creating, versioning, and running AI‑driven automation workflows. Pieces are TypeScript‑based plugins that become MCP servers, allowing direct consumption by large language models.
by Skyvern-AI
Automates browser‑based workflows by leveraging large language models and computer‑vision techniques, turning natural‑language prompts into fully functional web interactions without writing custom scripts.
by ahujasid
Enables Claude AI to control Blender for prompt‑assisted 3D modeling, scene creation, and manipulation via a socket‑based Model Context Protocol server.
by PipedreamHQ
Connect APIs quickly with a free, hosted integration platform that enables event‑driven automations across 1,000+ services and supports custom code in Node.js, Python, Go, or Bash.
by grab
Enables Cursor AI to read and programmatically modify Figma designs through a Model Context Protocol integration.
by CursorTouch
Enables AI agents to control the Windows operating system, performing file navigation, application launching, UI interaction, QA testing, and other automation tasks through a lightweight server.
by ahujasid
Enables Claude AI to control Ableton Live in real time, allowing AI‑driven creation, editing, and playback of tracks, clips, instruments, and effects through a socket‑based server.
by leonardsellem
Provides tools and resources to enable AI assistants to manage and execute n8n workflows via natural language commands.
by GongRzhe
Provides a Model Context Protocol server that enables AI assistants to send, read, search, and organize Gmail messages, supporting attachments, label and filter management, and automatic OAuth2 authentication.