@@ -126,7 +126,8 @@ For an universal installer:
126126
127127- `rustup target add x86_64-apple-darwin` once
128128- Then `cd apps/desktop && pnpm tauri build --target universal-apple-darwin` each time.
129- - Then the binary is at `apps/desktop/src-tauri/target/universal-apple-darwin/release/bundle/dmg/Cmdr_0.1.0_universal.dmg`
129+ - Then the binary is at
130+ `apps/desktop/src-tauri/target/universal-apple-darwin/release/bundle/dmg/Cmdr_0.1.0_universal.dmg`
130131
131132## Agent integration (MCP)
132133
@@ -149,12 +150,15 @@ This snippet will likely come handy:
149150
150151```json
151152{
152- "mcpServers": {
153- "tauri": {
154- "command": "npx",
155- "args": ["-y", "@hypothesi/tauri-mcp-server"]
156- }
153+ "mcpServers": {
154+ "tauri": {
155+ "command": "npx",
156+ "args": [
157+ "-y",
158+ "@hypothesi/tauri-mcp-server"
159+ ]
157160 }
161+ }
158162}
159163```
160164
@@ -233,6 +237,27 @@ To run the license server locally (for testing license activation, generating te
233237file with Paddle and Resend secrets. See the [license server README](apps/license-server/README.md#local-development)
234238for the full setup. Ask a maintainer for the current values if you don' t have dashboard access.
235239
240+ # # Self-hosted GitHub Actions macOS runner (maintainers)
241+
242+ The release workflow runs on a self-hosted macOS runner and can save a bunch of GitHub Actions credits.
243+
244+ To set one up:
245+
246+ 1. Go to [repo](https://github.com/vdavid/cmdr) → ** Settings** → ** Actions** → ** Runners** → ** New self-hosted runner**
247+ 2. Select ** macOS** and ** ARM64**
248+ 3. Follow GitHub' s instructions to download, configure, and register the runner, and run it to test it works.
249+ 4. Quit it, then install it as a launchd service so it starts on boot:
250+ ```bash
251+ ./svc.sh install
252+ ./svc.sh start
253+ ```
254+ 5. Make sure the runner has all build dependencies: Rust (`rustup`), Node, pnpm, Go (all via `mise install`), and Xcode
255+ CLI tools. You need these to build the app anyway.
256+ 6. Prevent sleep in **System Settings → Energy** so the runner stays available during releases.
257+
258+ The runner auto-receives the labels `self-hosted`, `macOS`, `ARM64`, which the release workflow matches on. Apple
259+ Silicon can cross-compile x86_64 and universal builds, so a single ARM64 runner handles all three architectures. Yay!
260+
236261## Infrastructure access (maintainers)
237262
238263If you have SSH access to the production server (`ssh hetzner`) and credentials for services like Umami, Cloudflare,
0 commit comments