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.0.tar.gz (779.3 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.0-py3-none-any.whl (209.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: airut-0.9.0.tar.gz
  • Upload date:
  • Size: 779.3 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.0.tar.gz
Algorithm Hash digest
SHA256 888496207ce9e2857970e7442fa718665af18cb98fe061ae8d1ae0d58dca2f34
MD5 8a71a2596fe152d88c4e7d78a3ea8e42
BLAKE2b-256 35a7edd3ea2fd91f2ec213210cc402d5423923d353f7fbbb16e9a13923b365e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for airut-0.9.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: airut-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 209.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f5de19293c0c9640279d988c19cd24a110156a324112d993de0a2bc47d21be7
MD5 f7edeb657bf473166b0569d233b643f7
BLAKE2b-256 ddf8298fa2acacd174f3204d54f34a782a709f3055b821f44c112426ea30f939

See more details on using hashes here.

Provenance

The following attestation bundles were made for airut-0.9.0-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