← houlahop
AgentIO logo

AgentIO

One CLI to connect your agents to the services you actually use.

Why I built this

My agents needed to interact with real services. Read emails, check calendars, update JIRA tickets, post to Slack. Pretty basic stuff. But each service had its own auth flow, its own CLI, its own way of storing credentials. Setting up a new workflow meant juggling half a dozen tools just to get authenticated.

I wanted one tool that handles all of it. Authenticate once on my laptop, export an encrypted config, and use it anywhere -- GitHub Actions, CI/CD, a cron job on a server. No servers to manage, no Zapier in the middle. Just a binary that speaks JSON and works in a pipeline.

What it does

AgentIO is a CLI that gives LLM agents access to Gmail, Slack, JIRA, Telegram, Google Chat, Discourse, and RSS feeds. You authenticate locally (OAuth opens in your browser), then export your credentials as a single AES-256-GCM encrypted file. Import that file anywhere and your agent has access to everything.

All output is structured text, designed for LLMs to parse. It reads from stdin so agents can pipe content directly. No runtime dependencies -- it's a single binary.

How it works

How do I read my emails from the command line?

Run agentio gmail list --limit 10 to see your recent emails. Add a profile first with agentio gmail profile add — it opens OAuth in your browser.

How do I search for specific emails?

Use agentio gmail search --query "from:boss@company.com is:unread". It supports the same query syntax as Gmail.

Can I send an email too?

Yes. echo "message body" | agentio gmail send --to user@example.com --subject "Daily Report". The body comes from stdin, which works great with LLM-generated text.

What about Slack — can I post messages there?

Yes. Set up a webhook with agentio slack profile add, then agentio slack send "Deployment complete". You can also send rich Block Kit messages with --json.

And Telegram?

Same pattern. Add a bot token with agentio telegram profile add, then agentio telegram send "Alert: New items found". Supports markdown formatting too.

What other services does it support?

Gmail, Slack, Telegram, Google Chat, JIRA, Discourse, and RSS feeds. Each one follows the same agentio <service> <command> pattern.

How does authentication work?

Run agentio <service> profile add on your laptop. OAuth services open in your browser, others prompt for a token or API key. Credentials are stored locally.

What if I have multiple accounts — work and personal?

Use named profiles. agentio gmail profile add --profile work, then agentio gmail list --profile work. You can have as many profiles as you need per service.

Can I pipe content into a command?

Yes, all send commands read from stdin. echo "Generated by my agent" | agentio slack send works naturally with LLM output.

How do I get this running on a schedule?

Use a GitHub Actions workflow with a cron trigger. Export your config with agentio config export, store it as a secret, and import it in CI with agentio config import.

How do my credentials get into GitHub Actions securely?

Your config is encrypted with AES-256-GCM. Store AGENTIO_CONFIG (base64 of the file) and AGENTIO_KEY as GitHub secrets. agentio config import auto-detects them from env vars.

Can I read Google Docs, Sheets, Calendar?

Google Chat is supported with send, list, and get. Docs, Sheets, and Calendar are not supported yet.

Can I interact with JIRA — search issues, comment, transition?

Yes. agentio jira search --project MYPROJ --status "In Progress", agentio jira comment PROJ-123 "update", and agentio jira transition PROJ-123 <id>. Full JQL queries are supported too.

Can I read RSS feeds?

Yes. agentio rss articles https://example.com --limit 10 auto-discovers the feed URL. Use --since 2025-01-01 to filter by date.

Can I use this directly inside Claude Code?

Yes. Run agentio claude install to add skills for Gmail, Slack, JIRA, and more. Then just ask Claude to read your emails or post to Slack — it uses the installed skills directly.

Get started

Install
curl -LsSf https://agentio.me/install | sh
1

Authenticate locally

Add your accounts. OAuth flows open in the browser.

agentio gmail profile add
agentio slack profile add
agentio jira profile add
2

Export your config

Credentials are encrypted and bundled into a single file.

agentio config export
# Outputs: agentio.config + encryption key
3

Use in GitHub Actions

Store the config and key as secrets. Your agent takes it from there.

env:
  AGENTIO_CONFIG: ${{ secrets.AGENTIO_CONFIG }}
  AGENTIO_KEY: ${{ secrets.AGENTIO_KEY }}

steps:
  - run: curl -LsSf https://agentio.me/install | sh
  - run: agentio config import
  - run: agentio gmail list --limit 10