{"id":49741053,"url":"https://github.com/HyperAITeam/CLITrigger","last_synced_at":"2026-05-26T09:01:25.993Z","repository":{"id":350974679,"uuid":"1190613536","full_name":"HyperAITeam/CLITrigger","owner":"HyperAITeam","description":"Orchestrate AI coding agents (Claude, Gemini, Codex) in parallel with git worktree isolation — web UI + CLI","archived":false,"fork":false,"pushed_at":"2026-05-22T15:36:52.000Z","size":6511,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-22T20:23:27.751Z","etag":null,"topics":["ai-automation","ai-coding","claude","claude-code","codex","codex-cli","developer-tools","express","gemini","gemini-cli","git-worktree","harness","harness-engineering","llm-wiki","multi-agent","sqlite","task-orchestration","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/clitrigger","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HyperAITeam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-24T13:03:53.000Z","updated_at":"2026-05-22T15:37:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/HyperAITeam/CLITrigger","commit_stats":null,"previous_names":["osgoodyz/clitrigger","hyperaiteam/clitrigger"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/HyperAITeam/CLITrigger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HyperAITeam%2FCLITrigger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HyperAITeam%2FCLITrigger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HyperAITeam%2FCLITrigger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HyperAITeam%2FCLITrigger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HyperAITeam","download_url":"https://codeload.github.com/HyperAITeam/CLITrigger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HyperAITeam%2FCLITrigger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33512327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-automation","ai-coding","claude","claude-code","codex","codex-cli","developer-tools","express","gemini","gemini-cli","git-worktree","harness","harness-engineering","llm-wiki","multi-agent","sqlite","task-orchestration","typescript"],"created_at":"2026-05-09T19:00:48.057Z","updated_at":"2026-05-26T09:01:25.986Z","avatar_url":"https://github.com/HyperAITeam.png","language":"TypeScript","funding_links":[],"categories":["Harnesses \u0026 orchestration"],"sub_categories":["Session managers \u0026 parallel runners"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/src/client/public/logo.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/src/client/public/logo.svg\"\u003e\n  \u003cimg alt=\"CLITrigger\" src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/src/client/public/logo.svg\" width=\"360\"\u003e\n\u003c/picture\u003e\n\n**AI-Powered Parallel Worktree Automation**\n\n*Write tasks. Let AI execute them in parallel. Review and merge.*\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/OSgoodYZ/CLITrigger/blob/main/README.md\"\u003eEnglish\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/OSgoodYZ/CLITrigger/blob/main/README_KR.md\"\u003e한국어\u003c/a\u003e\n\u003c/p\u003e\n\n\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/v/clitrigger.svg)](https://www.npmjs.com/package/clitrigger)\n[![npm downloads](https://img.shields.io/npm/dm/clitrigger.svg)](https://www.npmjs.com/package/clitrigger)\n[![npm total downloads](https://img.shields.io/npm/dt/clitrigger.svg)](https://www.npmjs.com/package/clitrigger)\n[![Node.js](https://img.shields.io/badge/Node.js-20%2B-green.svg)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org)\n[![React](https://img.shields.io/badge/React-18-61dafb.svg)](https://react.dev)\n[![GitHub stars](https://img.shields.io/github/stars/HyperAITeam/CLITrigger.svg?style=social)](https://github.com/HyperAITeam/CLITrigger/stargazers)\n\n\u003c/div\u003e\n\n---\n\n\u003e ### While you sleep, your AI is working.\n\u003e\n\u003e In the age of AI-generated code, the developer's role is shifting toward supervision and review. But **vibe coding without understanding** eventually hits a wall.\n\u003e\n\u003e CLITrigger takes the tasks you queued before bed and runs them overnight — multiple AI coding agents (**Claude Code · Codex · Gemini CLI**) working in parallel, each in its own isolated git worktree. Next morning, you just review the stack of diffs and **accept / reject**.\n\u003e\n\u003e **Parallel AI execution — without losing context.**\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-tasks.png\" alt=\"Tasks — Parallel worktree execution\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eAI CLIs working simultaneously across isolated git worktrees\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Why CLITrigger?\n\nBoris Cherny, creator of Claude Code, emphasizes **parallelism** as the key to AI-assisted development. Waiting for one task to finish before starting the next is the new bottleneck.\n\nAt the same time, most AI services have **rate limits** — you can burn through your daily quota by noon and be stuck waiting until midnight.\n\nCLITrigger solves both problems:\n\n- **Right now** — Multiple tasks run in isolated git worktrees, with Claude / Gemini / Codex executing in parallel\n- **Without hitting limits** — Schedule tasks for off-peak hours to make the most of your token quota\n- **Better output** — Multiple AI agents debate and review before implementation, producing higher-quality results than a single AI working alone\n\n---\n\n## How It Works\n\n```\n[Write TODOs in the browser]\n         ↓\n┌──────────────────────────────────────────────────────────────┐\n│  TODO 1: Implement login      → worktree/feature-login     → Claude CLI → auto-commit  │\n│  TODO 2: Signup page          → worktree/feature-signup    → Gemini CLI → auto-commit  │\n│  TODO 3: Dashboard layout     → worktree/feature-dashboard → Claude CLI → auto-commit  │\n└──────────────────────────────────────────────────────────────┘\n         ↓\n[Live log streaming → Review diffs → Merge to main]\n```\n\nEach TODO runs in its **own isolated git worktree** — no conflicts, separate branches, independent commit history. You review the results and decide what to merge.\n\n---\n\n## The Workflow — Hand Off, Then Review\n\n**CLITrigger is built for \"delegate and review\" — not for staring at a progress bar.**\n\n### Scenario 1: The AI night shift — hand off at bedtime, pick up in the morning\nBefore bed, dump unfinished work and sudden ideas into the Planner, convert them into TODOs or scheduled runs, then close the laptop. While you sleep, Claude / Gemini / Codex burn through your token quota in parallel worktrees. Next morning, sit down with coffee and review the diffs holistically — accept what makes sense, reject what doesn't, merge what's ready.\n\n**Your tokens never sleep. Neither does your codebase.**\n\n### Scenario 2: The background worker\nStay focused on your main work while CLITrigger handles side quests in the background. Refactors, test coverage, doc updates, speculative features — the stuff you never have time for — gets done while you ship the critical path. Browser notifications (or phone alerts via Cloudflare Tunnel) surface completed tasks only when they need your attention.\n\n### The Core Loop\n\n```\n    Evening                 Overnight / Sidelined              Morning / Break\n  ───────────              ───────────────────────          ────────────────────\n   Capture         →         AI executes in parallel   →    Review holistically\n   • Planner                 • Worktree isolation           • Diff by diff\n   • TODOs                   • Rate-limit auto-recovery     • Log by log\n   • Schedules               • Multi-agent discussion       • Accept / Reject / Merge\n```\n\nEvery feature — Planner, Scheduler, worktree isolation, rate-limit auto-recovery, multi-agent discussion, the built-in Git client — exists to support this loop: **capture → delegate → review**.\n\n---\n\n## Features\n\n### Wiki (Karpathy LLM-Wiki Pattern)\nA per-project knowledge graph (nodes + typed edges) that you curate once and selectively inject into TODO and discussion prompts. Stop pasting the same domain context every run. Toggle between List and Graph views (`@xyflow/react` + dagre auto-layout, drag-to-connect edges, cycle guards on `precedes`/`refines`), pick `None` / `All` / `Selected` / **`Auto`** per task — `Auto` runs a one-shot LLM retrieval right before each call to pick only the relevant entries, saving tokens. Preview the exact `\u003clong_term_memory\u003e` block (with char/token estimates) before sending; **export DB → `.clitrigger/wiki/\u003centity\u003e/\u003cslug\u003e.md` Markdown** + Disk diff to keep the wiki alive in git or Obsidian. Lint surfaces duplicates / orphans / stale entries with inline fix actions (merge / delete / link); the Activity sub-tab logs ingest / lint / retrieve / merge events with severity. CLI-agnostic — Claude, Gemini, and Codex all see identical context with no adapter changes.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-wiki.png\" alt=\"Wiki — Per-project knowledge graph\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eGraph view of the per-project wiki — entries clustered by tag (Concept · Decision · Feature · Pattern), typed edges visualize how ideas relate, and selective injection feeds only what's relevant into each prompt\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Planner\nA lightweight task planner separate from TODOs — capture ideas, attach images, tag with colors, sort by any column. Convert any planner item into a TODO or a schedule in one click. Markdown export/import (status sections + GFM checkboxes + HTML-comment metadata) lets you move plans across machines or share via GitHub / Obsidian / any plain Markdown viewer. Drop a `.md` file onto the planner card to import.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-planer.png\" alt=\"Planner — Lightweight task management\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eInline editing, color-coded tags, image attachments, and one-click conversion to TODOs or schedules\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Parallel Worktree Execution (Tasks)\nEach TODO automatically gets its own git worktree. Claude / Gemini / Codex CLIs execute simultaneously in parallel. Dependency chains let you automatically trigger follow-up tasks and branch merges once prerequisites complete. Per-project worktree toggle plus per-TODO tri-state override (inherit / force-worktree / force-main) give you fine-grained control — main-branch tasks are automatically serialized to avoid conflicts. Drag-and-drop reordering and an iOS-style stack mode keep long task lists manageable.\n\n### Interactive Sessions\nLong-lived interactive CLI sessions as first-class entities — bring up a Claude / Gemini / Codex session in a floating draggable window. **VS Code-style window grouping and docking**: drag a tab onto another window for a 5-zone diamond (top/bottom/left/right/center) to either split into resizable panes or merge as tabs, plus **Aero-style edge snapping, sticky window-to-window snapping, and a minimize-to-dock-tray** flow — keeps multi-session screens tidy. **xterm.js rendering** shows ANSI colors, cursor control, and TUI box-drawing identically to a native terminal. PTY spawns at the exact viewport dimensions, with **per-session font size** (A−/A+ buttons or Ctrl/Cmd ±) for readability. Per-session wiki injection plus a **Send/Skip pre-flight banner** lets you review the auto-generated initial prompt before it hits the model. Inline edit button updates non-running sessions in place. iOS Safari mobile Hangul IME is composed via a client-side dubeolsik composer. Window geometry, group tree, and tab arrangement persist and survive tab navigation; works on desktop and mobile (fullscreen on small screens).\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-sessions.png\" alt=\"Sessions — Multi-CLI floating windows with VS Code-style docking\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eClaude, Gemini, and Codex sessions docked side-by-side via VS Code-style window grouping — each running in its own worktree branch\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Multi-Agent Discussion\nAI agents with different roles — architect, developer, reviewer — debate in rounds before implementation. The resulting design is far more robust than a single AI working in isolation. Agents flagged as **Implementers** (`can_implement`) can commit code during their regular turns, while a final implementation round stitches everything together. Auto-implement triggers the code-writing round automatically on consensus. Or hit **Send to Planner** on a finished discussion to have the transcript distilled into curated planner items via a one-shot LLM extraction — review and edit before persisting.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-discussions.png\" alt=\"Discussions — Multi-agent debate\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eMultiple AI agents with different roles debating in the Discussion view\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Scheduled Execution\nSchedule tasks for off-peak hours to avoid rate limits. Supports recurring cron schedules, one-time scheduled runs, and auto-recovery scheduling on rate-limit events — if the CLI hits a token quota, CLITrigger schedules a retry for the exact reset time.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-schedules.png\" alt=\"Schedules — Scheduled execution\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eCron-based recurring and one-time scheduled task execution\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Built-in Git Client\nA full Git client lives inside the web UI with a Fork/SourceTree-style layout — a workspace menu switches between **File Status** (staged/unstaged file lists, working-tree diff viewer, commit message + push toggle, Cmd/Ctrl+Enter to commit) and **History** (commit graph, action toolbar, worktree list, VS Code-style branch context menu with checkout / merge / rebase / fetch / pull / push / rename / delete, and a commit detail panel with file-level diff viewer). Every split is user-resizable and persisted to localStorage. Non-ASCII filenames (Korean, CJK, emoji) render correctly in diff and status output.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-git.png\" alt=\"Git — Built-in client\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eCommit graph, branch actions, file diffs — all in the browser\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Analytics\nPer-project cost and execution stats powered by Recharts — stacked bar chart by CLI tool, donut chart for status distribution, line chart for cost/token trends. Denormalized cost fields in the DB keep aggregation fast even on long histories.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-analytics.png\" alt=\"Analytics — Execution stats\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eCost and token usage broken down by CLI, status, and over time\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Morning Review Queue\nA single cross-project triage screen for the \"delegate overnight, review next morning\" loop. Aggregates every recent TODO across all your projects into a card stack with project label, last-assistant summary, token totals, diff stats, and a server-classified risk badge (low / medium / high based on status and diff size). Keyboard-only operation: `j`/`k` to navigate, `Enter` for the embedded log viewer, `Space` / `→` to expand changed files and diffs inline, `m` to merge, `d` to discard, `Esc` to close — N todos become O(N) keypresses. Time-window selector (12h / 24h / 7d), filter chips (All / Risky / Quick wins / Failed), and a sticky token ribbon with CLI breakdown. Inline diffs survive worktree cleanup by falling back through branch ref → `master`/`main`.\n\n### Live Logs (Chat \u0026 Raw)\nWebSocket-based real-time log streaming with two view modes — Chat mode renders assistant messages as markdown with collapsible tool-use rows; Raw mode is a flat terminal view. Multi-round continue reuses the same worktree via the CLI's native `--continue` flag.\n\n### Multi-CLI \u0026 Sandbox Mode\nSelect Claude / Gemini / Codex per project, per TODO, or per discussion agent. Strict sandbox mode restricts CLI file access to the worktree directory using each CLI's native sandboxing (Claude settings.json, Codex `--full-auto`, Gemini prompt-level restriction).\n\n### Remote Access\nAccess and control from anywhere via Cloudflare Tunnel. Browser notifications alert you when tasks or discussions complete, so you can walk away and come back. **Route a named tunnel through your own domain** — set Tunnel Name + Custom Hostname in the sidebar ⚙ → Tunnel settings modal, and the displayed URL becomes `https://app.your-domain.com`, sidestepping the browser \"dangerous site\" warnings that hit `*.trycloudflare.com` / `*.cfargotunnel.com` by inheriting your domain's reputation.\n\n### Favorites Launcher\nRegister frequently-used external tools (executables, shell commands, URLs/folders) in a global Favorites section in the sidebar. Fire-and-forget one-click execution from anywhere in CLITrigger — reduces context-switching to the OS shell for environment setup, IDE launches, or external service access.\n\n---\n\n## Tech Stack\n\n| Layer | Tech |\n|-------|------|\n| Backend | Node.js · Express · TypeScript · SQLite · WebSocket |\n| Frontend | React 18 · Vite · Tailwind CSS · Recharts |\n| AI CLIs | Claude · Gemini · Codex (Adapter Pattern) |\n| Git | simple-git (worktree management) |\n| Scheduling | node-cron |\n| Terminal | node-pty (TTY support) · xterm.js (pixel-perfect rendering) |\n| Remote Access | Cloudflare Tunnel (optional) |\n\n---\n\n## Quick Start\n\n### Option A — Desktop App (recommended for end users)\n\nDownload the installer for your platform from the [latest GitHub release](https://github.com/HyperAITeam/CLITrigger/releases/latest):\n\n- **Windows** — `CLITrigger-Setup-\u003cversion\u003e.exe` (NSIS installer) or the portable `.exe`\n- **macOS** — `CLITrigger-\u003cversion\u003e.dmg` (Apple Silicon \u0026 Intel)\n- **Linux** — `CLITrigger-\u003cversion\u003e.AppImage`\n\nThe desktop app bundles Node.js and the native modules (`better-sqlite3`, `node-pty`, `cloudflared`), so no separate runtime install is needed. On first launch a setup screen appears in the embedded browser — pick a password there and you're in. External sharing (Cloudflare tunnel) stays paused until setup completes, so the first user is guaranteed to be you.\n\n### Option B — npm (recommended for developers)\n\n```bash\n# Install\nnpm i -g clitrigger\nclitrigger\n\n# Upgrade to the latest version\nnpm i -g clitrigger@latest\n# Check current version: clitrigger --version\n```\n\nOn first run the server starts immediately. Open `http://localhost:3000` → set a password on the welcome screen → register a project → write TODOs → click Start. Change the password later via Settings → Account in the web UI.\n\nCLITrigger also prints a one-line `Update available: \u003cnew\u003e -\u003e npm i -g clitrigger@latest` hint at startup whenever a newer version is on npm — no auto-update, you decide when to upgrade.\n\n```bash\n# Change settings\nclitrigger config port 8080    # Change port\nclitrigger config tunnel on    # Enable Cloudflare tunnel for external sharing\n```\n\n\u003e **Prerequisites**: Node.js 20+, Git, at least one AI CLI (Claude / Gemini / Codex)\n\u003e\n\u003e **Supported Platforms**: Windows · macOS · Linux — all core code is cross-platform compatible.\n\u003e On macOS, you may need `xcode-select --install` for native module compilation.\n\n### Run from Source (for development)\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand\u003c/summary\u003e\n\n```bash\n# 1. Clone \u0026 install\ngit clone https://github.com/HyperAITeam/CLITrigger.git\ncd CLITrigger\nnpm install\ncd src/client \u0026\u0026 npm install \u0026\u0026 cd ../..\n\n# 2. Configure environment\ncp .env.example .env\n# AUTH_PASSWORD is optional — leave it blank and the dev server will show the\n# setup screen on first browser load. Set it only if you want to skip setup.\n\n# 3. Run\nnpm run dev\n```\n\nOpen `http://localhost:5173`.\n\n#### Windows One-Click Scripts\n\nDouble-click any bat file in `scripts/` — no terminal needed.\n\n| File | Action |\n|------|--------|\n| `install.bat` | Install dependencies (first time) |\n| `dev.bat` | Start development mode |\n| `build.bat` | Build project |\n| `start.bat` | Start production server |\n| `start-tunnel.bat` | Start with Cloudflare Tunnel |\n| `test.bat` | Run all tests |\n\n#### macOS / Linux\n\n`npm run` commands work identically on all platforms. Use the terminal instead of `.bat` scripts.\n\n```bash\nnpm run dev        # Development mode\nnpm run build      # Build\nnpm run start      # Production server\nnpm test           # Run tests\n```\n\n\u003c/details\u003e\n\n### Remote Access (Cloudflare Tunnel)\n\n```bash\n# Install cloudflared\nwinget install cloudflare.cloudflared    # Windows\nbrew install cloudflared                  # macOS\n\n# Set TUNNEL_ENABLED=true in .env, then:\nnpm run start:tunnel\n# → Outputs https://xxxx.trycloudflare.com in the console\n```\n\n#### Route a named tunnel through your own domain (optional)\n\nTo avoid the \"dangerous site\" browser warnings on `*.trycloudflare.com` / `*.cfargotunnel.com`, point a named tunnel at your own domain. Either use the sidebar ⚙ → Tunnel settings modal (Tunnel Name + Custom Hostname), or the CLI:\n\n```bash\nclitrigger config tunnel hostname app.your-domain.com\ncloudflared tunnel route dns \u003ctunnel-name\u003e app.your-domain.com   # one-time\n```\n\nThe displayed URL becomes `https://app.your-domain.com` and reputation tracks your domain.\n\n---\n\n## Documentation\n\n| Doc | Content |\n|-----|---------|\n| [SETUP.md](docs/SETUP.md) | Detailed installation and usage guide |\n| [changelog/](docs/changelog/README.md) | Version history (per-date entries by month) |\n| [CICD.md](docs/CICD.md) | GitHub Actions CI/CD setup |\n| [TESTING.md](docs/TESTING.md) | Testing guide |\n\n---\n\n## Star \u0026 Join Us\n\nIf CLITrigger saves you time, please [**give us a star**](https://github.com/HyperAITeam/CLITrigger) — it genuinely helps the project reach more developers.\n\nWant to help shape what comes next? We're actively looking for contributors:\n\n- **File an issue** — bug reports, feature requests, and rough ideas all welcome at [Issues](https://github.com/HyperAITeam/CLITrigger/issues)\n- **Open a PR** — start with [`good first issue`](https://github.com/HyperAITeam/CLITrigger/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) labels, or pick anything that itches you\n- **Share what you built** — drop your worktree workflows, custom plugins, or productivity tips in [Discussions](https://github.com/HyperAITeam/CLITrigger/discussions)\n\nEvery star, issue, and PR moves this faster. Thank you 🙏\n\n---\n\n## Contributors\n\nThanks to everyone who has contributed to CLITrigger!\n\n\u003ca href=\"https://github.com/HyperAITeam/CLITrigger/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=HyperAITeam/CLITrigger\" alt=\"Contributors\" /\u003e\n\u003c/a\u003e\n\n---\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#HyperAITeam/CLITrigger\u0026Date\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=HyperAITeam/CLITrigger\u0026type=Date\u0026theme=dark\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=HyperAITeam/CLITrigger\u0026type=Date\" /\u003e\n    \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=HyperAITeam/CLITrigger\u0026type=Date\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n## License\n\n[MIT](LICENSE) — Free to use, modify, and distribute.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHyperAITeam%2FCLITrigger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHyperAITeam%2FCLITrigger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHyperAITeam%2FCLITrigger/lists"}