Reactflow Workflow
veloxbase/veloxdb
Build and harden React Flow diagram surfaces in VeloxDB using @xyflow/react patterns (nodes, edges, viewport, controls, interactions, performance).
Quick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and…
$ npx skills add LanternOps/breeze --skill breeze-helper -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LanternOps/breeze breeze-helper --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/breeze-helper .claude/skills/breeze-helper && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .claude/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helperType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LanternOps/breeze --skill breeze-helper -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LanternOps/breeze breeze-helper --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/breeze-helper .agents/skills/breeze-helper && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .agents/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LanternOps/breeze --skill breeze-helper -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LanternOps/breeze breeze-helper --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/breeze-helper .cursor/skills/breeze-helper && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .cursor/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LanternOps/breeze.git --path .claude/skills/breeze-helper--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LanternOps/breeze --skill breeze-helper -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LanternOps/breeze breeze-helper --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/breeze-helper .gemini/skills/breeze-helper && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .gemini/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LanternOps/breeze breeze-helperInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LanternOps/breeze --skill breeze-helper -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/breeze-helper .github/skills/breeze-helper && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .github/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LanternOps/breeze --skill breeze-helper -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LanternOps/breeze breeze-helper --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/breeze-helper .opencode/skills/breeze-helper && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "breeze-helper" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/breeze-helper into .opencode/skills/breeze-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "breeze-helper", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
breeze-helperQuick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and…
Breeze Helper is an agent skill from LanternOps/breeze. Quick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and tray integration. Use when working on helper code, debugging helper issues, adding helper features, or understanding how the Helper communicates with the API and agent.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design. It works with Tauri, React and Rust. The repository describes itself as: The open-source IT platform that comes with the workers. RMM + PSA in one system, with a governed AI operator built in. The licence is AGPL-3.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5a2d714. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
VITE_AGENT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Breeze Helper loads about 3.2k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 1,026 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LanternOps/breeze at commit 5a2d714, republished under its AGPL-3.0 licence (© LanternOps). 1,026 words, ~3,163 tokens.
.claude/skills/breeze-helper/SKILL.md (or your agent's skills folder).Lightweight Tauri v2 desktop app providing an AI chat assistant, device info, and tool approval interface. Runs in the system tray, spawned by the Go agent on Windows as a SYSTEM process in the user's session.
apps/helper/
src/
App.tsx # Main UI (chat, device info, history, approval popup)
main.tsx # React entry point
stores/chatStore.ts # Zustand state (auth, messages, SSE streaming, approvals)
styles.css # Dark-theme styling
src-tauri/
src/lib.rs # Rust backend (~776 lines): config, HTTP client, tray, streaming
tauri.conf.json # App config (380×600 frameless, tray icon, CSP)
Cargo.toml # Rust deps (tauri v2, reqwest, tokio, serde_yaml)
build.rs # Tauri build script
vite.config.ts # Frontend build
package.json # React + Zustand + react-markdownRegistered in lib.rs via generate_handler![]:
| Command | Returns | Purpose |
|---|---|---|
read_agent_config | AgentConfig | Load agent.yaml + secrets.yaml, init HTTP client |
helper_fetch | HelperFetchResponse | Authenticated HTTP proxy with mTLS + SSRF protection |
hide_window | — | Hide window to tray |
minimize_window | — | Minimize window |
get_os_username | String | OS username (falls back to USERNAME env for SYSTEM context) |
get_helper_config | HelperConfig | Load helper_config.yaml (tray menu toggles) |
update_chat_active | — | Write helper_status.yaml (agent reads for idle detection) |
helper_fetch — Key DesignThe central HTTP proxy command. All frontend API calls go through this.
api_urlAuthorization: Bearer <token>, prevents frontend overridereqwest::Client with Identity::from_pem if cert+key present in secrets.yamlstream: true, spawns tokio task that emits helper-fetch-stream Tauri events as StreamChunkEvent { stream_id, chunk, done, error }HelperFetchResponseAll in the agent config directory (same as agent.yaml):
| File | Writer | Reader | Purpose |
|---|---|---|---|
agent.yaml | Go agent | Helper | server_url, agent_id |
secrets.yaml | Go agent | Helper | auth_token, mtls_cert_pem, mtls_key_pem (0640) |
helper_config.yaml | Go agent | Helper | Tray menu toggles, portal URL, device name/status |
helper_status.yaml | Helper | Go agent | version, chat_active, last_activity, pid |
| Platform | Path |
|---|---|
| macOS | /Library/Application Support/Breeze/ |
| Windows | %ProgramData%\Breeze\ |
| Linux | /etc/breeze/ |
show_tray_icon: true # Draw the tray icon at all (#3202). Independent of
# the three menu-item flags below: with this false
# the helper still serves chat, remote-access
# consent and PAM dialogs, it just has no tray.
# Missing key => TRUE everywhere in the chain.
show_open_portal: true # Show "Open Breeze Portal" in tray menu
show_device_info: true # Show "Device Info" in tray menu
show_request_support: true # Show "Request Support" in tray menu
portal_url: "" # URL for portal (falls back to api_url)
device_name: "" # Display name
device_status: "" # Current status
last_checkin: "" # Last check-in timestampConfig reloads every 60s; tray menu rebuilds on change.
GET /devices/by-agent/:agentId)State: connectionState, agentConfig, sessionId, messages, isStreaming, pendingApproval, sessions, username
Key methods:
initialize() — loads agent config via Tauri invoke (or VITE_* env vars for dev)sendMessage(content) — creates session if needed, POSTs via SSE streamloadSessions() / loadSession(id) — session historyapproveExecution(executionId, approved) — tool approvalclearMessages() — closes session, resets stateTwo helper functions abstract Tauri invoke vs native fetch:
helperRequest(config, url, options) — non-streaming requestshelperStreamRequest(config, url, options, onChunk, onDone) — SSE streamingIn Tauri: calls helper_fetch (Rust mTLS client). In browser dev: uses native fetch() with VITE_API_URL / VITE_AGENT_TOKEN / VITE_AGENT_ID.
Stream listener race fix: Event listener registered BEFORE helper_fetch invoke to avoid missing chunks when proxy buffers the full response.
processSSELines() handles: message_start, content_delta, tool_use_start, tool_result, message_end, approval_required, error, done. Plan events (plan_approval_required, etc.) are received but not yet rendered.
apps/api/src/routes/helper/index.ts — mounted at /api/v1/helper/*
Auth: Agent bearer token (brz_ prefix) via helperAuth middleware (SHA-256 hash lookup against devices.agentTokenHash). Creates synthetic AuthContext scoped to device's org.
| Method | Path | Purpose |
|---|---|---|
| POST | /chat/sessions | Create session (optional helperUser, permissionLevel) |
| POST | /chat/sessions/:id/messages | Send message + SSE response stream |
| GET | /chat/sessions | List device sessions (filterable by ?helperUser=) |
| GET | /chat/sessions/:id/messages | Load message history |
| DELETE | /chat/sessions/:id | Close session |
| POST | /chat/sessions/:id/approve/:executionId | Approve/reject tool execution |
| GET | /config | Return helper config (permission level, screen capture) |
| POST | /screenshots | Upload screenshot (base64, 24h retention) |
| Level | Description |
|---|---|
basic | Read-only tools |
standard | Default — read + some write tools |
extended | All tools including destructive operations |
Configured via helperToolFilter.ts → getHelperAllowedMcpToolNames(level).
approval_required SSE eventToolApprovalPopup renders with description, device badge, parametersPOST /chat/sessions/:id/approve/:executionIddeviceId, orgId, siteId, sessionIdThe Go agent spawns Helper in user sessions. Key IPC types from agent/internal/ipc/message.go:
| Type | Direction | Purpose |
|---|---|---|
auth_request/response | Helper → Agent | Authentication on connect |
capabilities | Helper → Agent | Report features (notify, tray, capture, clipboard) |
desktop_start/stop | Agent → Helper | WebRTC session lifecycle |
desktop_input | Agent → Helper | Keyboard/mouse relay |
clipboard_get/set/data | Bidirectional | Clipboard sync |
sas_request/response | Helper → Agent | Ctrl+Alt+Del (Windows) |
launch_process | Agent → Helper | Execute as logged-in user |
Helper roles: system (SYSTEM token, desktop capture) or user (logged-in user, script execution).
CreateProcessAsUser with SYSTEM token + session ID overridelib.rs setup: checks LOCALAPPDATA for "systemprofile"%ProgramData%\Breeze\helper-webview\ to avoid access issuesget_os_username() falls back to USERNAME env var when whoami returns "SYSTEM"Built dynamically from HelperConfig flags:
| Menu Item | Action |
|---|---|
| Request Support | Show chat window |
| Open Breeze Portal | Open portal URL in browser |
| Device Info | Emit show-device-info event, show device info view |
| Exit | app.exit(0) |
Left-click on tray icon → show chat window. Right-click → context menu.
helper_fetch validates URL starts with configured API URLdeviceId filtersanitizeUserMessage() applied to all chat input# Dev mode (Vite hot-reload + Tauri)
cd apps/helper && pnpm tauri dev
# Build distributable
cd apps/helper && pnpm tauri build
# Frontend-only dev (without Tauri, needs VITE_* env vars)
cd apps/helper && pnpm devDev env vars (for browser-only development without Tauri):
VITE_API_URL=http://localhost:3001
VITE_AGENT_TOKEN=brz_<token>
VITE_AGENT_ID=<device-uuid>| Platform | Format |
|---|---|
| macOS | DMG (/Applications/Breeze Helper.app) |
| Windows | MSI via WiX (C:\Program Files\Breeze Helper\breeze-helper.exe) |
| Linux | AppImage (/usr/local/bin/breeze-helper) |
Rust: tauri v2, reqwest (mTLS), tokio, serde/serde_yaml, chrono, whoami TypeScript: React 18.3, Zustand 4.5, react-markdown 10, @tauri-apps/api 2.0
1. User types in chat input (App.tsx)
2. chatStore.sendMessage(content)
→ Creates session via POST /helper/chat/sessions (if needed)
→ Adds optimistic user message
→ helperStreamRequest() to POST /helper/chat/sessions/:id/messages
3. In Tauri: helper_fetch (Rust) → mTLS HTTP request → SSE response
→ Rust spawns tokio task → emits helper-fetch-stream events
→ Frontend listener → processSSELines() → Zustand state updates
4. API: helperAuth → runHelperPreFlight → streamingSessionManager
→ Claude API call with org-scoped tools
→ SSE events: message_start → content_delta → tool_use_start → tool_result → done
5. Tool approval (if Tier 3): approval_required event → ToolApprovalPopup
→ User Allow/Deny → POST /approve/:executionId → tool executes or rejectsHelper logs to helper.log in the config directory (alongside agent.yaml). In SYSTEM service context, stderr isn't connected to anything visible, so log_helper_error() appends timestamped lines to this file.
%ProgramData%\Breeze\helper-webview\ or WebView2 init failshelper_fetch — reverse proxies (Caddy) can buffer entire SSE response and deliver at onceLeft + Up — matching all click variants steals focus from context menu on WindowsstreamingSessionManager.tryTransitionToProcessing prevents parallel processing; frontend removes optimistic message on 409plan_approval_required, plan_step_start, etc. received but not rendered yet© LanternOps, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/breeze-helper of LanternOps/breeze.
Open the folder on GitHubat commit 5a2d714
Breeze Helper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Breeze Helper this skillLanternOps/breeze | 131 | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| Reactflow Workflowveloxbase/veloxdb | 646 | — | ~897 | Automated safety check: Pass | MIT | |
| I18nhuoshen80/ReinaManager | 693 | — | ~177 | Automated safety check: Pass | AGPL-3.0 | |
| Frontend Testhuoshen80/ReinaManager | 693 | — | ~180 | Automated safety check: Pass | AGPL-3.0 | |
| Store Managementbkywksj/knowledge-base | 330 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Electronmajiayu000/claude-skill-registry | 666 | 1 repos | ~2.9k | Automated safety check: Pass | MIT |
veloxbase/veloxdb
Build and harden React Flow diagram surfaces in VeloxDB using @xyflow/react patterns (nodes, edges, viewport, controls, interactions, performance).
huoshen80/ReinaManager
使用 i18next-cli 检查、同步和整理本项目的国际化资源。涉及新增、修改、删除翻译键或国际化字符串,以及修复缺失翻译时使用。
huoshen80/ReinaManager
在 ReinaManager 项目内进行隔离前端验证,复用测试目录并回收测试资源。需要模拟批量数据、延迟、失败或交互回归时使用。
bkywksj/knowledge-base
Tauri 状态管理技能,覆盖 React 前端状态和 Rust 后端状态管理. An agent skill from bkywksj/knowledge-base.
majiayu000/claude-skill-registry
A skill your agent uses when building, hardening, or shipping a cross-platform Electron desktop app — main/renderer/preload process model, typed contextBridge IPC, locking down…
delexw/claude-code-trace
Cuts a new versioned release of claude-code-trace end-to-end without asking any questions.
LanternOps/breeze
Quick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows.
LanternOps/breeze
A skill your agent uses when debugging agent issues, investigating agent errors, checking agent connectivity, or reviewing agent diagnostic logs.
LanternOps/breeze
Quick reference for the Breeze RMM AI Agent system architecture, MCP tools, streaming chat, cost tracking, guardrails, and MCP server.
LanternOps/breeze
A skill your agent uses when running a broad manual/AI-driven end-to-end verification of Breeze RMM across many merged PRs or commits — "test everything since the last release", release-readiness…
LanternOps/breeze
A skill your agent uses when orchestrating Breeze implementation work from this seat — dispatching waves or issue fixes to background sessions, deciding whether an open PR gets merged, handling a…
LanternOps/breeze
A skill your agent uses when reviewing, triaging, or managing the incoming GitHub backlog on the Breeze repo — PRs, Discussions, AND Issues.
Categories
Quick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and…. Breeze Helper is an agent skill from LanternOps/breeze. Quick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and tray integration.
Breeze Helper fits situations like: working on helper code; debugging helper issues; adding helper features; understanding how the Helper communicates with the API and agent.
Run `npx skills add LanternOps/breeze --skill breeze-helper -a claude-code`. Or copy the skill folder (.claude/skills/breeze-helper in LanternOps/breeze) into .claude/skills/breeze-helper in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LanternOps/breeze --skill breeze-helper -a codex`. Or copy the skill folder (.claude/skills/breeze-helper in LanternOps/breeze) into .agents/skills/breeze-helper in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LanternOps/breeze --skill breeze-helper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/breeze-helper, .gemini/skills/breeze-helper, .github/skills/breeze-helper and .opencode/skills/breeze-helper in your project.
Going by SKILL.md and its folder, Breeze Helper needs the command-line tools its instructions call (pnpm) and credentials named VITE_AGENT_TOKEN. Our summary lists: A credential in VITE_AGENT_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Breeze Helper is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Breeze Helper: Reactflow Workflow (veloxbase/veloxdb, 646 stars), I18n (huoshen80/ReinaManager, 693 stars), Frontend Test (huoshen80/ReinaManager, 693 stars) and Store Management (bkywksj/knowledge-base, 330 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LanternOps (a GitHub organization) maintains it in LanternOps/breeze, which has 131 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.
Source: LanternOps/breeze on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.