diff --git a/docs.json b/docs.json index 9269398f..530566fa 100644 --- a/docs.json +++ b/docs.json @@ -401,7 +401,8 @@ { "tab": "Enterprise", "pages": [ - "enterprise/index" + "enterprise/index", + "enterprise/quick-start" ] } ] diff --git a/enterprise/images/accept-terms-of-service.png b/enterprise/images/accept-terms-of-service.png new file mode 100644 index 00000000..97871230 Binary files /dev/null and b/enterprise/images/accept-terms-of-service.png differ diff --git a/enterprise/images/admin-console-login.png b/enterprise/images/admin-console-login.png new file mode 100644 index 00000000..8e0b7b67 Binary files /dev/null and b/enterprise/images/admin-console-login.png differ diff --git a/enterprise/images/admin-dashboard.png b/enterprise/images/admin-dashboard.png new file mode 100644 index 00000000..1091b9f5 Binary files /dev/null and b/enterprise/images/admin-dashboard.png differ diff --git a/enterprise/images/configure-cluster-nodes.png b/enterprise/images/configure-cluster-nodes.png new file mode 100644 index 00000000..2b9b90f8 Binary files /dev/null and b/enterprise/images/configure-cluster-nodes.png differ diff --git a/enterprise/images/configure-openhands.png b/enterprise/images/configure-openhands.png new file mode 100644 index 00000000..fd99ba60 Binary files /dev/null and b/enterprise/images/configure-openhands.png differ diff --git a/enterprise/images/deployment-in-progress.png b/enterprise/images/deployment-in-progress.png new file mode 100644 index 00000000..ba80bab3 Binary files /dev/null and b/enterprise/images/deployment-in-progress.png differ diff --git a/enterprise/images/deployment-status-details.png b/enterprise/images/deployment-status-details.png new file mode 100644 index 00000000..262f8194 Binary files /dev/null and b/enterprise/images/deployment-status-details.png differ diff --git a/enterprise/images/install-commands.png b/enterprise/images/install-commands.png new file mode 100644 index 00000000..03ee6a31 Binary files /dev/null and b/enterprise/images/install-commands.png differ diff --git a/enterprise/images/install-instance-name.png b/enterprise/images/install-instance-name.png new file mode 100644 index 00000000..f8e52558 Binary files /dev/null and b/enterprise/images/install-instance-name.png differ diff --git a/enterprise/images/openhands-ready.png b/enterprise/images/openhands-ready.png new file mode 100644 index 00000000..2bbf86fd Binary files /dev/null and b/enterprise/images/openhands-ready.png differ diff --git a/enterprise/images/self-signed-cert-warning.png b/enterprise/images/self-signed-cert-warning.png new file mode 100644 index 00000000..63770eab Binary files /dev/null and b/enterprise/images/self-signed-cert-warning.png differ diff --git a/enterprise/images/upload-tls-certificate.png b/enterprise/images/upload-tls-certificate.png new file mode 100644 index 00000000..ee45368c Binary files /dev/null and b/enterprise/images/upload-tls-certificate.png differ diff --git a/enterprise/index.mdx b/enterprise/index.mdx index 83a36d88..ca4d340e 100644 --- a/enterprise/index.mdx +++ b/enterprise/index.mdx @@ -8,6 +8,11 @@ OpenHands Enterprise allows you to run AI coding agents directly on your own servers or in your private cloud. Unlike the SaaS version, the enterprise deployment gives you complete control over your AI development environment. + + Deploy OpenHands Enterprise on your own infrastructure in under an hour. + No credit card required. + + ## What is OpenHands Enterprise? OpenHands Enterprise brings the power of autonomous coding agents to your @@ -52,7 +57,7 @@ OpenHands Enterprise integrates with your existing enterprise ecosystem: - **Identity & Access**: Enterprise SAML/SSO for centralized authentication - **Source Control**: GitHub Enterprise, GitLab, Bitbucket -- **Project Management**: Jira, and other ticketing systems +- **Project Management**: Jira and other ticketing systems - **Communication**: Slack integration for notifications and workflows ### Containerized Sandbox Runtime @@ -84,14 +89,23 @@ Enterprise customers receive: ## Getting Started - - Ready to bring OpenHands to your organization? Contact our team to discuss - your requirements and get started with a deployment plan. - + + + Trial OpenHands Enterprise for free! + + + Ready to bring OpenHands to your organization? Contact our team to discuss + your requirements and get started with a deployment plan. + + ## Additional Resources diff --git a/enterprise/quick-start.mdx b/enterprise/quick-start.mdx new file mode 100644 index 00000000..425bc99c --- /dev/null +++ b/enterprise/quick-start.mdx @@ -0,0 +1,350 @@ +--- +title: Quick Start +description: Get started with a 30-day trial of OpenHands Enterprise. +icon: rocket +--- + +This guide walks you through trialing OpenHands Enterprise on AWS. You'll provision +infrastructure with Terraform, configure GitHub for user authentication, and set up +Anthropic as your LLM provider. + +## Prerequisites + +Before you begin, make sure you have the following ready: + +- **Anthropic API key** from the [Anthropic Console](https://console.anthropic.com/) +- **A GitHub account** with permission to create GitHub Apps +- **An AWS account** with permissions to create EC2, VPC, and Route53 resources + +## Provision Infrastructure + +You will need a VM to host OpenHands Enterprise. Choose one of the options below to provision your infrastructure. + + + + We provide a [Terraform module](https://github.com/All-Hands-AI/OpenHands-Cloud/tree/main/terraform/aws) that provisions a properly configured environment + for OpenHands Enterprise, including the EC2 instance, DNS records, and TLS certificates. + + + Follow the README instructions to configure and apply the Terraform configuration. + + + + + If you are provisioning a VM manually (on-premises or on another cloud provider), + it must meet the requirements below. + + + | Resource | Requirement | + |----------|-------------| + | **vCPUs** | 16 | + | **Memory** | 64 GB | + | **Disk** | 200 GB | + | **Disk P99 write latency** | 10 ms maximum | + | **OS** | Linux (x86-64 architecture) | + | **Init system** | systemd | + | **Access** | Root access (sudo) required | + + + + **Firewall inbound rules** -- the following ports must be open: + + | Port | Protocol | Purpose | + |------|----------|---------| + | 80 | TCP | HTTP | + | 443 | TCP | HTTPS | + | 30000 | TCP | Admin Console | + + **Local ports** -- the following ports must be available for local processes (no firewall rules needed): + + `2379/TCP`, `7443/TCP`, `9099/TCP`, `10248/TCP`, `10257/TCP`, `10259/TCP` + + **Outbound access** -- the VM must be able to reach: + + - `replicated.app` + - `proxy.replicated.com` + - `images.r9.all-hands.dev` + - `install.r9.all-hands.dev` + - `charts.r9.all-hands.dev` + - `updates.r9.all-hands.dev` + - `github.com` + - `docker.io` + - `docker.dev` + - `ghcr.io` + + + + The installation creates directories and files in the following locations: + + ``` + /etc/cni + /etc/k0s + /opt/cni + /opt/containerd + /run/calico + /run/containerd + /run/k0s + /sys/fs/cgroup/kubepods + /sys/fs/cgroup/system.slice/containerd.service + /sys/fs/cgroup/system.slice/k0scontroller.service + /usr/libexec/k0s + /usr/local/bin/k0s + /var/lib/calico + /var/lib/cni + /var/lib/containers + /var/lib/embedded-cluster + /var/lib/kubelet + /var/log/calico + /var/log/containers + /var/log/embedded-cluster + /var/log/pods + ``` + + + ### DNS and TLS Setup + + Once your VM is running, configure DNS and TLS before starting the installer. + + **Create DNS A records** pointing to your VM's public IP address: + + | Record | Example | + |--------|---------| + | `` | `openhands.example.com` | + | `app.` | `app.openhands.example.com` | + | `auth.app.` | `auth.app.openhands.example.com` | + | `llm-proxy.` | `llm-proxy.openhands.example.com` | + | `runtime-api.` | `runtime-api.openhands.example.com` | + | `*.runtime.` | `*.runtime.openhands.example.com` | + + **Obtain a TLS certificate** with SANs (Subject Alternative Names) for all of the above domains, + then copy the certificate (`.pem` or `.crt`) and private key (`.pem` or `.key`) to the VM. + + + If you don't provide TLS certificates during installation, the Admin Console will use a + self-signed certificate and your browser will display a security warning. You can still + upload your certificate afterward through the Admin Console. + + + + +## Run the Installer + +### 1. Access the Installer Dashboard + +[Register for a free 30-day trial](https://install.r9.all-hands.dev/openhands/signup), then +log in to the installer dashboard. You will see the dashboard below. +Click **"View install guide"** in the Install tile. + +![Installer Dashboard](./images/admin-dashboard.png) + +### 2. Name your instance + +Enter a name for your instance (e.g., your company name or environment identifier). +Select **"Outbound requests allowed"** for Network Availability, then click **Continue**. + +![Instance name and network availability](./images/install-instance-name.png) + +### 3. Run the installation commands + +The install guide provides commands to run on your VM. SSH into your VM and execute them in order: + +1. **Select a version** -- the latest version is pre-selected +2. **Download the installation assets** -- copy and run the `curl` command shown +3. **Extract the installation assets** -- run the `tar` command shown (this includes your license file) +4. **Install** -- run the install command shown + + + **We recommend providing your TLS certificates during installation.** If you used the + Terraform module, the certificates are in your home directory: + + ```bash + sudo ./openhands install --license license.yaml \ + --tls-cert ~/certificate.pem \ + --tls-key ~/private-key.pem + ``` + + If you provisioned manually and have your own certificates on the VM, pass them the same way. + You can also omit the `--tls-cert` and `--tls-key` flags and upload certificates later through + the Admin Console. + + +![Installation commands](./images/install-commands.png) + +### 4. Access the Admin Console + +Once the install command completes, the Admin Console is available at: +- `https://:30000` (if you provided TLS certificates) +- `http://:30000` (if you did not use the `--tls-cert` and `--tls-key` flags on the `install` command) + +If you did not provide TLS certificates with the `install` command, your browser will display a security warning. +Click **Advanced**, then **Proceed** to continue to the Admin Console. + +![Self-signed certificate warning](./images/self-signed-cert-warning.png) + +### 5. Upload TLS certificate (if not provided with the install command) + +If you did not provide certificates with the `install` command, select **"Upload your own"**, +enter your base domain under **Hostname**, upload your private key and SSL certificate, then click **Continue**. + +![Upload TLS certificate](./images/upload-tls-certificate.png) + +### 6. Log in to the Admin Console + +Enter the password you set during installation and click **Log in**. + +![Admin Console login](./images/admin-console-login.png) + +### 7. Configure the cluster + +You will be prompted to add additional nodes to the cluster. +For a single-node deployment, click **Continue** to skip this step. + +![Configure cluster nodes](./images/configure-cluster-nodes.png) + +## Configure OpenHands + +You should now see the application configuration page. + +![Configure OpenHands](./images/configure-openhands.png) + +### Domain Configuration + +- Select **"Derive hostnames from domain (recommended)"** +- Enter your base domain (e.g., `openhands.example.com`) + +### Certificate Configuration + +- Upload your **TLS Certificate** (`.crt` or `.pem`) +- Upload your **TLS Private Key** (`.key` or `.pem`) +- Optionally upload the root **CA Certificate** for your TLS certificates + +### LLM Configuration + +Enter your Anthropic API key from the [Anthropic Console](https://console.anthropic.com/). + +### GitHub Authentication + +Enable GitHub Authentication in the Admin Console, then follow these steps to create and +configure a GitHub App. + +#### Create a GitHub App + +1. Go to [github.com/settings/apps](https://github.com/settings/apps) and click **New GitHub App**. + +2. Set a unique **GitHub App name** (e.g., `ACME Corp OpenHands`). + +3. Set the **Homepage URL** to `https://app.`. + +4. Under **Identifying and authorizing users**: + - Set the **Callback URL** to: + ``` + https://auth.app./realms/allhands/broker/github/endpoint + ``` + - Check the box for **Request user authorization (OAuth) during installation** + +5. Under **Webhook**: + - Set the **Webhook URL** to: + ``` + https://app./integration/github/events + ``` + - Generate a webhook secret: + ```bash + export WEBHOOK_SECRET=$(openssl rand -base64 32 | tr -dc A-Za-z0-9 | head -c 32) + echo $WEBHOOK_SECRET + ``` + - Paste the generated value into the **Secret** field + + + Save the webhook secret value -- you will need to enter it in the Admin Console configuration. + + +6. Under **Permissions**, configure the following: + + **Repository permissions:** + + | Permission | Access | + |-----------|--------| + | Actions | Read and write | + | Commit statuses | Read and write | + | Contents | Read and write | + | Issues | Read and write | + | Pull requests | Read and write | + | Webhooks | Read and write | + | Workflows | Read and write | + + **Organization permissions:** + + | Permission | Access | + |-----------|--------| + | Events | Read-only | + + **Account permissions:** + + | Permission | Access | + |-----------|--------| + | Email addresses | Read-only | + +7. Click **Create GitHub App**. + +8. On the GitHub App page, under **Client secrets**, click **Generate a new client secret**. + Save this value. + +9. Under **Private keys**, click **Generate a private key**. The `.pem` file downloads + automatically -- note its location. + +#### Map GitHub App values to Admin Console + +Go back to the Installer Admin Console in your browser and enter the following values: + +| GitHub App Value | Admin Console Field | +|-----------------|-------------------| +| Client ID (shown on app page) | GitHub OAuth Client ID | +| Client secret (from step 8) | GitHub OAuth Client Secret | +| App ID (shown on app page) | GitHub App ID | +| Webhook secret (from step 5) | GitHub App Webhook Secret | +| Private key file (from step 9) | GitHub App Private Key (file upload) | + +After filling in all fields, click **Continue** at the bottom of the page. + +## Deploy and Verify + +OpenHands will begin deploying. You can expect the deployment status to transition from +**Missing** to **Unavailable** to **Ready**. This typically takes 5-10 minutes. + +![Deployment in progress](./images/deployment-in-progress.png) + +Click **Details** next to the deployment status to monitor individual resources. Resources +shown in orange are still deploying -- wait until all resources are ready. + +![Deployment status details](./images/deployment-status-details.png) + +## First Login + +Once the deployment status shows **Ready**, navigate to `https://app.` +and click the **Login with GitHub** tile. + + +Accept the Terms of Service and click **Continue**. + +![Accept Terms of Service](./images/accept-terms-of-service.png) + +OpenHands Enterprise is now running. You can open a repository or start a new conversation. + +![OpenHands is ready](./images/openhands-ready.png) + +## Next Steps + + + + Learn about OpenHands Enterprise features, integrations, and deployment options. + + + Get the most out of your AI coding agents with effective prompting techniques. + + + Reach out to the OpenHands team for deployment assistance or questions. + + + Explore the full OpenHands documentation for usage guides and features. + +