agentio
Run LLM agent workflows in GitHub Actions. No servers. No Zapier. Just cron.
agentio is a CLI that lets LLM agents interact with Gmail, Slack, JIRA, Telegram, Google Chat, and RSS feeds. Designed for CI/CD pipelines and scheduled automation.
Why agentio?
You want your AI agent to:
- Send a daily Slack summary of unread emails
- Monitor RSS feeds and post to Telegram
- Update JIRA tickets based on email threads
- Run on a schedule, without managing servers
agentio makes this trivial. Authenticate once locally, export your config as a single encrypted file, and run anywhere — GitHub Actions, GitLab CI, or any CI/CD platform.
Quick Example
A scheduled workflow that reads your emails, has Claude summarize them, and posts to Slack:
# .github/workflows/daily-briefing.yml
name: Daily Briefing
on:
schedule:
- cron: '0 7 * * 1-5'
jobs:
briefing:
runs-on: ubuntu-latest
env:
AGENTIO_CONFIG: ${{ secrets.AGENTIO_CONFIG }}
AGENTIO_KEY: ${{ secrets.AGENTIO_KEY }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
steps:
- uses: actions/checkout@v4
- run: curl -LsSf https://agentio.me/install | sh
- run: npm install -g @anthropic-ai/claude-code
- run: agentio config import && agentio claude install
- run: claude -p "$(cat prompt.md)" --max-turns 30 --dangerously-skip-permissions
# prompt.md
Fetch my unread emails from the last 24 hours using agentio-gmail.
Summarize them by urgency and sender.
Post the summary to Slack using agentio-slack.
See examples/daily-briefing/ for the complete working example.
Install
macOS / Linux:
curl -LsSf https://agentio.me/install | sh
Windows (PowerShell):
iwr -useb https://agentio.me/install.ps1 | iex
Other methods (Homebrew, Scoop, npm)
Homebrew (macOS/Linux):
brew tap plosson/agentio
brew install agentio
Scoop (Windows):
scoop bucket add agentio https://github.com/plosson/scoop-agentio
scoop install agentio
npm / bun:
npx @plosson/agentio --help
# or global install
npm install -g @plosson/agentio
Setup: Authenticate Once, Run Anywhere
1. Authenticate locally
# Add your Gmail account (opens browser for OAuth)
agentio gmail profile add
# Add Slack webhook
agentio slack profile add
# Add any other services you need...
2. Export your config
agentio config export
# Outputs:
# ✓ Exported to agentio.config
# ✓ Encryption key: abc123...
#
# Store BOTH in your CI/CD secrets!
All credentials are encrypted with AES-256-GCM. The export file is useless without the key.
Note: GitHub secrets are limited to 48KB per secret. Only add the profiles you need for your workflow to keep the exported config small.
3. Add to GitHub Secrets
| Secret | Value |
|---|
AGENTIO_CONFIG | Base64-encoded contents of agentio.config |
AGENTIO_KEY | The encryption key from export |
# Get base64 for GitHub secret
cat agentio.config | base64
4. Use in your workflow
env:
AGENTIO_CONFIG: ${{ secrets.AGENTIO_CONFIG }}
AGENTIO_KEY: ${{ secrets.AGENTIO_KEY }}
steps:
- run: agentio config import # Auto-detects env vars
- run: agentio gmail list --limit 10
Done. Your agent can now access all your services securely in CI/CD.
Services
| Service | Auth | Commands |
|---|
| Gmail | OAuth | list, get, search, send, reply, archive, mark, attachment, export |
| Slack | Webhook | send |
| Telegram | Bot Token | send |
| Google Chat | Webhook/OAuth | send, list, get |
| JIRA | OAuth | projects, search, get, comment, transitions, transition |
| Discourse | API Key | list, get, categories |
| RSS | None | articles, get, info |
Usage Examples
Gmail
# List recent emails
agentio gmail list --limit 10
# Search
agentio gmail search --query "from:boss@company.com is:unread"
# Get specific email
agentio gmail get <message-id>
# Send (body from stdin works great with LLMs)
echo "Generated by my agent" | agentio gmail send --to user@example.com --subject "Daily Report"
# Download attachments
agentio gmail attachment <message-id> --output ./downloads
# Export as PDF
agentio gmail export <message-id> --output email.pdf
Slack
# Send message
agentio slack send "Deployment complete ✓"
# Send rich Block Kit message
agentio slack send --json blocks.json
Telegram
# Send to channel
agentio telegram send "Alert: New items found"