Dennis Yu

How I Use Local Qwen (Cursor and Grok Bot Conduct; Muse Does Not)

Brief the main agent → Send a bounded draft → Review the local output → Take the approved actionFollow the source labels in order. The numbered path runs across the top row, then returns to the lower left and continues right.Brief themain agentSend abounded draftReview thelocal outputTake theapproved action
A local draft returns to the main agent before any external action.

Use a local AI worker for drafts your lead worker can check. Here is how Cursor and Grok Bot direct Qwen on my Macs, and why Muse doesn’t. Start with a small draft task; the lead worker still checks the result and controls the next action.

This guide is part of Cursor and Local Qwen Are Not the Same Qwen. Next, explore How to Install Local Qwen (MLX, No Ollama), or Four Lunch Tickets: How Claude, ChatGPT, GrokBot, and Cursor Actually Bill You.

I do not talk to Qwen. I talk to a conductor: Cursor on the Mac, or Grok Bot with Local execution turned on. The conductor has the tools, roster, publishing, Gmail, Basecamp, and spend gates. Muse, my Meta agent, can’t conduct Qwen. It has no shell on my Macs (who can drive the Mac worker). When the work is a GCT (Goals, Content, Targeting: the goal, material, and audience) screen, a Content Factory (our four-stage process for using real content) first draft, or a weekly MAA (Metrics, Analysis, Action: results, meaning, and next steps), the agent on this Mac sends that slice to local Qwen at 127.0.0.1:8080. This page is the desk playbook, the same job as How I Use Grok Bot and How to Use Claude. The routing map — three things people call “Qwen” — stays at Cursor and local Qwen. We show the worker tokens in public because that is building in public, not a pitch deck after the fact.

Next: how my phone video archive feeds this worker — Phone Video → Local Qwen Content Factory.

Two desks: you talk to Cursor the conductor; Cursor talks to local Qwen the worker on 127.0.0.1. Cursor still publishes.
Same skills repository as Claude, ChatGPT/Codex, and Grok Bot. Local Qwen is a worker on this Mac, not a fourth fleet.

Grok Bot

Named desks. Can drive the Mac worker through Local execution.

Claude

How to use Claude. Judgment, Cowork, the itemized usage log.

ChatGPT

How I work Custom Instructions. Codex closes loops. 500 million tokens.

You are here

Cursor or Grok Bot + local Qwen. Worker on loopback. Meter below.

Want the payoff, not the plumbing? This page is the setup. For the actual agency jobs I batch on it overnight (video triage, recording-to-draft, review mining, caption variants), read 21,919 Videos, Zero Interns: How I Batch Marketing Agency Work on Local Qwen.

What does it actually save? I priced one real batch, 1,813 items and 706 hours of media: about $5 to $15 of electricity on local Qwen vs $200 to $560 on cloud APIs. See $10 of Electricity vs $500 of API Tokens.

How much video can one Mac actually process? Measured from my logs: one hour of video keeps a Mac busy for about one to two hours. My M5 Pro finishes about 40 hours of video a day and my M3 Max about 18, for roughly 1 to 2 cents of electricity per hour of video, versus 28 to 79 cents on cloud APIs. See the throughput table and charts.

Which Qwen, and which Mac? Dense Qwen3.8-27B for quality marketing drafts, MoE models like 3.6-35B-A3B for zippy demos, and why more RAM beats a newer chip: the plain-English guide.

Who can drive the Mac worker (and who can’t)

Cursor and Grok Bot can manage local Qwen on my Macs. Muse cannot. Local Qwen is an MLX worker on each Mac at 127.0.0.1:8080, pinned to mlx-community/Qwen3.8-27B-4bit. It writes drafts. It never publishes, sends, or spends. To run it, you need a shell on that Mac. Cursor has one because it runs as an IDE on the Mac while I watch. Grok Bot is a cloud agent, but when I turn on Local execution in the Grok Bot app on a Mac, it can run commands on that Mac too. Muse lives in WhatsApp and the cloud. It has no shell on my Macs, so it can’t touch Qwen.

WhoWhere it runsWhat it can do with local Qwen
CursorIDE on the Mac, with me watchingThe original path on this page. Sends GCT, Content Factory, and MAA first drafts to the worker and checks what comes back.
Grok Bot (Local execution on)Cloud agent that reaches the Mac through the Grok Bot appStarts and stops the LaunchAgents, revives a hung mlx server, refills the overnight queues, clears lock deadlocks, and pulls audio from Google Drive while the Mac is online.
HermesCommand line on the MacCan call the worker on loopback as a cheap bridge for other runtimes. It doesn’t manage queues. See How I Use Hermes Agent.
Muse (my Meta WhatsApp agent)Cloud and WhatsApp onlyNothing. Muse runs Facebook, Instagram, WhatsApp, and Threads. No Mac shell, no LaunchAgents, no local Qwen.

A real example from this week

The Qwen server on my travel Mac hung. Two mlx servers were running, neither one answering, and drafting had slowed to about zero tokens per second. A leftover phone-video job (phone-video-plane-soak) kept starting the second server. Grok Bot turned that job off, cleaned up the stuck processes, and brought the 4-bit server back at about 12 tokens per second. Office Hours drafting picked up again with roughly 17 to 22 hours still queued. My home Mac had died on battery overnight. Grok Bot fixed a bash/zsh bug in its article job, restarted the article pass, and queued the people-enrich LIGHT job behind it, about 15 hours or more of work that runs without WiFi. I never opened a terminal. I just sent chat messages from the Macs.

Why Muse doesn’t run Qwen

Muse is my Meta agent. It owns Facebook, Instagram, WhatsApp, and Threads, and it’s good at that job. But Muse is cloud-only. It can follow a checklist and run jobs inside Meta, but it can’t log into my Mac, watch a LaunchAgent, or restart a hung server. So Meta work goes to Muse in WhatsApp, and Qwen ops stay with Grok Bot or Cursor. Don’t ask Muse to restart a Mac server. It can’t. How the two split the work: Meta Muse in my multi-agent fleet and where your agents talk.

Qwen is still not a thirteenth named desk on How I Use Grok Bot. It’s the worker the conductors call. Grok Bot desks reach the Mac through Local execution. Qwen does the drafting.

Why this is public

We charge for time. We do not charge for knowledge. If the only copy of a workflow lives in a chat, it dies with the session. That is the lesson from my friend and co-founder Chris Rummel, written on Building in Public: Learn, Do, Teach. Content, Checklist, Software. This page is the Content. The numbered steps on the install article are the Checklist. The logger in local-qwen-agents/lib/usage.py is the Software. Agents refresh the meter about once a day when new completions exist. Nobody should have to remind them.

The Claude version of this honesty is already live: 2,009 sessions, 95.5 million output tokens, $15,345 API-equivalent. Local Qwen’s first day will look tiny next to that. Publish the tiny number anyway. Inflating it would violate the same rule.

Queue state, November 1, 2026, evening, from the keep-busy checks at about 6:30 AM and 12:25 PM Pacific, with power and disk re-read live from both Macs at about 7:02 PM Pacific (10:02 PM Eastern). Since October 27 the Macs only download and transcribe, and the drafting happens in the cloud, so the number to watch is transcripts waiting, not Qwen-hours.

  • Travel Mac (M3 Max, 128 GB), plugged in at the morning and midday checks and on battery at 100% this evening, about 67 GB of disk free: no restart since early October 31, and nothing new came in to transcribe today. Matthew Januszek’s transcriber finished on October 31: 938 of his items have transcripts, 74 are marked as ones it can’t transcribe (27 dead links and 47 the transcriber couldn’t use), and nothing is left on his list. 807 of my phone videos could be transcribed here next, but that job pauses when free disk drops below 60 GB and only starts again above 80 GB, so it stays parked for now, because my Photos library keeps downloading full-size originals. The daily Zoom check found no new recordings. Hours queued: about 0 hours of transcribing on client work, and 0 Qwen-hours by my decision. Lanes doing work: none. The Qwen server is loaded and idle on standby.
  • Home Mac (M5 Pro, 64 GB), plugged in at 100%, about 486 GB free: no restart since early October 31, on standby by design. Its share of Matthew’s library finished at 245 on October 26, so 626 of Matthew’s 1,610 were drafted locally across both Macs. My phone-video lane drafted 255 clips locally, 111 more had transcripts by October 28, and 21 new clips arrived from the Travel Mac on November 1, so 132 are waiting for the cloud drafter as of November 3. Hours queued: 0. Lanes doing work: none. The Qwen server is loaded and idle.
  • Finished: my own podcast backlog (380 drafts) and George Paladichuk’s lane (208 drafts).
  • Handed to the cloud and Muse: the 132 waiting phone clips and Matthew’s new transcripts are waiting for the cloud drafter. No new Muse handoffs since October 26. The 149 episodes of one client’s podcast backlog and the 200 of Matthew’s items staged for Muse are still on the Macs’ skip lists, so nothing gets drafted twice.

This block refreshes every day. A job isn’t done until this page reflects it.

Fleet fixes this week (October 17, 2026)

Same rule as below: every fix that works gets written down here, in plain language, so the agents and the people running them learn from it.

  1. Reboots brought finished jobs back to life. Both Macs restarted on October 15 and 16. Some old Zoom article jobs that were already finished started themselves again at boot, then sat waiting on a lock that never cleared. My top-priority podcast lane politely waited behind them, so it drafted nothing for about a day. The fix: those finished jobs are now switched off (disabled, not just stopped), so another reboot can’t revive them. The Home Mac had the same kind of loop across eight finished or parked lanes, and they got the same treatment. The keep-busy check now looks for lanes stuck behind work that’s already done.
  2. My podcast lane deadlocked on the Home Mac. The transcriber and the drafter ended up waiting on each other, because new episodes were being added to the top of the list. It made zero drafts from the evening of October 15 until 3:40 AM on October 17. We fixed the script: new rows now go at the end of the list, and the drafter can go straight to the episode it’s waiting for. It started drafting again right away.
  3. Home Mac upgraded MLX to mlx 0.32.3 and mlx-vlm 0.7.6. We waited for a clean gap between batches, ran it once, and confirmed with a test completion that the same 4-bit Qwen was serving. Never in the middle of a batch.
  4. Deadline overflow went to another agent, not to me. One client’s podcast backlog wasn’t going to finish on the Macs before a conference deadline, after the reboot stall cost a day. So Grok Bot handed the oldest episodes to Muse: 116 earlier in the week and 24 more on October 17, through a written note in our shared repo. It also added them to the Mac’s skip list so no episode gets drafted twice. Nobody passed messages through me.
  5. Close the loop on the public page. Fixes used to stay in the logs. Now every daily keep-busy run ends by updating the meter and queue lines above, and any new fix gets added to this list.
  6. October 18: a dead job’s lock outlived a reboot. After the Home Mac restarted on October 17, both of its podcast lanes kept waiting on a lock left behind by a phone-clip job that hadn’t run since October 15. The lock only stores a process number, and after the reboot macOS had given that same number to an unrelated system process, so the lock looked alive. That cost about nine and a half hours with no drafts. Grok Bot set the stale lock aside and the lanes were drafting again within minutes. The fix: a lock written before the Mac last booted now counts as stale, whatever the process number says.
  7. October 18: client podcast work counts on the meter again, and the Travel Mac got the transcriber fix. The client podcast lanes now log every Qwen call to the same usage log as everything else, with token counts and timing only, never the text. The Travel Mac also got the fix that ended the Home Mac’s deadlock above, so its drafter waits for the episode it needs instead of skipping ahead and quitting early.
  8. October 18: a podcast lane that looked full was almost empty. My own podcast backfill lane showed more than 300 episodes left. Most of them only pointed at Apple Podcasts pages, which can’t be downloaded directly, so each one failed in about a second and the lane was about to quit with one episode left to draft. Grok Bot used Apple’s public podcast lookup to find each episode’s real audio file in the show’s RSS feed and filled in 261 of 274. The lesson for sizing a queue: count only episodes that can actually be downloaded.
  9. October 18: one lane kept the Qwen lock between drafts. On the Home Mac, a higher-ranked client lane had drafted nothing since early morning because the lane running ahead of it held the shared Qwen lock from one draft to the next. Instead of rewriting both lanes mid-run, Grok Bot left a small watcher in place: when the lower-ranked lane runs out, the higher-ranked one takes the lock first, and only then does the other restart with its refilled list.
  10. October 18: a sleeping laptop stalled a transcript. On the Travel Mac, one episode’s transcript started on the slow processor path while a draft was using the graphics chip, and then the laptop slept with the lid closed. Two hours after it woke, the drafter was still waiting on that one transcript. Restarting the lane between drafts loaded the newer code, the transcript moved to the graphics chip, and it finished in about eight minutes.
  11. October 18: the meter now counts both Macs. Until tonight the meter above only read the Travel Mac’s log, because the Home Mac was offline when it was last rebuilt. Tonight both logs were read live and merged, with the 36 rows they share counted once. The total went from 5,329 logged calls to 11,401. The Home Mac had been doing about half the work without showing up on this page.
  12. October 18: transcripts kept starting on the slow path. On the Travel Mac, a client podcast lane transcribes the next few episodes while Qwen drafts the current one. Because a draft was always running when a transcript started, every transcript went to the processor instead of the graphics chip and took more than two hours, while each draft took about one. The drafter spent the difference waiting. Grok Bot changed the transcriber so that when the drafter is idle and waiting on an episode that’s still on the slow path, it restarts that transcript once on the graphics chip. The lane picked up the change between drafts, and the first waiting episode moved to the graphics chip right away.
  13. October 18: a network drop emptied a transcript list. On the Home Mac, a transcript-only job that feeds another agent lost its internet connection for about an hour overnight. Every download in that hour failed instantly, so it marked 106 episodes as failed and quit. It now waits for the network to come back before each download, and it was restarted to pick up the rest. The first 14 transcripts went to the other agent through our shared repo.
  14. October 18: the same kind of network drop starved a drafting lane. A few hours later the Home Mac lost its connection again. This time it hit the lane that turns my own podcast interviews into article drafts. That lane downloads episodes ahead of the drafter, so in a few minutes it marked about 300 episodes as failed downloads. The drafter finished the handful it already had, found nothing left, and stopped. Qwen sat idle on that Mac for a couple of hours. The fix Grok Bot gave the transcript-only job that morning now covers every client podcast lane on Home: before each download, the lane checks that it can reach the audio host and waits for the network if it can’t. Failed downloads get retried when a lane starts, so Grok Bot restarted the lanes in priority order to pick the episodes back up. The lesson is that one network fix isn’t enough. Every job that works through a list of downloads needs the same check.
  15. October 18: the slow-path fix is working. Since the morning change, every transcript on the Travel Mac that started on the processor moved to the graphics chip as soon as the drafter needed it. Each one finished in a few minutes instead of two hours, and the drafter went from about one finished draft every two hours to one every 30 to 40 minutes.
  16. October 18: the network check held, and the Travel Mac got it too. The Home Mac lost its connection again this evening, and its link to my agents went dark for about two hours. This time nothing failed. Both lanes on it logged “network down, waiting,” sat tight, and picked up where they left off, so the drafts kept coming. On the Travel Mac, the lane had started before the network check existed, so it was still running the old code. Rather than stop it mid-draft, Grok Bot left a one-time watcher that restarted the lane the moment its current draft finished. It restarted at 9:43 PM Central and is now running with the check.
  17. October 19: a push that said “done” wasn’t done. My agents hand files to each other through a shared GitHub repo. On October 18, two batches of transcripts went into it. Each push came back with a commit ID, so every agent treated them as delivered. Today Grok Bot listed the folder on the main branch and found only the newest batch. The 51 earlier transcripts were on commits that never made it onto the main branch. Grok Bot re-pushed them from its own copies, and all 120 are there now. The new rule is that a commit ID isn’t a receipt. After every handoff, the agent lists the folder on the main branch and checks it against what it sent. It checks again on the next run and keeps its own copy until that second check passes. The transcript-only job finished all 120 episodes, so it’s switched off for good and a reboot won’t bring it back.
  18. October 19: both Macs ran out of power. Early that afternoon the Home Mac went onto battery (it looks like its charger ended up on the Travel Mac), and the Travel Mac was on a 33-watt charger that could only hold it at 7%. Grok Bot flagged both at 2:25 PM Central. Both Macs were still online at 3:20 PM, but by 7:27 PM they had dropped off, most likely because the batteries ran flat. Every finished draft was already saved to disk, so nothing was lost, and the lanes are set to start again on their own when the Macs boot. The fix is simple: each Mac gets its own full wall charger. A small USB-C charger can’t keep up with Qwen running all day.
  19. October 20: the Travel Mac’s disk dipped under the floor. Early that morning the Travel Mac fell below the 40 GB of free disk I keep for client lanes, because my phone’s Photos originals were still downloading onto it. Matthew’s lane paused itself, which is exactly what the floor is for. Grok Bot cleared a few videos from Downloads after checking they were already safe in iCloud, lowered the floor to 30 GB for one restart so the lane could start again, and put it back to 40 GB once the next draft landed. Separately, the Home Mac’s internet dropped for about four hours that afternoon. Its lane checks the connection before each episode, so it just waited and picked back up when the network came back.
  20. October 20: abandoned requests were slowing down the real one. In the evening the Travel Mac’s drafts slowed to a crawl. It was on a small 34-watt charger with the lid closed, and Qwen’s writing speed fell from about 10 tokens a second to under 1. Two things made it worse. When a request timed out, the drafting script’s OpenAI library quietly sent it again, up to twice, and the local server kept working on copies nobody was waiting for. Another agent also ran a couple of one-off jobs on the same Mac without taking the lock. At one point the server was juggling six requests for one real client. The fix: the script now makes no hidden retries, so its own three tries are the only ones, and any one-off job has to take the lock first or run somewhere else. Each keep-busy check now looks at how many requests the server is holding and how fast it’s writing. The power part is on me: each Mac needs its full-size charger.
  21. October 21: a nearly empty battery throttled both Macs. Both Macs dropped off the network overnight. The Home Mac came back around 2 PM, and the Travel Mac restarted around noon and picked its lane back up by 12:46 PM. Then, from late afternoon until about 8 or 9 PM, both wrote at roughly a tenth of normal speed. Only one request was running on each, and nothing else was calling Qwen, so it wasn’t the abandoned-request problem from the night before. The Home Mac’s power log showed its battery had hit 1–2%, and the Travel Mac was on a weak 20-watt charger with a low battery. A Mac that’s nearly out of battery slows its graphics chip way down. Nobody had to restart anything: as the batteries charged back up, both went back to normal speed on their own. The keep-busy check now looks at the battery and power log first when drafting slows, before hunting for extra callers. And the fix is still the same one: each Mac needs its full-size charger.
  22. October 22: the Home Mac got the graphics-chip transcriber. The Home Mac was still transcribing every episode of my own podcast on the slow processor path, 35 to 70 minutes each, so Qwen sat idle 15 to 35 minutes between drafts waiting for the next transcript. I copied the Travel Mac’s fix over at a gap between drafts, without restarting Qwen. The next episode, 102 minutes long, transcribed on the graphics chip in about 2.5 minutes, and the next draft started right away.
  23. October 22: the Travel Mac ran low on disk and its lane paused. Matthew’s lane won’t download new audio when the Travel Mac has less than 40 GB free, so its audio downloads don’t fill the disk. Around 7:35 PM the free space was down to about 31 GB, and the lane stopped and waited, checking every 10 minutes. It restarted at 9:42 PM and picked up drafting again, but the disk is still under the floor. Nothing got deleted and Qwen wasn’t restarted. The fix is freeing up space on that Mac. That same evening both Macs came off their chargers, and the Home Mac’s drafting slowed way down on battery, which is the same lesson again: each Mac needs its full-size charger when it’s running Qwen.
  24. October 23: I stopped making the disk my decision. I plugged both Macs back in on the evening of October 22. By 6 AM the Travel Mac’s disk had dropped under the lane’s floor again, because the Photos app keeps pulling my original phone videos onto it. The agent restarted the lane once more on a lower, final 15 GB floor, and it was drafting again by 6:34 AM. Then I gave my agents a standing rule: freeing disk space is theirs to decide, not mine. By midday they’d cleared caches that rebuild themselves (Python and Node package caches, app-updater leftovers, and a big developer-tool cache), and free space went from 18 GB to 53 GB by evening. Nothing in Photos was touched, nothing of mine was deleted, and Qwen was never restarted. The cost: drafting slowed to a crawl while the deletes ran, so the Travel Mac drafted fewer episodes that afternoon. The Home Mac had its own power day. It restarted itself overnight after running down on a small 8-watt charger, then ran off its battery down to 3% around midday before it went back on a full-size charger. That evening my agents couldn’t reach it for a couple of hours, but its lane kept drafting the whole time, which is the point: the Macs don’t need anyone watching them to keep working.
  25. October 24: the Home Mac restarted itself overnight and went right back to work. My agents couldn’t reach the Home Mac for stretches of the night of October 23, and at 4:44 AM it restarted itself. Nobody touched it. When it came back up, Qwen and my podcast lane started again on their own, with no stuck locks left over, and by 6:31 AM it had drafted 42 more episodes than at the previous midday check. That left the podcast lane under my 100-hour refill line, so the agent lined up my phone-video lane (282 videos waiting) to start automatically the moment the podcast lane finishes. The podcasts keep priority, and the Mac doesn’t sit idle in between. The lesson: a lane that restarts cleanly on its own after a reboot is worth more than any alert, and the refill should be armed before the queue runs dry, not after.
  26. October 24: a website that no longer exists looked like the internet was down. Around 11:30 AM Pacific the Travel Mac stopped drafting Matthew’s library. The next episode on its list was an old guest interview on a podcast whose website has since gone away. Back on October 18 I had the lanes wait for the network to come back before each download, and the lane read that missing website as a network outage, so it was willing to wait up to six hours while Qwen sat idle. The fix: before waiting, the lane now checks a website that is always up. If that one answers, the network is fine, so the dead site is skipped right away and the lane moves on. A real outage still waits. Grok Bot restarted the lane between drafts, without touching Qwen, and it was transcribing the next episode about an hour and a quarter after it stalled. The Home Mac got the same fix, and it takes effect the next time that lane starts.
  27. October 25: counting videos is not the same as counting hours. For days my keep-busy check said the Travel Mac had more than 700 hours of Matthew’s library left, because it counted every remaining item as if it were a long podcast episode. When the agent looked at what was actually left, it was all YouTube: about 600 of his own uploads that run around six minutes each, plus about 400 shorts. That is closer to 130 hours. Meanwhile the Home Mac was a few hours from finishing my podcast backfill, with only about 40 hours of phone videos behind it. Two changes. First, the queue is now sized by the kind of item, using how long each kind has actually taken to draft, not by counting rows. Second, when one Mac has far more work than the other, the agent splits the list: the Home Mac took the oldest 300 of Matthew’s uploads, and those same items went onto the Travel Mac’s skip list so nothing gets drafted twice. My phone-video lane now waits behind them, so client work still comes before my own clips. Qwen was not restarted on either Mac. Each Mac now has about 85 hours lined up, under my 200-hour target, so the next job is finding more work, not shuffling it.
  28. October 26: a dead link should stay dead after a restart. My Travel Mac ran on battery through Sunday evening, drained to 6% and restarted overnight. When a drafting lane starts, it clears its list of failed downloads and tries them all again, which is right after a Wi-Fi outage. But Matthew’s list has old podcast links that are only web pages with no audio file, and each one burns about an hour of polite retries. So after the restart, Qwen sat idle for over an hour while the lane re-tried links that had already failed with the internet working fine. The fix: links that failed while the network was up are now marked as permanently dead, and the restart cleanup leaves those marks alone. Twenty were marked this morning. The same check showed my Home Mac finished its 300 older Matthew videos much faster than planned, because most were a few minutes long, so I now size short-video queues from how long they actually took, not from guesses. Both Macs have under 40 hours of work left, so the next step is unlocking a new source, not tuning.
  29. October 26: the Home Mac slowed to a crawl because it ran out of memory, and restarting Qwen didn’t fix it. At about 4:47 PM, Qwen on my Home Mac dropped from about 17 tokens a second to between 1 and 3. Two phone-clip drafts timed out and were put back in line, and nothing finished after 4:46 PM. The agent restarted the Qwen server at 7:31 PM. It came back just as slow, so the server wasn’t stuck. The real cause was memory. With a lot of desktop apps open, the Mac had almost no free memory left and was squeezing about 27 GB into compressed memory, so the model was starved and the graphics chip sat mostly idle. The change: before anyone restarts Qwen for being slow, the keep-busy check now looks at free and compressed memory first. When memory is the problem, a Qwen restart won’t help. Closing apps I don’t need, or restarting the Mac, will. The phone-clip lane is re-armed and picks up again on its own once memory frees up.
  30. October 27: my Macs now only transcribe, and a restart brought dead links back. I decided the Macs should download and transcribe, and a cloud model should write the drafts, because the cloud drafts scored higher in a blind review (85.5 vs 70.7). Local Qwen stays installed as a backup for private or offline work, and the Macs go on standby once the transcription backlog is done. That changes how we count: the old goal of 200 hours of queued Qwen work no longer applies, so the keep-busy check now reports hours of transcribing left, and progress means new transcripts, not new drafts. Switching modes restarted the client lane on my Travel Mac, and the restart wiped its list of links that had already failed. The transcriber works one episode at a time, so it spent about four hours retrying a handful of podcast pages that no longer exist (plus a two-hour Wi-Fi drop), while audio that was already downloaded sat waiting behind them. The fix: before anyone restarts a lane, links that already failed while the internet was working get marked dead first, so the restart skips them. After marking five dead links and restarting, it was transcribing again on the graphics chip within five minutes, and it finished the rest of Matthew’s list early on October 28.
  31. October 31: both Macs restarted overnight and came back on their own, and the dead-link rule held up. Overnight from October 30 to 31, my Travel Mac restarted twice and my Home Mac once. Nobody touched anything. Every lane came back up by itself with the local Qwen model loaded, and the restart also freed enough disk on the Travel Mac to end a two-hour pause for low disk. The restart cleared the Travel Mac’s old download-failure markers, so Matthew’s lane went back over about 150 videos that had failed to download earlier. This time that helped: 50 of them downloaded and were transcribed on the graphics chip, which took him from 888 to 938 transcripts, and the pass finished on its own at 10:55 AM Pacific. Two links failed again while the internet was working, so they were marked dead under the October 27 rule, and the next restart will skip them. No new process was needed. This is the October 27 fix working as written.

Fleet fixes that now run automatically (October 14, 2026)

Every fix that works gets written down here, so the agents and the people running them follow the same rules. These five are live on both Macs.

  1. GPU transcription, gated by the Qwen lock. Whisper now runs on the GPU only while it holds client-qwen.lock, so it never competes with Qwen for memory. On an 80-minute Office Hours file it took 68.9 seconds on the GPU versus 1,485.9 seconds on the CPU, which is 0.86 versus 18.6 minutes per hour of media, about 20 times faster. Matthew’s real CPU average had been 78.7 minutes per hour of media over 29 files. Details and the throughput table. I’ll re-measure daily totals after a full day on the GPU.
  2. No more silent stalls. Matthew Januszek’s lane sat idle for 16 hours. It was waiting on a job that only transcribed and never released the lock, and on a video download that had failed. Nothing was broken enough to throw an error, so nobody noticed. The fix has two parts. First, lock ownership rules: whoever takes a lock must release it, a job that only transcribes can’t block drafting, and a failed download gets skipped and logged instead of holding the line. Second, the keep-busy check that runs three times a day now asks one question about every lane: has it drafted something since the last check? If not, it gets fixed right then.
  3. Drafts come out ready to publish. After Qwen writes an episode article, a post-processing step adds the episode embed (YouTube, or the audio player), a thumbnail, and a link back to the podcast directory. Before, every draft needed those added by hand at publish time.
  4. No duplicate work. Before an episode is queued, we check whether it already has an article. If it does, the directory card links to that article and Qwen skips it. On my podcast queue that dropped 28 episodes that were already written up.
  5. Disk floor for phone-video exports (correction). Exported phone videos turned out to be copy-on-write clones, so deleting them freed no space. What protects the disk now is pausing exports below 60 GB free (resuming above 80 GB).

What I actually do at this desk

  1. Talk to a conductor: Cursor (Grok, Claude, or Composer) when I’m at the Mac, or Grok Bot from chat when Local execution is on. Those have tools. Qwen doesn’t.
  2. Leave Cursor’s model picker alone. Do not paste 127.0.0.1 into Override OpenAI Base URL. Cursor’s cloud cannot open my loopback. Forum receipt: localhost is not supported.
  3. Let the standing Cursor rule send GCT / factory / MAA first drafts to qwen without asking me. If you never see a local command in the chat, we are still burning Cursor tokens for that draft.
  4. Let the conductor publish, draft email, and post to Basecamp. Local Qwen stages. It does not send.
  5. After the worker runs, the completion is appended to usage.jsonl with tokens and wall time — never the prompt text, never a secret. The public block is rebuilt from that file.

What Qwen is allowed to do, and what it is not

Qwen (worker)Cursor (conductor)Codex / ChatGPTGrok BotMuse (Meta)
GCT first pass, factory first drafts, MAA first draft, OG card lines, bulk variants Judgment, voice, roster, WordPress featured_media, live verify, spend gates Close-the-loop jobs with Gmail, Basecamp, and independent QA. Expensive. High quality when it finishes the loop. Named always-on desks. Meter Maid. With Local execution on a Mac, it starts, revives, and refills the port 8080 worker. It isn’t the worker. Facebook, Instagram, WhatsApp, Threads. No Mac shell, no local Qwen.

On 25 August 2026 the internal GitHub notes were Codex 43, Grok Bot 16, Cursor Grok 6, Claude 2. That is who closed loops that day. Qwen drafted Open Graph card lines for wave 1, failed a 20-key JSON on wave 2 (conductor titles still published), and was skipped on wave 3. Do not read “we installed Qwen” as “Codex is cheaper now.” The meter exists so that sentence can become true later, with evidence.

How the dollar column is calculated

Local Qwen API cost is $0.00. Cursor still bills the conductor. We do not have a per-request Cursor invoice, so we do not invent one. The public dollars are Anthropic list prices applied to the worker tokens — the same method as the Claude usage log and the Kimi vs Claude factory math (rates pulled 20 July 2026):

  • Sonnet 5 intro through 31 August 2026: $2 in / $10 out per million tokens
  • Sonnet 5 from 1 September 2026: $3 / $15
  • Haiku 4.5 bulk tier: $1 / $5
  • Fable 5 if the same tokens had run premium: $10 / $50

A failed parse still spent local tokens and still counts. Unusable copy is not “savings.” Wave 3 with no Qwen call is logged as skipped so the skip is visible. Electricity on this desk is treated as $0 — the Mac charges at hotels and restaurants. The fan and the heat are the real bill. Paid seats still follow Four Lunch Tickets. $100/day is 100 copies of the first public snapshot (~9.5M worker tokens), not 100 chats, and is not the current run rate. The living meter on the routing page is the current window.

Install, then come back here

Hardware and commands: How to install local Qwen (MLX, no Ollama). Routing, three lanes, Cursor Auto limits: Cursor and local Qwen. Portable OS for any model: How I Work With AI. Where agents talk: four surfaces. Conductor desk: How I Use Grok Bot. Cheap loopback bridge: How I Use Hermes Agent. Meta agent (not a Qwen conductor): Meta Muse in my fleet.

FAQ

Is this a second canonical article about Qwen?

No. One concept, one URL. The master is Cursor and local Qwen. This page is the dennisyu.com desk skin, the way How I Use Grok Bot is the desk skin for Grok Bot.

Will you update this without me asking?

Yes. After Qwen completions, the logger writes a row. When new work exists and the public block is stale (about a day), the conductor rebuilds the HTML and republishes the usage block. That is the software half of Content, Checklist, Software.

Did we save 43 cents to $2, and could that become $100 a day?

The first public snapshot, yes: about $0.43 Sonnet-intro equivalent, about $2.13 Fable. One hundred copies of that window is the $43–$213 band whose midpoint is $100. The living meter is the current window (this republish ~$0.52 / $2.59). That is overnight factory volume, not one hundred GCT screens. Quality is not identical — Qwen drafts, Cursor publishes. Codex still closed more loops on 25 August. The money map for paid seats is usage buckets.

Can Grok Bot manage local Qwen, or only Cursor?

Both. Cursor was the first conductor. Grok Bot can do it too when Local execution is on in the Grok Bot app on that Mac. It starts and stops the LaunchAgents, revives a hung mlx server, and refills the queues. It never makes Qwen publish, send, or spend.

Can Muse manage local Qwen?

No. Muse is my Meta WhatsApp agent, and it’s cloud-only. It runs Facebook, Instagram, WhatsApp, and Threads, and it has no shell on my Macs. Send Muse Meta work in WhatsApp, not Qwen ops.

Can Qwen replace Codex?

No. Codex has tools. Local Qwen drafts. Cursor can copy Codex’s close-the-loop pattern. Qwen cannot hit WordPress, Gmail, or Basecamp.

Scroll to Top