1 Branch v0.1.0
Team Ethrinitial release v0.1.0
a1b2c3d·today 1 Commit
docs
README.md
README

Ethr

Your AI agents. Your workflows. Your rules.

Ethr is a CLI tool for defining and running AI-powered workflows locally. You write workflows in YAML — with triggers, AI steps, conditions, and actions — and Ethr orchestrates them across your services. Default AI provider is Ollama, so everything runs on your machine.


Quick Start

curl -fsSL https://ethr.sh/install.sh | sh
ethr init my-workflow
cd my-workflow
ethr run

Installation

macOS / Linux (recommended):

curl -fsSL https://ethr.sh/install.sh | sh

This downloads the latest prebuilt binary for your platform and installs it to /usr/local/bin.

Manual download:

Grab the binary for your OS and architecture from the Releases page, then place it on your PATH.

Verify installation:

ethr version

Features

  • Multi-provider LLM support — Ollama (default), OpenAI, and Anthropic
  • 11 integrations — Slack, Gmail, iMessage, Google Calendar, Jira, Asana, Atlassian/Confluence, Kubernetes, and more
  • Workflow orchestration — Chain AI steps and actions with conditions, retries, and error handling
  • AI config generation — Describe your workflow in plain English and let AI generate the YAML config
  • Local-first — Your workflows run on your machine. Your data stays with you.
  • Dry-run mode — Simulate execution without performing actions

Example Config

version: "1"

settings:
  ai:
    provider: ollama
    model: llama3.2
    base_url: http://localhost:11434

integrations:
  webhook:
    enabled: true
    addr: ":8080"
    path: "/webhook"

workflows:
  - name: classify-request
    trigger:
      integration: webhook
      event: request.received
    steps:
      - name: classify
        type: ai
        prompt: |
          Analyze this incoming request:
          {{ .trigger | toJSON }}
          Respond with JSON: {"action": "process" | "ignore", "reason": "..."}
        output: classification
      - name: notify
        type: action
        condition: '{{ eq .classification.action "process" }}'
        integration: slack
        action: send_message
        params:
          text: "New request classified: {{ .classification.reason }}"

Available Integrations

IntegrationType
SlackMessaging
GmailEmail (IMAP/SMTP)
iMessageMessaging
Google CalendarCalendar (AppleScript)
JiraProject Management (Webhook + REST)
AsanaProject Management
Atlassian/ConfluenceDocumentation
KubernetesInfrastructure (kubectl)
WebhookHTTP Server + Client
CronScheduled Triggers
Pub/SubMessage Queue (gcloud)

Documentation

See the docs folder for full documentation.