# OpenChamber for Actions **Version:** `v0.1.0-preview` OpenChamber for Actions allows you to run a full OpenChamber environment remotely using GitHub Actions infrastructure. It provides access to OpenCode, OpenChamber, and a web-based terminal without requiring any local hardware. --- ## Overview OpenChamber for Actions is a "computer in the cloud" solution that leverages GitHub Runners to host a temporary development environment. It spins up three key services: * **OpenCode TTY:** A web-based terminal for command-line access. * **OpenChamber:** The core environment. * **OpenCode Web:** The web interface for coding and interaction. These services are exposed via secure tunnels (Cloudflare or Ngrok), allowing you to access them from any browser. The session can persist data between runs using GitHub Artifacts. --- ## Key Features * **No local hardware required:** Run OpenChamber on GitHub Actions infrastructure. * **OpenCode integration:** Access the OpenCode suite and "Antigravity" model selection (including Gemini 3 and Claude 4.5). * **Secure access (optional):** Protect OpenChamber, OpenCode Web, and the TTY with `OPENCODE_SERVER_PASSWORD`. * **Persistent sessions (optional):** Save login state, OAuth tokens, and configuration as GitHub Artifacts when a password is set (encrypted). * **Self-healing tunnels:** Background monitoring keeps the tunnel stable. --- ## New to this? (Beginners' Guide)
Click to expand: What is this and how does it help me? ### 1. What exactly is this? Think of this as a "computer in the cloud." Instead of running a local AI environment, GitHub Actions provides the compute for you. ### 2. What do I need to start? * A GitHub account. * A web browser (Chrome, Edge, Safari, etc.). * No special hardware required. ### 3. Why is Cloudflare recommended? Cloudflare Quick Tunnels create a secure public URL automatically. You do not need extra accounts or API keys, so it is the simplest option. ### 4. What is persistence? When a password is set, the workflow saves your login info and settings as an encrypted GitHub Artifact. The next run restores the session so you can continue without logging in again.
---
Usage Limits & Quotas To ensure stability and compliance with GitHub’s Terms of Service, be aware of the following limits: | Limit Type | Constraint | Explanation | | :--- | :--- | :--- | | **Time Limit** | **6 Hours Max** | GitHub stops any job after 360 minutes. | | **Storage** | **2GB** | Session artifacts cannot exceed 2GB per repository. | | **Concurrency** | **1 Run Only** | Run a single OpenChamber instance at a time. | | **Hardware** | **2-Core CPU** | Standard Linux runners (~7GB RAM). |
--- ## Installation Guide ### Option A: Easy Mode (Recommended) Uses Cloudflare tunnels. No configuration required unless you want password protection. 1. Fork this repository to your GitHub account. 2. Open the Actions tab in your fork. 3. Select the **OpenChamber for Actions** workflow. 4. (Optional) **Set a Password (recommended):** * Go to **Settings** -> **Secrets and variables** -> **Actions**. * Click **New repository secret**. * **Name:** `OPENCODE_SERVER_PASSWORD` * **Secret:** Your desired password. * *Note: If this secret is set, it protects OpenCode TTY, OpenChamber, and OpenCode Web. It also enables encrypted persistence.* 5. Click **Run workflow**. * **Tunnel Provider:** Choose `cloudflare` (default) or `ngrok`. * **Auto-shutdown after (minutes):** Set the duration (default `300`). 6. Wait about 30 seconds for setup to finish. 7. Open the run, then open the `serve` job. 8. Expand the **Monitor & Self-Heal** step to find the URLs and open them. > [!TIP] > Keep the repository visibility `Private` or use `OPENCODE_SERVER_PASSWORD` in Github Actions Secrets. Otherwise, your privacy can be violated. --- ### Option B: Pro Mode (Ngrok)
Click to expand: Step-by-step guide for setting up Ngrok If you prefer using Ngrok for a static domain, follow these steps to set up your API key. #### Step 1: Get your authtoken 1. Log in or sign up at dashboard.ngrok.com. 2. In the sidebar, click "Your Authtoken." 3. Copy the token string (for example, `21xYz...`). #### Step 2: Add the secret to GitHub 1. Open your forked repository on GitHub. 2. Open Settings. 3. In the sidebar, open Secrets and variables and click Actions. 4. Click New repository secret. 5. **Name:** `NGROK_AUTH_TOKEN`. 6. **Secret:** Paste the token. 7. (Optional) Add `OPENCODE_SERVER_PASSWORD` to enable password protection for all services and encrypted persistence. 8. Click Add secret. #### Step 3: Run with Ngrok 1. Go to the Actions tab. 2. Select **OpenChamber for Actions**. 3. Click **Run workflow**. 4. Select `ngrok` as the Tunnel Provider. 5. Find the URL in the "Monitor & Self-Heal" step.
--- ## Frequently Asked Questions (FAQ)
Q: Is this completely free? GitHub provides 2,000 minutes for private repositories and unlimited minutes for public repositories. This workflow uses those minutes.
Q: Why did my session stop working after a few hours? GitHub Actions has a 6-hour job limit. The environment shuts down automatically. If persistence is enabled, your session data is restored on the next run.
Q: Can I use this on my phone or tablet? Yes. Once you have a public URL (Cloudflare or Ngrok), open it in any mobile browser.
Q: Is my data private? If you fork this as a public repository, your code may be visible depending on how you save it. For maximum privacy, use a private fork. If you want persistence, set `OPENCODE_SERVER_PASSWORD` so the artifact is encrypted.
Q: I see a "Connection Refused" error. What do I do? Wait about 30 seconds and refresh the page. If it persists, check the Monitor logs in the Actions run.
--- ## Technical Specifications | Feature | Detail | | :--- | :--- | | **Version** | `v0.1.0-preview` | | **OS** | Ubuntu 22.04 LTS (GitHub Runner) | | **Node Version** | v20.x | | **Tunnel Protocols** | `cloudflared` (Argon) / `ngrok` (HTTP) | | **Artifact Retention** | 90 Days (Default GitHub Policy) | > [!NOTE] > This project is for educational and development purposes. Do not use this workflow for mining crypto or other activities banned by the GitHub Acceptable Use Policy.