Skip to main content

mailagent

Your inbox, on autopilot.

License PyPI version Python versions Docker image

LLM-powered email agent that watches Maildir inboxes, classifies mail, and executes workflows. Docker sidecar for docker-mailserver.

Features

  • Multi-inbox support with 5 LLM providers (OpenAI, Anthropic, Gemini, OpenRouter, Groq)
  • LLM classification with keyword fallback
  • 4 action types: reply, ignore, notify, webhook — composable
  • Smart SMTP replies with threading, sent folder sync, and message flagging
  • Env var interpolation, JSON Schema autocomplete, global + per-inbox config
  • inotify watching, catch-up on restart, debounce, idempotent state
  • CLI (run, validate, test, schema) with rich output
  • Thread awareness
  • REST API for inbox/provider/workflow CRUD and sending emails
  • Web dashboard for monitoring and config management
  • Calendar-aware scheduling actions
  • Plugin system for custom action types ... and more to come(based on feedback and bugs)

Quick start

Setting up a new mail server? Follow Path A in the setup guide.

Already running docker-mailserver? Follow Path B in the setup guide.

Here's a taste of what the stack looks like:

services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    # ... your config

  mailagent:
    image: ghcr.io/vrag99/mailagent:latest
    env_file: ./mailagent.env
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/:ro
      - ./mailagent.yml:/app/config.yml   # writable — daemon hot-reloads on API changes
      - ./mailagent-data/:/app/data/
    depends_on:
      mailserver:
        condition: service_healthy
    restart: unless-stopped

  mailagent-api:
    image: ghcr.io/vrag99/mailagent:latest
    command: mailagent serve -c /app/config.yml
    env_file: ./mailagent.env
    ports:
      - "8000:8000"
    volumes:
      - ./mailagent.yml:/app/config.yml
      - ./mailagent-data/:/app/data/
      - ./docker-data/dms/config/:/etc/dms/config/   # for mailbox provisioning
    depends_on:
      mailserver:
        condition: service_healthy
    restart: unless-stopped
  1. Create mailagent.yml from the starter template
  2. Create mailagent.env with your API keys and secrets
  3. docker compose up -d

CLI

uv pip install docker-mailagent
Usage: mailagent <command> [options]

Commands:
  run         Start the mail agent daemon (default)
  validate    Validate the config file and exit
  test        Dry-run a .eml file through the pipeline
  schema      Print the JSON Schema to stdout
  serve       Start the REST API server
  api-key     Manage API keys (create, list, revoke)

Options:
  -c, --config PATH    Config file path (default: /app/config.yml)
  -v, --verbose        Enable debug logging
mailagent validate -c ./mailagent.yml
mailagent test ./some-email.eml -c ./mailagent.yml
mailagent schema > schema.json

# Start the REST API server
mailagent serve -c ./mailagent.yml --port 8000

# Manage API keys
mailagent api-key create --name myapp   # prints key once — save it
mailagent api-key list                  # shows name + hash prefix
mailagent api-key revoke <hash_prefix>  # use hash prefix from list

Schema autocomplete

Add to the top of your YAML file:

# yaml-language-server: $schema=https://raw.githubusercontent.com/vrag99/mailagent/main/schema.json

VS Code mapping:

{
  "yaml.schemas": {
    "https://raw.githubusercontent.com/vrag99/mailagent/main/schema.json": "mailagent.yml"
  }
}

Configuration

mailagent is configured via a single mailagent.yml file with four top-level sections: providers, defaults, inboxes, and settings. Workflows are inbox-local and evaluated in order (first match wins).

See the full configuration reference and examples.

Development

uv sync --dev
uv run pytest -q
docker build -t mailagent/mailagent:local .

License

MIT

Metadata

Release files for docker-mailagent 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docker-mailagent 0.1.3
File Size Uploaded
docker_mailagent-0.1.3.tar.gz 146.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for docker-mailagent 0.1.3
File Interpreter ABI Platform
docker_mailagent-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 203.9 kB

Release files / docker_mailagent-0.1.3.tar.gz

Download URL docker_mailagent-0.1.3.tar.gz
Size 146.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ee9172bbcd96434414f5fdcfa9b9790bf7cb1b6298ec0a8f6b2db0d776a9707f
BLAKE2b-256 checksum
How to use checksums
07f51abf11d36d8357066116808fb0990c805d8325e347b5074f9c9d287a2545
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.

Transparency log

Release files / docker_mailagent-0.1.3-py3-none-any.whl

Download URL docker_mailagent-0.1.3-py3-none-any.whl
Size 57.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b552111d991590f11e7a50a40afeaeff1c0fb521573291d93234d5291a184db8
BLAKE2b-256 checksum
How to use checksums
6ec1511835dd2aa7982dac4ec44c0478cb207a02cf9bce7394d396e400b09a0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page