EasyActions – run GitHub Actions across an organization EasyActions launched as a web dashboard that lets users select a GitHub organization and trigger workflow_dispatch runs across many repositories at once, with live status tracking via adaptive polling. The tool, codenamed Pipliner, authenticates through a GitHub App with a PKCE flow, keeps GitHub tokens encrypted server-side for up to 30 days, and requires a daily 6-digit authenticator code plus ten one-time recovery codes. A guard locks the Run button on default-branch targets until the user types the organization's name, and a statistics dashboard reports success rate, average duration and top failing workflows over 7, 30 or 90 days. Run GitHub Actions across a whole organization — safely, in bulk, and live. Features features · How it works how-it-works · Getting started getting-started · Configuration configuration · Security security · Development development · Architecture https://github.com/Mask-AI-FR/EasyAction/blob/main/docs/ARCHITECTURE.md EasyActions is a web dashboard for GitHub Actions. You pick a GitHub organization and see every repository with its branches and workflows, plus the live status of each one. You can start workflow dispatch runs on many repositories at once, then watch them finish, all from one screen. EasyActions is the product name. Pipliner is the codename: you will still see it in the code, the cookies, the /health answer and the logs. - Sign in with GitHub, stay signed in. It uses a GitHub App with a PKCE flow. You stay signed in for up to 30 days configurable : your GitHub tokens are kept encrypted on the server and renewed automatically. The browser never sees them. - Daily code. Once a day, each browser asks for the 6-digit code of an authenticator app Google Authenticator, Authy, 2FAS, 1Password… , set up with a QR code at your first sign-in. Ten one-time recovery codes cover a lost phone. - Your account. See every browser where you are signed in, sign the others out, make new recovery codes, change your authenticator app, download your data or delete it. Sign-ins and security actions are kept in a history. - Settings in the website, for admins. Enter the GitHub connection addresses, GitHub App client ID and secret on a setup page the first time, then change it and the limits without editing files. Manage users: roles, authenticator reset, sign-out, deletion. Read the security history. Sensitive changes ask for a current 6-digit code. - Statistics dashboard. Each organization opens on its dashboard: people who committed on any branch, successful and failed runs, success rate, average duration and branches, compared with the previous period; runs over time, rankings by repository, top failing workflows and recent failures. 7, 30 or 90 days. Every chart has a table view, and the page names anything it could not read. - Sidebar, organization already chosen. The navigation sits on the left a drawer on a phone : your organization with its dashboard and repositories, the admin pages, and your account card with its sign-out button. The organization you opened last in this browser is selected for you otherwise the first of your list ; switch to another from the card at the top. While anything loads, the EasyActions gear turns. - Organization overview. See every repository the app can access. Search and filter them by visibility, language and archived state, and sort them. The filters are saved in the address, so you can share a link to a filtered view. - Branches and workflows per repository. Branches are listed in this order: the default branch, then active branches, then stale ones. Each workflow shows the status of its latest run on the branch you chose. - Bulk runs. Select repositories and workflows, look over the full list of targets in a confirmation dialog, and start them all with one request. - Guard for production branches. If any target is on a repository's default branch, the Run button stays locked until you type the organization's name. - Live tracking. Started runs are checked with an adaptive polling interval. If their state can't be confirmed, they show "Status unknown" and a link to GitHub. The app never guesses a result. - Desktop window. bun run desktop opens EasyActions in its own window. You can also install it from Brave, Chrome or Edge. - GitHub Enterprise Server and GHE.com are supported through two settings. One Bun process serves both the web app and its API from the same origin. Browser ── same origin ──▶ Bun + Hono ├─ /health, /auth/ , /api/ → server/ GitHub adapters: OAuth, repos, Actions └─ any other path → app/ TiniJS + Lit web app | Folder | Contents | |---|---| | app/ | The web app: TiniJS on Lit, Tailwind CSS v4, MASKAI design tokens with an EasyActions brand layer | | server/ | The Hono server: auth, sessions, API routes, GitHub adapters, SQLite database schema, repositories , config, logging | | domain/ | Framework-free logic and types shared by both sides API contract, dispatch plan, polling policy, dashboard statistics | | scripts/ | Production build, database, settings and user commands, and the desktop launcher | | tests/ | Unit and integration tests. GitHub is replaced by a real local fake HTTP server | Every design choice, the full list of routes, and the behaviour on each kind of failure are described in docs/ARCHITECTURE.md https://github.com/Mask-AI-FR/EasyAction/blob/main/docs/ARCHITECTURE.md ; what is stored and how it is protected, in docs/SECURITY.md https://github.com/Mask-AI-FR/EasyAction/blob/main/docs/SECURITY.md . - Bun https://bun.sh 1.3.11 - A GitHub organization where you can install a GitHub App - Optional: a Chromium-based browser Brave, Chromium, Chrome, Edge for the desktop window On GitHub, go to Settings › Developer settings › GitHub Apps › New GitHub App or do the same in your organization's settings , then set: | Setting | Value | |---|---| | Homepage URL | http://127.0.0.1:8094 | | Callback URL | http://127.0.0.1:8094/auth/callback | | Expire user authorization tokens | Checked required: without it, sign-in is refused | | Request user authorization OAuth during installation | Unchecked | | Webhook → Active | Unchecked | | Repository permissions | Actions: Read and write · Contents: Read-only · Metadata: Read-only | Create the app. Note its Client ID , generate a client secret , and install the app on your organization. bun install --frozen-lockfile cp .env.example .env openssl rand -base64 32 openssl rand -base64 32 Open .env and replace every