For the complete site index, see llms.txt. Docs index: llms-docs.txt. Marketing corpus: llms-full.txt. Docs corpus: llms-full-docs.txt. Prefer markdown URLs where available (append .md).. Product skill: skill.md. Pricing: pricing.md. Docs MCP: /docs/mcp.

Email from
your terminal.

The Reloop CLI sends, schedules and receives email from a shell, a CI job or a coding agent. Every command speaks JSON.

Up and running in a minute

Sign in through the browser, give your agent the skill, and send.

1

Install and sign in

Opens your browser to authorize your workspace. No API key to paste.

bash
npx -y reloop-cli init --all --browser
2

Teach your agent the CLI

Adds the Reloop skill to Claude Code, Codex and other skill-aware agents.

bash
npx skills add reloop/reloop-cli
3

Send your first email

Every command takes --json for machine-readable output in scripts and agents.

bash
1reloop emails send \
2 --from "you@yourdomain.com" \
3 --to "user@example.com" \
4 --subject "Hello from Reloop" \
5 --text "It works."

Built for scripts and agents

Predictable output, stdin everywhere and safe retries. The same commands work in a shell, a CI job or a coding agent.

JSON output for agents

Add --json to any command. Output goes to stdout with no spinners, exit codes are 0 for success and 1 for errors, and every error has a message and a code.

stdout
1{
2 "error": {
3 "message": "No API key found",
4 "code": "auth_error"
5 }
6}

Pipe content from stdin

Pass - to any file flag to read from stdin. Works with --text-file, --html-file and --file.

bash
1echo "Your order has shipped." | reloop emails send \
2 --from "Acme <onboarding@example.com>" \
3 --to delivered@example.com \
4 --subject "Order update" \
5 --text-file -

Batch sending

Send up to 100 emails in one request from a JSON file or a pipe.

bash
cat emails.json | reloop emails batch --file -

Safe retries

Retry a failed send with the same --idempotency-key and Reloop won't deliver it twice. Supported on emails send and emails batch.

bash
1reloop emails send \
2 --from "Acme <onboarding@example.com>" \
3 --to delivered@example.com \
4 --subject "Welcome" \
5 --text "Hello!" \
6 --idempotency-key "welcome-user-123"

Scheduling

Schedule with --scheduled-at, then cancel or reschedule by id.

bash
1reloop emails send \
2 --from "Acme <onboarding@example.com>" \
3 --to delivered@example.com \
4 --subject "Your trial ends soon" \
5 --text "Your free trial expires in 3 days." \
6 --scheduled-at "tomorrow at 9am ET"
7
8reloop emails cancel <id>
9reloop emails update <id> --scheduled-at <datetime>

Read inbound email

Stream new inbound email as JSON from a long-running process, or fetch one by id. Needs a verified domain with receiving enabled.

bash
1reloop emails receiving listen --json
2
3reloop emails receiving get <email-id>

Webhooks in your terminal

Subscribe to webhook events and stream them to your terminal, or forward them to a local server. The webhook is removed when you disconnect.

bash
1reloop webhooks listen \
2 --url https://hostname.tailnet-name.ts.net \
3 --events email.delivered email.bounced email.received
4
5reloop webhooks listen \
6 --url https://hostname.tailnet-name.ts.net \
7 --forward-to http://localhost:4321/api/webhook

Working in Claude, Cursor or VS Code instead of a shell? Use the Reloop MCP server.

Send email from your terminal.
One command to start.

Create a free account, run init, and send your first email from the shell or your agent.

FAQ

Frequently asked questions.

Run npx -y reloop-cli init --all --browser. It sets up the CLI and opens your browser so you can authorize your workspace.

Install the agent skill with npx skills add reloop/reloop-cli so Claude Code, Codex and other skill-aware agents know the commands. Agents pass --json to get machine-readable output, exit code 0 on success and 1 on errors, and errors with a message and a code.

Yes. reloop emails batch sends up to 100 emails in a single request. Pass a JSON file, or use --file - to read it from stdin.

Pass --idempotency-key with a stable value, such as welcome-user-123. Retrying with the same key won't send the email again. It works on emails send and emails batch.

Yes. reloop emails receiving listen --json streams new inbound email, and reloop emails receiving get fetches one by id. You need a verified domain with receiving enabled.

Run reloop webhooks listen with a public --url (Tailscale Funnel, ngrok or similar) and the events you want. Add --forward-to to send them to a local server. The webhook is removed when you press Ctrl+C.

Reloop