Skip to main content

Headless Claude Code interaction via email

Project description

Airut

Headless Claude Code interaction via email. Named "Airut" (Finnish: herald/messenger).

Send an email with instructions, receive Claude Code's response. Airut runs Claude Code in isolated containers, maintains conversation state, and handles the full email-to-PR workflow.

You → Email → Airut → Claude Code (container) → PR → Email reply → You

Key Features

  • Defense-in-depth sandboxing — container isolation, surrogate credentials, and network allowlist limit blast radius in case of agent misbehavior
  • Email-native authentication — DMARC verification with sender allowlist, no API keys to manage
  • Model selection via subaddressing — choose the model per email (e.g., airut+haiku@example.com for fast/cheap, airut+opus@example.com for complex tasks)
  • Conversation threading — reply to continue conversations across sessions
  • File attachments — send files to the agent, receive files back
  • Web dashboard — monitor running tasks and view network activity logs

Quick Start

Prerequisites

  • Linux (dedicated VM recommended, Debian 13 tested)
  • uv, Git, and Podman (rootless)
  • Dedicated email account with IMAP/SMTP access

Install

# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install Airut from PyPI
uv tool install airut

Or install the latest development version from main:

uv tool install airut --from git+https://github.com/airutorg/airut.git

Configure

# Generate initial config at ~/.config/airut/airut.yaml
airut init

# Validate config and system dependencies
airut check

Deploy

# Install and start the systemd service
airut install-service

# Verify it's running
airut check

Update

airut update

How It Works

Each email conversation runs in an isolated container with its own git workspace, Claude Code session, and sandboxed network. The recommended workflow has agents push PRs for your review — you review, leave comments, and reply to the email to iterate.

You: "Add user authentication"
    ↓
Agent: works → pushes PR → replies with PR link
    ↓
You: review PR, leave comments
    ↓
You: reply to email "Address the review comments"
    ↓
Agent: reads comments → fixes → updates PR → replies
    ↓
You: approve and merge

Documentation

Full documentation is available on GitHub:

Links

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airut-0.9.1.tar.gz (785.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airut-0.9.1-py3-none-any.whl (212.3 kB view details)

Uploaded Python 3

File details

Details for the file airut-0.9.1.tar.gz.

File metadata

  • Download URL: airut-0.9.1.tar.gz
  • Upload date:
  • Size: 785.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for airut-0.9.1.tar.gz
Algorithm Hash digest
SHA256 02aecb96a755038a12da8cbf443782344f8d4e7467245deae59d5cf778e57106
MD5 3c96051ed353a9a2808cd314a175cd8c
BLAKE2b-256 933e3dcc8e78d47b7e00b1e2288fda7d30a27256bc5e8851e3f628b57621a10b

See more details on using hashes here.

Provenance

The following attestation bundles were made for airut-0.9.1.tar.gz:

Publisher: publish.yml on airutorg/airut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file airut-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: airut-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 212.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for airut-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fec9838918fd69f8e292866e9e81dc3ec053844adabeeb08deb867df302316b8
MD5 ab0bbeac8cd4ee00621abdbcc3cf715f
BLAKE2b-256 5fc6f56d6540606e0a8fcafa7911d9d4959ff5e7e237ab0f425b37fbdb13f345

See more details on using hashes here.

Provenance

The following attestation bundles were made for airut-0.9.1-py3-none-any.whl:

Publisher: publish.yml on airutorg/airut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page