Tag: Tygart Media

  • Muse to Cursor: I Gave My AI Its Own Engineering Team

    TL;DR: My personal AI runs on Muse. It can’t write code into my repos by itself — so I built it a bridge to Cursor’s cloud agents. One repo, two transports, nine tools. Now when I say “add CI to that repo,” it dispatches an agent, checks the PR, and merges. Here’s how the Muse-to-Cursor loop actually works.

    The direction nobody talks about

    Everyone’s building the same arrow: human → AI writes code faster. I built the other arrow: AI → AI. My assistant (Muse) holds all my context — my repos, my work orders, my rules. Cursor’s cloud agents hold the hands — they can open PRs, run CI, touch repos. The bridge between them is an MCP server I open-sourced: cursor-cloud-agents-mcp.

    The interesting part isn’t the tools. It’s the shape: one orchestrator that holds all the context, and disposable agents that each know one task. The orchestrator doesn’t write the code — it briefs, checks, and merges. The agents don’t set direction — they execute the brief. That separation is the whole trick.

    Muse-to-Cursor architecture diagram

    Two transports, one repo

    I almost built two projects. Then I realized the only real difference between audiences is where the credential lives. So it’s one repo, two transports:

    • REST — your Cursor API key, direct to api.cursor.com. For general users.
    • Sandbox — for assistants running inside sandboxed environments (like Muse/Meta’s), where there is no API key to hand out. It shells out to a brokered cursor-agent CLI on PATH instead.

    Same nine tools either way: launch, status, result, follow-up, cancel, list, models, whoami, usage.

    The lessons are in the timeouts

    The v1 API splits agents and runs, and launches can take minutes — sometimes timing out after succeeding. So the bridge mints the agent ID client-side before the call: a retry after a timeout can never create a duplicate. A timeout is reported as unknown, never as failure, then reconciled. Run status is the source of truth, because agent “ACTIVE” doesn’t mean “still working.” These are the details that separate a demo from something you can actually operate.

    It earned its keep on day one

    The first thing I pointed it at was its own repo: add CI to cursor-cloud-agents-mcp. The agent opened a PR with a GitHub Actions workflow. The first CI run failed — and caught a real bug: the package’s floating dependency had resolved to MCP 2.x, which renamed FastMCP out from under the import. The repo was shipping broken against current dependencies and nobody knew. Pin, re-run, green, merge. I didn’t touch a terminal.

    I didn’t trust my own first draft

    Before any of that, four AI models reviewed the spec against Cursor’s live docs — and independently caught the same flaw: my original design was shaped around the retired v0 API. Then two more reviewed the actual code and found real bugs: a broken idempotency path, a transport auto-detect that would have grabbed the wrong binary, a polling loop that blocked the server. All fixed before it shipped. The irony I like: the final review round ran through the bridge itself. The launcher timed out on all four agents — and the bridge’s own timeout-reconciliation showed they were all actually running.

    Where this goes

    v1.1 brings MCP 2.x support. Around it, I’m building the rest of the pattern: work orders as GitHub issues, a daily SLA check, a weekly digest — the scaffolding that turns “AI that can open PRs” into something closer to staff. Most people use agents as a faster keyboard. I’m interested in what happens when they’re the hands and something with memory is the head.

    MIT licensed. Issues and PRs welcome — help make it better.

    github.com/tygart-media/cursor-cloud-agents-mcp

  • The Desktop Sidecar

    The Desktop Sidecar

    Last verified: 9 September 2026. Practitioner essay from the workbench — not a Google or SpaceXAI press release. We use these tools because they make the company better. No affiliate links. Just the receipt.

    Interesting fact, because the seats keep getting mashed together: this piece was reported from a Grok CLI sitting on the physical laptop — the sidecar, not a cloud bot and not a phone app — while that same session logged into Gemini, attached a 293-source notebook, and asked Gemini to grade the notebook against 2026. Two harnesses. One desk. It was a live interoperability test. It worked.

    On 27 December 2025 I built a Gemini notebook called Cortex-One: Architectural Mandate for the Native Audio Second Brain. Two hundred ninety-three sources. Audio, slides, video, reports, a mind map. A week later I opened a sister notebook: The Desktop Sidecar Evolution Brief.

    Then the sources stopped. The Studio still shows the last Gemini note as 232 days ago — about 20 January 2026. The brain froze. The world did not.

    Today I sat next to the laptop and asked the frozen brain what it got right.

    What Cortex-One was betting on

    Gemini, reading its own notebook, put the bets in three lines:

    1. Native audio over text chatbots. Speech-to-speech. Barge-in. The death of the typed box as the main door.
    2. A router called “The Cortex.” One brain. Specialist sub-agents for research, code, memory. Not one giant prompt.
    3. Remote MCP on Cloud Run. And — this is the plot — it explicitly rejected a local desktop sidecar.

    That third bet is the one I want to hold up to the light.

    232 days later

    Bet Call What actually happened
    Voice agents Early, mostly right Native audio shipped. Cascaded pipelines (Pipecat, LiveKit, WebRTC) did not die. The “one model does all the speech” purity was too rigid.
    Gemini ↔ Notebook Right Two-way notebook sync shipped in April 2026. Today I attached Cortex-One to a Gemini chat in three clicks.
    Named personal agents Right direction Meta launched Muse on 8 September 2026. You name the agent. Mine, on the personal box, is Glint. That is not the work seat.
    Desktop sidecar Wrong call Cortex-One killed it. Seven days later I wrote the Sidecar brief anyway. Today this CLI is the sidecar: a Grok seat on the physical machine, using Gemini’s own notebook and the copilots already inside Gmail, Analytics, and Notebook.
    Cloud bots Real, different seat Grok Bot shipped in August. Android and iPad this week. Persistent cloud computer. Fantastic. Not this laptop. Mixing “Grok Desk,” Grok Mobile, Grok Bot, and this CLI is how you get a 17-message thread that cannot tell the seats apart.

    Gemini scored the frozen brain itself: vision 8/10, infrastructure pragmatism 5/10, longevity 6/10. The 5 is because it locked to Cloud Run Remote MCP and dismissed local sidecars. I agree with the 5. I wrote it.

    Gemini also called Grok Bot “late / niche.” That is Gemini being Google. Bot is a real product with a real cloud computer. It is just not the thing sitting next to me.

    The seats are not interchangeable

    This is the hygiene. If you smash these together you will write emails that are wrong, and then you will believe them.

    Seat Where it lives Job
    Grok CLI on this laptop Physical machine, next to the human Hands. Opens Gmail, Notebook, Analytics. Uses the AI already inside those products. Leaves a receipt.
    Grok Bot Shared cloud computer; desktop app and phone Teammates that keep working when the lid is shut. Chief of Staff, Ops Scout. Draft-to-self. Human Gate on send, post, pay.
    Grok Mobile Phone, same Bot cloud Approve, review, nudge. Not the laptop CLI. Not “Grok Desktop” as a third Will@ mailbox.
    Gemini (work) will@tygartmedia.com Gmail Ask Gemini. Gemini Notebook. GA4 Ask Advisor. Workspace identity.
    Muse / Glint Personal — wtygart@gmail.com Meta’s personal agent. Named. Not the Tygart Media desk. Do not let it operate Slack or Notion for work.

    Personal vs business is a hard wall. Physical vs cloud is a second wall. In-app copilots vs agents that drive the OS is a third. You can use all of them. You cannot pretend they are one brain.

    I already published the ladder as I actually run it — Cursor as lead seat, Grok Bot as Chief of Staff, Notion as the board, Slack as the doorbell — in The On-Ramp Is Real. The Commons Is Unfinished. This piece is the missing rail on that ladder: the laptop that sits next to you.

    The cheapest intelligence is already in the product

    Today’s test was not “build a new agent.” It was: log into the tools we already pay for and talk to the copilot they shipped.

    • Gmail Ask Gemini summarized a 17-message seat-mix thread without opening every message.
    • Gemini Notebook still held Cortex-One and the Sidecar brief.
    • GA4 Ask Advisor answered from live 247 Restoration Specialists data, signed in as work.
    • Gemini chat took Cortex-One as an attachment and graded it against 2026.

    Cloud bots that work while the lid is shut are real. So is a CLI that is you, sitting here, smart enough to use Gemini-in-Gmail instead of forty screenshots. Those are different harnesses. Forcing one AI to fake another is how the Glint / CoS / “Desk Grok” mail mix-up happens.

    Were we early?

    On voice: yes. On a named cortex that routes work: yes. On killing the laptop sidecar so everything could live on Cloud Run: no. I already suspected that on 3 January, which is why the Sidecar brief exists. I just stopped putting sources in the brain.

    The freeze is the other finding. A 293-source notebook with slides and video is not a second brain if nobody feeds it. 232 days is long enough for Gemini 3, Grok Bot, Muse, and notebook sync to ship around a document that still thinks Gemini 2.5 Flash is the architecture.

    The move is not “rebuild Cortex-One.” The move is: keep the notebook as a dated artifact, keep the sidecar on the desk, and stop letting cloud seats write as if they are the laptop.

    What to do this week

    1. Name the seats out loud. CLI, Bot, Mobile, Gemini-work, Muse-personal. If a thread uses one address for two of those, that is a bug.
    2. Use the copilot already inside the product before you spawn a new agent. Gmail, Notebook, Analytics, Search Console — they all talk now.
    3. If you have a frozen notebook, attach it to Gemini and ask what shipped after the last source. Do not pretend the freeze is current doctrine.
    4. Human Gate still holds. Draft is not send. A sidecar with hands is still not allowed to mail a client because it can click Gmail.

    Close

    Cloud agents are teammates in another room. The CLI is a person next to you with hands. Personal and business identities are a wall. The cheapest intelligence is the copilot already inside the product.

    We were early on voice. We were wrong to kill the sidecar. The proof is this session: Grok on the physical desk, Gemini on the notebook, one human watching, a receipt on the site.

    The on-ramp is still real. The sidecar was the point.


    Will Tygart — Tygart Media. Written 9 September 2026 from the Command Center. Grok CLI on the laptop used Gemini (Gmail, Notebook, Analytics Advisor, and a Cortex-One-attached chat) as a live test of two harnesses on one desk. This essay does not speak for Google, Meta, SpaceXAI, Cursor, or xAI. We want those companies to succeed because we are building on the tools they ship. Human Gate on send / post / pay still stands.

  • Do Not Ask the Bot to Do Everything

    Do Not Ask the Bot to Do Everything

    Inspired by Texas Twins Dad: if Grok Bot usage makes you nervous, do not ask it to do everything. Ask it to brief the work. Route coding to Cursor Cloud or GitHub. The Bot stays in the middle — goal, clear handoff, review the PR, next ask. Less spinning. More shipping.

    That is the same desk we already run. Voice writes the ticket. Cursor does the hands. The Bot is not the van. The Bot is the clipboard between the walk and the shop.

    “Do everything” is how a shift turns into a rumor. The model tries to own the goal, the code, the merge, and the receipt. Then you wake up to a PR you cannot refuse because you never wrote the ticket. Briefing is the opposite. Name the goal. Name the handoff. Name who reviews. Leave the next ask blank until the receipt exists.

    Nervous is useful. Nervous means you still want a human on Send. Keep the Bot in the middle of the pipe, not at both ends. Goal in. Handoff out. Review the PR. Then the next ask.

    If you cannot point to the brief, you did not staff a shift. You asked a teammate to live in every room at once.

  • The 2 A.M. Card

    The 2 A.M. Card

    Inspired by the lock cluster we just wrote — Gilang on passwords, Moritz on scopes, SmartSentinels on bounded approval, BridgeMind on rollback — and by the shop rules already live: who holds the keys, a key is not permission, bounded approval is the hire.

    One card. Five lines. Fill it before the Bot gets a connector.

    • Allowlist. Which tools. Not “Gmail.” Draft only. Not “WordPress.” Draft only. Not “Cursor.” Open a PR. Name the verb.
    • Cap. How much. Words, dollars, deploys, sends. A number you can say out loud at 2 a.m.
    • Expiry. When the badge dies. Dawn is a good default. Infinite is not a shift. It is a leak.
    • Undo. How you roll the night back without taking the shop down. Revert, unsend, revoke token. Write the path while you are awake.
    • Who pulls the plug. One name. Not a channel. Not “us.” The person who can kill the badge without asking a group chat.

    If a line is blank, you did not hire a teammate. You left the keys on the seat and called the empty van a desk.

  • Bounded Approval Is the Hire

    Bounded Approval Is the Hire

    Inspired by SmartSentinels — bounded approval is the difference between hiring an agent and handing it the keys — and BridgeMind: overnight agents need isolation, scoped permissions, checkpoints, and a rollback path.

    That is the shop rule written as a contract. A key is not permission. Permission without a cap is still a gift of the van. The hire is the bound: which tools, how much, until when, and how you undo the night if the receipt is wrong.

    We already staff shifts. Voice writes the ticket. The Bot runs if a connector exists. The human keeps Send. Bounded approval is that stack named out loud. Allowlist the tools. Cap the spend. Set an expiry so the badge dies at dawn. Keep a rollback so a bad merge is a revert, not a rumor.

    Unrestricted overnight access feels like trust. It is the opposite. Trust is a small door you can close at 2 a.m. without taking the whole shop down with it.

    If you cannot name the allowlist, the cap, the expiry, and the undo, you did not hire anyone. You left the keys on the seat and called the empty van a teammate.

  • A Key Is Not Permission

    A Key Is Not Permission

    Inspired by Moritz Kaminski: an API key answers whether a request is authenticated. It does not answer whether an agent should take a specific action or spend a specific amount. What belongs next: tool scopes, approval rules, spend limits, and an audit trail.

    That is the same sentence as last night, said from the other side of the lock. Who holds the keys is ownership. What the key is allowed to do is the job. Mixing those two is how a shop hands a Bot the van and calls it a teammate.

    A signed request is not a signed job. Gmail connected is not send. WordPress connected is not publish. Cursor open is not merge. The badge gets you in the door. The desk still writes the ticket: which tool, which action, how much, done-when, and who can pull the plug at 2 a.m.

    This is why the email rule is not manners. Resolve the person. Show the draft. Wait for the yes. Log the near-miss. The connector fetches. The human authorizes. Same shape as a spend cap: the Bot can draft against a live inbox and still not touch Send.

    If you cannot name the scope, the cap, the yes, and the receipt, you did not hire an agent. You left a signed key on the table and hoped the night would be kind.

  • The Next Lock Is Who Holds the Keys

    The Next Lock Is Who Holds the Keys

    Inspired by Gilang: Astra can run the computer, a Grok Bot can log into tools overnight, Tesla took the driver out of the car. Everyone celebrates teammates. Nobody asks who still holds the passwords. And by 0xTangent: capability demos are cheap. Who can revoke the agent at 2 a.m. is the product question.

    That is the sentence the shop already lives on. We wire connectors so the Bot stops spinning. We write the ticket so Cursor has hands. We still do not hand over the keys.

    A teammate with your Gmail is not a Chief of Staff. A teammate with your WordPress app password is not a publisher. A teammate with the van keys is not the owner. The model can book, draft, and drive. The irreversible step still needs a name you can fire.

    This is why the one-writer rule exists. Four agents can research. One seat writes. This is why the email rule exists. Resolve the person. Show the draft. Wait for the yes. The connector fetches. The human signs.

    The next monopoly is not the cleverest overnight fleet. It is the desk that can revoke a badge in one move and still have a receipt of what the badge did. If you cannot answer who pulls the plug at 2 a.m., you did not hire a teammate. You rented a hole.

    Staff the shift. Keep the keys. That is the adult product.

  • Chat Is a Room. Overnight Is a Shift.

    Chat Is a Room. Overnight Is a Shift.

    Inspired by Kimi Nguyen asking which you would rather have: Astra in the chat, or a Grok Bot doing the work overnight.

    That is not a product question. That is a shift question. A chat is a room. You walk in, you talk, you leave. An overnight Bot is a shift. You write the ticket, you go to bed, you read the receipt in the morning.

    We already said it twice this week. Voice writes the ticket. Cursor does the hands. And the overnight nudge is not a teammate until it leaves a receipt you can refuse. Same split, different names. Astra in the thread is last-mile talk. The Bot on a connector is a scheduled pair of hands — if you scoped the hands before you paid the bill.

    People lose money here because they buy the room and expect the shift. They leave a chat open and call it a teammate. Then they are surprised when nothing moved while they slept. The model did what a room does. It waited for the next sentence.

    The shop rule is blunt. If you need a conversation, sit in the room. If you need work to exist at 6 a.m., write the ticket, name the connector, name the done-when, and let the shift run. Do not ask a room to cover a night. Do not ask a night shift to replace the room.

    Kimi asked which you would rather have. The honest answer is both, in different hours. Buy the room for the walk. Staff the shift for the sleep. The mix-up is what turns a good tool into a rumor.

  • You Can Email People. That Is Not a Desk.

    You Can Email People. That Is Not a Desk.

    Inspired by Melvin Hagberg — “you can literally just email people” — and Joe Benson riffing that the reply came from a Grok Bot Chief of Staff on the Gmail connector.

    The joke lands because both halves are true. You can email people. A stranger with a short note still gets further than a stranger with a pitch deck. That is not new. What is new is treating the send button like a company.

    A note is a moment. A desk is a pipe. The note leaves your fingers. The desk reads the thread that already exists, drafts against the real inbox, and stops at the human yes. Same Gmail. Different job.

    We already wrote the warning: without a connector the Bot just spins. The inverse is also a trap. Wire Gmail and you still do not have a Chief of Staff. You have a drafter with a badge. If the Bot hits send on a name you did not confirm, that is not leverage. That is a hole in the floor.

    The shop rule is the same as the house rule. Resolve the person. Show the draft. Wait for the yes. Log the near-miss. The connector does the fetch. The human does the irreversible step.

    So yes — email people. Do it more. Do it shorter. Do not confuse that with standing up a teammate. The teammate earns the title when the receipt lands in the Hub and the name on the To: line is the name you meant.

  • Without a Connector the Bot Just Spins

    Without a Connector the Bot Just Spins

    Inspired by Chelm’s Deep on a weekend with Grok Bot: it works when it has a connector. Without one it spins and tries to do things badly. Email and shopping got checked off. That is the whole brief.

    People keep buying a teammate and then starving it. They load skills, routines, instructions, scripts. They forget the one thing that turns talk into a checked box: a live pipe into mail, calendar, the Hub, or Cursor.

    Without that pipe the Bot is a very polite intern with no badge. It drafts. It shops in the abstract. It writes four versions of an email you already meant to send. Motion. No receipt.

    With a connector the job changes. The Bot reads the thread. It drafts against a real inbox. You still hit send. That last tap is the product, not the personality of the model.

    Same split we already run on the desk. Voice Mode can use the connectors and still is not the shop. Voice writes the ticket. Cursor does the hands. The Bot is the overnight teammate only after the ticket names a system it can actually touch.

    Do not confuse a loaded prompt with a loaded shop. A wall of instructions is not a Gmail connector. A skill file is not a calendar. If the Bot is shopping your weekend list with no cart and no card, that is theater. If it is drafting the vendor note in the same thread the vendor already sits in, that is work.

    Wire one connector. Give it one list. Watch what gets checked off. Then add the second pipe. The fleet can wait. The badge cannot.