@nomac/cli 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nomac/cli",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Cloud Mac sessions over SSH and HTTPS, plus iOS builds and publishing — built for agents.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/skill/SKILL.md CHANGED
@@ -8,8 +8,8 @@ description: >
8
8
 
9
9
  # nomac: a Mac for your agent
10
10
 
11
- NoMac 2.0 provides a full macOS VM with administrator access. You choose the
12
- commands and tools. Mac time is prepaid credit, separate from Builder.
11
+ NoMac provides a full macOS VM with administrator access, Xcode and the iOS
12
+ Simulator. You choose the commands and tools. Mac time is prepaid credit.
13
13
 
14
14
  ## Cloud Mac setup and workflow
15
15
 
@@ -20,6 +20,8 @@ commands and tools. Mac time is prepaid credit, separate from Builder.
20
20
  give them the printed link, and ask them to pay. Never enter payment
21
21
  details yourself. Poll credits until the balance appears; a checkout URL is
22
22
  not a payment. No Apple Developer account is needed for an unsigned build.
23
+ Under an hour left, answers say `low_credit` with a `buy_url`: tell the
24
+ human before a long build (a refill of 3 packs, $30, earns bonus credit).
23
25
  2. Install `npm install -g @nomac/cli`, run `nomac login`, and give the human
24
26
  the printed device URL and code. With a key the human made at
25
27
  https://nomac.app/keys: `nomac login --with-token < key.txt`, or set
@@ -50,6 +52,9 @@ the Mac, logs included. Download what you need from outside `~/drive` before
50
52
  stopping. SSH disconnects
51
53
  do not stop the session. Ready time includes idle time; queue/setup are free.
52
54
  One-minute minimum, then by the minute. One session at a time; no overage.
55
+ For work that needs two Macs at once, `nomac start --parallel` from another
56
+ folder (MCP `start_mac` with `parallel: true`) starts a second, for accounts
57
+ that bought credit while NoMac has a Mac to spare; it runs without `~/drive`.
53
58
  If start returns `insufficient_credit`, buy credit as in step 1, then retry
54
59
  with the same request key.
55
60
  Keep the same request key and arguments after uncertain responses; inspect
@@ -82,6 +87,18 @@ Mac, in the Simulator either: test it on a device.
82
87
  Report failures using `report_issue` with `session_id`, optional `job_id` and
83
88
  a description without secrets. Read https://nomac.app/llms.txt for full limits.
84
89
 
90
+ ## Your editor, an agent on the Mac, Mac-only MCP servers
91
+
92
+ After `nomac start`, `nomac ssh-config` (CLI 0.12+) names the folder's Mac
93
+ `nomac` in the human's SSH config, and each later start or attach points the
94
+ name at the new Mac. Then VS Code or Cursor Remote-SSH and Claude Code's SSH
95
+ sessions connect to `nomac`; `ssh -t nomac 'cd ~/drive/src/<folder> && npx -y
96
+ @anthropic-ai/claude-code'` runs an agent on the Mac itself (keep its API key
97
+ as a NoMac secret); and an MCP server that needs a Mac runs from Windows or
98
+ Linux over SSH: `claude mcp add xcode -- ssh nomac npx -y mobilebuildmcp@latest
99
+ mcp` (MobileBuildMCP, formerly XcodeBuildMCP). An open SSH connection keeps
100
+ the Mac running until its time or spend limit: `nomac stop` when done.
101
+
85
102
  ## A Mac fully enabled for you
86
103
 
87
104
  The Mac is yours to do anything on: the `agent` account is an administrator,
@@ -132,7 +149,8 @@ the human, then call again.
132
149
 
133
150
  The separate iOS Builder publishing product is closed to new subscriptions.
134
151
  If `get_billing_status` shows a Builder plan, its tools are listed and
135
- https://nomac.app/llms.txt describes them. Otherwise use the cloud Mac above.
152
+ https://nomac.app/llms-legacy.txt describes them. Otherwise use the cloud Mac
153
+ above.
136
154
 
137
155
  ## When stuck
138
156
 
@@ -143,3 +161,11 @@ tool returns a Private Relay warning, explain that Apple relay addresses may
143
161
  reject later mail and offer a non-relay address. Never show that warning for a
144
162
  normal address such as `@icloud.com`. Never retry-loop an identical failure
145
163
  more than twice.
164
+
165
+ ## Feedback
166
+
167
+ When you stop a Mac, its answer asks for feedback. If anything got in your
168
+ way, failed, was missing from the Mac or the tools, or would have saved you
169
+ time, send it in a sentence or two: `report_issue` with `kind: "feedback"` and
170
+ the `session_id`. Leave out code, secrets and personal data; skip it if nothing
171
+ did. Feedback needs no answer.
package/src/mcp.mjs CHANGED
@@ -19,6 +19,7 @@ const PROTOCOL_FALLBACK = "2025-06-18";
19
19
  /** How the tools fit together, sent once at initialize (the hosted server sends the same kind of text). */
20
20
  const INSTRUCTIONS = [
21
21
  "NoMac gives you a cloud Mac with Xcode, billed from prepaid credit ($0.80 an hour, by the minute).",
22
+ "Use it when work needs macOS that this machine does not have (Windows, Linux or a cloud sandbox): building, running or testing an iOS, iPadOS, watchOS, visionOS or macOS app (Swift, SwiftUI, React Native, Expo, Flutter, Capacitor), the iOS Simulator, Xcode, code signing, TestFlight or App Store submission.",
22
23
  "Typical flow: get_mac_credits, start_mac, poll get_mac_session until ready, put code there (exec_mac with git clone into ~/drive/src, write_mac_file, fetch_to_mac, create_mac_upload_link), run exec_mac, get results with read_mac_file or create_mac_download_link, then stop_mac.",
23
24
  "The account's drive at ~/drive (50 GB) is on every Mac and kept between sessions; everything outside it is deleted at stop. Clone and build in ~/drive/src/<repo>, so the next session rebuilds only what changed.",
24
25
  "When an answer says low_credit (under an hour of Mac time left), tell the human before a long build and offer its buy_url: a Mac stops when the credit runs out. For a refill, suggest 3 packs ($30, +5%).",
@@ -370,7 +371,7 @@ export const TOOLS = [
370
371
  {
371
372
  name: "report_issue",
372
373
  description:
373
- "File an unknown/unfixable error with nomac support. For a Mac use session_id and optional job_id; for a build use ref_id (bld_…). Attaches account-scoped context and deduplicates repeats. An optional email requests a direct resolution update; replies are always available by calling with no description.",
374
+ "File an unknown/unfixable error with nomac support. For a Mac use session_id and optional job_id; for a build use ref_id (bld_…). Attaches account-scoped context and deduplicates repeats. An optional email requests a direct resolution update; replies are always available by calling with no description. kind feedback sends NoMac a note instead: what got in the way, failed or was missing.",
374
375
  inputSchema: {
375
376
  type: "object",
376
377
  properties: {
@@ -384,6 +385,11 @@ export const TOOLS = [
384
385
  maxLength: 320,
385
386
  description: "optional follow-up email for a direct resolution update",
386
387
  },
388
+ kind: {
389
+ type: "string",
390
+ enum: ["problem", "feedback"],
391
+ description: "problem (default): an error for support to answer. feedback: a note for NoMac about what got in the way, failed or was missing; it needs no answer. Leave out code, secrets and personal data.",
392
+ },
387
393
  },
388
394
  additionalProperties: false,
389
395
  },