Are you the author? Sign in to claim
Airut is a system for running Claude Code tasks from email and Slack. It handles workspace provisioning, container isola
Sandboxed Claude Code over email and Slack. Named "Airut" (Finnish: herald/messenger). Created by Pyry Haulos.
Send a message — email or Slack — with instructions, and get results back in the same thread. Starting a new task is as simple as starting a new conversation. Airut provisions an isolated container, runs Claude Code, and cleans up when done.
Self-hosted: your code and conversations never leave your infrastructure.
You → Email/Slack → Airut → Claude Code (container) → PR → Reply → You
This project is developed entirely through its own workflow — from the first working version onward, all development has been done by sending instructions to Airut and reviewing the resulting PRs.
Key features:
CLAUDE.md, CI
tooling, branch protection), enables end-to-end autonomous workflows where
agents push PRs for human review.Email and Slack already handle threading, search, notifications, and mobile access. Agent interactions show up where your team already works.
Send a message from any device, get results when ready. No terminal session to keep open, no custom client to install.
Running multiple Claude Code agents requires isolation — each needs its own workspace, session state, and credentials. Airut provides this automatically: each conversation is fully isolated, and a configurable thread pool manages concurrent execution.
The recommended workflow has agents push PRs for review. You review the PR, leave comments, then reply to the thread. The agent reads review feedback and iterates. This provides:
You: "Add user authentication"
↓
Agent: works → pushes PR → replies with PR link
↓
You: review PR, leave comments
↓
You: reply "Address the review comments"
↓
Agent: reads comments → fixes → updates PR → replies
↓
You: approve and merge
When an agent pushes a PR, CI workflows run the agent's code on the runner —
outside the container sandbox. The airut-sandbox CLI and
airutorg/sandbox-action GitHub Action solve this by running CI commands inside
the same container isolation and network allowlisting used by the gateway. See
doc/ci-sandbox.md for setup and security requirements.
The airut.org website is a minimal
Airut-managed repository that demonstrates the message-to-deploy workflow with
Cloudflare Pages. Its .airut/ directory and CLAUDE.md serve as a good
starting point for onboarding your own projects.
Dashboard — task monitoring
Config editor — server settings
Network log — live request tracking
airut-sandbox and airutorg/sandbox-actionuv tool install airut # Install from PyPI
airut check # Validate system dependencies
airut install-service # Install and start systemd service
Open http://localhost:5200 in your browser. Click Configure to open the
config editor. From there you can add repositories, set up channels, configure
credentials, and adjust resource limits.
See deployment.md for the full guide including channel setup, secrets management, and git credentials.
Onboard your repository by creating the .airut/
directory with container Dockerfile, network allowlist, and CLAUDE.md
instructions.
Alternative: You can also edit
~/.config/airut/airut.yamldirectly. Seeairut.example.yamlfor the full schema. Changes are picked up automatically via file watching.
Email:
To: airut@example.com
Subject: Fix the typo in README
Please fix the typo in the README file.
Slack: Open a new chat with your Airut app and type your instructions.
airut update # Stop service, upgrade, restart
airut/
├── CLAUDE.md # Agent operating instructions
├── doc/ # High-level documentation
├── spec/ # Implementation specifications
├── .airut/ # Repo-specific Airut configuration
├── config/ # Server configuration templates
├── airut/ # Library code
│ ├── _bundled/ # Static resources bundled into wheel
│ │ ├── assets/ # Logo SVG
│ │ └── proxy/ # Network sandbox (proxy filter, DNS, AWS signing)
│ ├── conversation/ # Conversation directory layout and preparation
│ ├── dashboard/ # Web dashboard server
│ ├── gateway/ # Protocol-agnostic gateway service
│ ├── gh/ # GitHub API wrappers
│ └── sandbox/ # Sandboxed execution (container, proxy, session, image)
├── scripts/ # CLI tools
│ ├── airut.py # CLI entry point (uv run airut)
│ ├── ci.py # Local CI runner
│ └── pr.py # PR workflow tool
└── tests/ # Unit and integration tests
Airut enforces 100% unit test coverage in CI — every line must be tested, with no skips or exceptions. Integration tests verify end-to-end workflows including email, Slack, config reload, and session recovery. Config schema migrations are independently tested for correctness and idempotency. See doc/testing.md for details.
This project is developed with Claude Code. See CLAUDE.md for conventions and workflow tools.
# Run local CI (auto-fix + all checks)
uv run scripts/ci.py --fix
# Monitor PR status
uv run scripts/pr.py ci --wait -v
uv run scripts/pr.py review -v
This project is licensed under the MIT License. See LICENSE for details.
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Agent harness performance optimization with skills, instincts, memory, and security
Design enforcement with memory — keeps your UI consistent across a project
Detects 37 AI writing patterns and rewrites text with human rhythm across 5 voice profiles