-
Notifications
You must be signed in to change notification settings - Fork 19
Add Automations feature documentation #439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
34b7c19
b8a7060
ef16dcd
e177ecb
f53b11c
c37963e
6d7abf6
f88f643
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| --- | ||
| title: Creating Automations | ||
| description: Learn how to create scheduled automations using the Automation Skill. | ||
| --- | ||
|
|
||
| <Info> | ||
| **Beta Feature**: Automations is currently in beta and available for **OpenHands Cloud** and **OpenHands Enterprise** users only. | ||
| </Info> | ||
|
|
||
| The easiest way to create an automation is to ask OpenHands directly. The Automation Skill handles all the details—you just describe what you want. | ||
|
|
||
| ## Prompt vs Plugin Automations | ||
|
|
||
| There are two types of automations: | ||
|
|
||
| <Tabs> | ||
| <Tab title="Prompt-based"> | ||
| Most automations are prompt-based. Just describe the task in natural language: | ||
|
|
||
| ``` | ||
| Create an automation called "Daily Standup Summary" that runs every weekday | ||
| at 9 AM Eastern. It should check our GitHub repo for PRs merged yesterday | ||
| and post a summary to #engineering on Slack. | ||
| ``` | ||
|
|
||
| This is all you need for reports, monitoring, data syncs, and most common tasks. | ||
| </Tab> | ||
| <Tab title="Plugin-based"> | ||
| For specialized capabilities, include one or more plugins from the [OpenHands extensions repository](https://github.com/OpenHands/extensions): | ||
|
|
||
| ``` | ||
| Create an automation using the code-review plugin that runs every weekday | ||
| at 9 AM. It should review any Python files changed in the last 24 hours. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Suggestion: Add plugin discovery guidance. You reference the "OpenHands extensions repository" but don't explain:
Add a direct link to the extensions repo and maybe a sentence about how to explore it: |
||
| ``` | ||
|
|
||
| Plugins provide additional skills, MCP configurations, or custom commands that extend what the automation can do. | ||
| </Tab> | ||
| </Tabs> | ||
|
|
||
| The agent will: | ||
| 1. Confirm the automation name and what it does | ||
| 2. Set up the schedule you requested | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Suggestion: Clarify confirmation behavior. You say "The agent will: 1. Confirm the automation name..." but this implies guaranteed interactive behavior. What if the agent interprets the prompt differently? What if it creates the automation without asking? Either:
|
||
| 3. Create the automation (with plugins if specified) | ||
|
|
||
| Once created, it runs automatically on schedule. | ||
|
|
||
| ## What to Include in Your Request | ||
|
|
||
| When asking OpenHands to create an automation, include: | ||
|
|
||
| - **What it should do**: Describe the task clearly | ||
| - **When it should run**: Daily, weekly, every hour, etc. | ||
| - **Timezone** (optional): Defaults to UTC if not specified | ||
| - **Name** (optional): The agent can suggest one based on your description | ||
| - **Plugins** (optional): Mention specific plugins if you need extended capabilities | ||
|
|
||
| ## Writing Good Automation Prompts | ||
|
|
||
| The prompt is what the AI agent executes each time the automation runs. Write it like you're giving instructions to a capable assistant. | ||
|
|
||
| ### Be Specific | ||
|
|
||
| <Tabs> | ||
| <Tab title="❌ Too Vague"> | ||
| ``` | ||
| Generate a report | ||
| ``` | ||
| </Tab> | ||
| <Tab title="✅ Clear & Actionable"> | ||
| ``` | ||
| Generate a weekly status report that: | ||
| 1. Lists all GitHub PRs merged in the last 7 days | ||
| 2. Summarizes open issues by priority | ||
| 3. Formats everything as markdown | ||
| 4. Posts to the #team-updates Slack channel | ||
| ``` | ||
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Include Where to Send Results | ||
|
|
||
| Tell the automation what to do with its output: | ||
|
|
||
| - "Post to the #alerts Slack channel" (requires [Slack MCP](/openhands/usage/cloud/slack-installation)) | ||
| - "Save to `reports/weekly-summary.md`" | ||
| - "Create a GitHub issue with the findings" (automatic if you logged in with GitHub) | ||
| - "Send a message via the configured notification service" | ||
|
|
||
| <Note> | ||
| Git providers you logged in with (GitHub, GitLab, Bitbucket) are automatically available. Other services like Slack require [MCP configuration](/openhands/usage/settings/mcp-settings). | ||
| </Note> | ||
|
|
||
| ### Specify Error Handling | ||
|
|
||
| For monitoring tasks, explain what should happen when things go wrong: | ||
|
|
||
| ``` | ||
| Check the health endpoint at https://api.example.com/health. | ||
| If it returns anything other than 200 OK, send an alert to #ops | ||
| with the status code and response body. | ||
| If it's healthy, just log success without alerting. | ||
| ``` | ||
|
|
||
| ## What Your Automation Can Access | ||
|
|
||
| Each automation runs in a full OpenHands sandbox with: | ||
|
|
||
| - **Terminal access**: Run any bash commands | ||
| - **File operations**: Create, read, and modify files | ||
| - **Your LLM**: Uses your configured model from settings | ||
| - **Your secrets**: Access API keys stored in Settings > Secrets | ||
| - **MCP integrations**: Use your configured MCP servers | ||
| - **Network access**: Make HTTP requests, connect to APIs | ||
| - **Git provider access**: Tokens from your Cloud login (GitHub, GitLab, or Bitbucket) are automatically included | ||
|
|
||
| ## Schedules | ||
|
|
||
| Tell OpenHands when you want the automation to run in plain language: | ||
|
|
||
| - "every weekday at 9 AM" | ||
| - "every Monday morning" | ||
| - "hourly" | ||
| - "every 15 minutes" | ||
| - "first day of each month" | ||
| - "twice a day at 9 AM and 5 PM" | ||
|
|
||
| The agent converts this to the appropriate cron schedule. | ||
|
|
||
| <Tip> | ||
| If you're familiar with cron expressions, you can specify them directly: "Run on cron schedule `0 9 * * 1-5`" | ||
|
Check warning on line 130 in openhands/usage/automations/creating-automations.mdx
|
||
| </Tip> | ||
|
|
||
| ## After Creation | ||
|
|
||
| Once your automation is created: | ||
|
|
||
| - **It starts enabled** by default and will run on the next scheduled time | ||
| - **You can view past runs** in the OpenHands UI | ||
| - **Each run creates a conversation** you can review or continue | ||
| - **You can disable, update, or delete it** anytime (see [Managing Automations](/openhands/usage/automations/managing-automations)) | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - [View example automations](/openhands/usage/automations/examples) | ||
| - [Manage your automations](/openhands/usage/automations/managing-automations) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,158 @@ | ||
| --- | ||
| title: Automation Examples | ||
| description: Practical examples for common automation use cases. | ||
| --- | ||
|
|
||
| <Info> | ||
| **Beta Feature**: Automations is currently in beta and available for **OpenHands Cloud** and **OpenHands Enterprise** users only. | ||
| </Info> | ||
|
|
||
| Copy and adapt these examples to create your own automations. Just paste the prompt into a conversation with OpenHands. | ||
|
|
||
| <Note> | ||
| These examples reference services like Slack and GitHub. Git providers you logged in with are automatically available, but other services like Slack require [MCP configuration](/openhands/usage/settings/mcp-settings). | ||
| </Note> | ||
|
|
||
| ## Reporting | ||
|
|
||
| ### Daily GitHub Summary | ||
|
|
||
| ``` | ||
| Create an automation called "Daily GitHub Summary" that runs every weekday at 9 AM Eastern. | ||
|
|
||
| It should: | ||
| 1. Summarize PRs opened, merged, and reviewed in the last 24 hours | ||
| 2. List any PRs that have been open for more than 3 days | ||
| 3. Format as a clean markdown summary | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Suggestion: Add explicit customization note. All these examples contain placeholders like Add a clear note at the top: "Note: Replace placeholder URLs, channel names, and domain names with your actual values." Users will copy-paste these and wonder why they don't work. |
||
| 4. Post to the #engineering Slack channel | ||
| ``` | ||
|
|
||
| ### Weekly Metrics Report | ||
|
|
||
| ``` | ||
| Create an automation called "Weekly Metrics" that runs every Monday at 9 AM. | ||
|
|
||
| It should generate a weekly report covering: | ||
| - GitHub activity (commits, PRs merged, issues closed) | ||
| - Open issues grouped by priority | ||
| - PRs awaiting review for more than 3 days | ||
|
|
||
| Save the report to weekly-reports/ with the current date in the filename. | ||
| ``` | ||
|
|
||
| ## Monitoring | ||
|
|
||
| ### API Health Check | ||
|
|
||
| ``` | ||
| Create an automation called "API Health Monitor" that runs every 30 minutes. | ||
|
|
||
| It should check https://api.example.com/health and: | ||
| - If the response is not 200 OK, send an alert to #alerts with the status code and response body | ||
| - If healthy, just log success without alerting anyone | ||
| ``` | ||
|
|
||
| ### SSL Certificate Monitor | ||
|
|
||
| ``` | ||
| Create an automation called "SSL Monitor" that runs daily at 8 AM. | ||
|
|
||
| It should check SSL certificate expiry for these domains: | ||
| - api.example.com | ||
| - app.example.com | ||
| - www.example.com | ||
|
|
||
| If any certificate expires within 30 days, alert #devops with the domain and days remaining. | ||
| ``` | ||
|
|
||
| ## Maintenance | ||
|
|
||
| ### Weekly Cleanup | ||
|
|
||
| ``` | ||
| Create an automation called "Weekly Cleanup" that runs every Sunday at 2 AM UTC. | ||
|
|
||
| It should: | ||
| 1. Find and delete temporary files older than 7 days | ||
| 2. Create a summary of what was removed (file paths and sizes) | ||
| 3. Post the cleanup summary to #ops | ||
| ``` | ||
|
|
||
| ### Backup Verification | ||
|
|
||
| ``` | ||
| Create an automation called "Backup Check" that runs daily at 6 AM. | ||
|
|
||
| It should verify that database backups exist and were created within the last 24 hours. | ||
| List the most recent backup for each database with its timestamp and size. | ||
| If any backup is missing or stale, send an urgent alert to #alerts. | ||
| ``` | ||
|
|
||
| ## Data Sync | ||
|
|
||
| ### Analytics Data Sync | ||
|
|
||
| ``` | ||
| Create an automation called "Analytics Sync" that runs every 6 hours. | ||
|
|
||
| It should: | ||
| 1. Pull the latest data from our analytics API | ||
| 2. Update metrics.json with the new data | ||
| 3. Calculate week-over-week changes for key metrics | ||
| 4. If any metric changed by more than 20%, flag it in a summary message | ||
| ``` | ||
|
|
||
| ## Code Quality | ||
|
|
||
| ### Dependency Checker | ||
|
|
||
| ``` | ||
| Create an automation called "Dependency Checker" that runs every Monday at 8 AM. | ||
|
|
||
| It should: | ||
| 1. Scan all package.json and requirements.txt files | ||
| 2. Check for outdated dependencies | ||
| 3. Create a report listing packages with available updates (grouped by major/minor/patch) | ||
| 4. Post the report to #engineering | ||
| ``` | ||
|
|
||
| ### Security Scan | ||
|
|
||
| ``` | ||
| Create an automation called "Security Scan" that runs daily at 3 AM. | ||
|
|
||
| It should run a security audit: | ||
| 1. Check for known vulnerabilities in dependencies | ||
| 2. Scan for hardcoded secrets or API keys | ||
| 3. Look for common security misconfigurations | ||
|
|
||
| Create a detailed report and alert #security if any high or critical issues are found. | ||
| ``` | ||
|
|
||
| ## Tips for Writing Good Prompts | ||
|
|
||
| ### Be Specific About Actions | ||
|
|
||
| Tell the automation exactly what to do: | ||
| - "Check X and if Y, then Z" | ||
| - "Generate a report and save it to..." | ||
| - "Fetch data, compare with expected values, and report differences" | ||
|
|
||
| ### Include Error Handling | ||
|
|
||
| Specify what should happen when things go wrong: | ||
| - "If the response is not 200..." | ||
| - "If any backup is missing..." | ||
| - "If the check fails, alert the team" | ||
|
|
||
| ### Define Where Results Go | ||
|
|
||
| Be explicit about outputs: | ||
| - "Post to the #channel Slack channel" | ||
| - "Save to reports/ with the current date" | ||
| - "Create a GitHub issue with the findings" | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - [Creating Automations](/openhands/usage/automations/creating-automations) — More details on writing prompts | ||
| - [Managing Automations](/openhands/usage/automations/managing-automations) — Update, disable, or delete automations | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟠 Important: Navigation inconsistency.
The docs are only in the Enterprise tab, but
overview.mdxsays this feature is available for "OpenHands Cloud and OpenHands Enterprise users only."If Cloud users can access this, it should also appear in the Cloud tab navigation. If it's truly Enterprise-only, fix the messaging in all MDX files to remove "Cloud".