{
    "archive_path": "archive/1790546707.103236",
    "base_url": "mikemcquaid.com/vibe-coding-developer-productivity-tools",
    "basename": "",
    "bookmarked_date": "2026-09-27 22:05",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/mikemcquaid.com/vibe-coding-developer-productivity-tools",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=mikemcquaid.com",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": "mikemcquaid.com/vibe-coding-developer-productivity-tools/index.html"
    },
    "domain": "mikemcquaid.com",
    "extension": "",
    "hash": "2H71GHW7TCCJW6HQJ0EM",
    "history": {
        "archive_org": [],
        "dom": [],
        "favicon": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.google.com/s2/favicons?domain=mikemcquaid.com"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-27T22:11:32.280002+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:31.795202+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--head",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-27T22:11:32.935785+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:32.285042+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [],
        "media": [],
        "mercury": [
            {
                "cmd": [
                    "/app/node_modules/@postlight/parser/cli.js",
                    "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
                ],
                "cmd_version": "1.0.0",
                "end_ts": "2026-09-27T22:11:39.288144+00:00",
                "index_texts": null,
                "output": "mercury",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:36.225301+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/app/node_modules/readability-extractor/readability-extractor",
                    "/tmp/tmp8eolmbaj",
                    "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-09-27T22:11:36.217474+00:00",
                "index_texts": [
                    "Vibe Coding Developer Productivity Tools\n    \n         24 September 2026 \n    \n    I discussed in my last post on the topic from April 2026 my agentic workflow using Superset, Fork and Zed.\nI\u2019m now completely off Superset and almost entirely off Fork and Zed by (vibe) building my own tool: AgentIDE.\nIt\u2019s an \u201cagentic IDE\u201d built by me just for my workflows and it has made me more productive and happy working with agents.\n\n\ud83c\udf84 Agents and Worktrees\n\nUnfortunately, I\u2019m fairly obsessed with continually improving my workflow to be more efficient.\n\nI submitted a few PRs to Superset to try and make it work more how I wanted.\n\nFundamentally, though, there were a few big issues:\n\n  I\u2019m a macOS-only guy and I prefer native (i.e. Swift/Obj-C-based) tools\n  I was using, and still loving, Sandvault which Superset didn\u2019t interact with natively\n  I wanted a way to run workflows remotely and couldn\u2019t at all trust a third-party service to do this\n  I realised (quite late) that Superset isn\u2019t under a \u201creal\u201d (OSI compatible) open source software licence\n\n\nNo shade on the (great) Superset folks here: these are problems for me and not for most people.\n\nI began to have a crazy idea: what if I just vibe-coded my own agent-first \u201cIDE\u201d?\n\n\ud83c\udfd7\ufe0f Vibe Engineering\n\nI got my brother, who has done a lot more Swift than I had, to help me design the architecture.\nI leaned hard on strict compile-time checks, static analysis, testing and CI checks.\nBy the end of a weekend with Claude Max and Anthropic\u2019s Fable 5 model and ~4 hours interacting with my computer I had something that sort of worked.\nTwo weeks later, I\u2019d entirely replaced Superset.\nA week after that, I\u2019d almost entirely replaced Fork and Zed.\nI test all local changes manually before I merge them.\n\nIn the spirit of Unix philosophy, it builds heavily on a few other tools under the hood:\n\n  sv (Sandvault): creates the sandbox user and the shared workspace. Sandboxes your agent.\n  gh: authenticate and communicate with GitHub. Agents never see it as it\u2019s only run as your user.\n  herdr: used to multiplex agent sessions so they aren\u2019t tied to the GUI running.\n  mosh: used for more performant herdr sessions accessed from a phone.\n  brew (Homebrew): install and update AgentIDE: I don\u2019t want to fuck around with the Mac App Store or Sparkle and this installs the above dependencies.\n  Moshi: an iOS SSH client for using mosh and herdr to communicate with AgentIDE agent sessions.\n\n\nThe beauty of building these tools for yourself is you can have whatever insane requirements you choose.\nI was an early adopter of the macOS Golden Gate Public Beta so I thought, fuck it: I\u2019ll require that.\nBecause it was macOS only and I\u2019ve got a newish MacBook: fuck it, I\u2019ll use Apple\u2019s local models for some stuff.\n\nShortly after Golden Gate got released, I had open-sourced AgentIDE.\nIt was added to Homebrew and used by a few coworkers and Homebrew maintainers.\nYou can install it now with brew install agentide.\n\n\ud83c\udf0a AgentIDE Flow\n\n\n\nIt has a three-pane approach:\n\n  the left sidebar: lists all repositories/projects and any worktrees along with the branch/PR status\n  the middle pane: interact with your (sandboxed) OpenAI Codex or Claude Code agent.\n  the right pane: multi-function: review code/commits, view PRs and their blockers, syntax-highlighted text editor, shell, browser and application logs.\n\n\nA typical session looks like:\n\n  create a new worktree and agent session from a prompt, issue, existing PR or security advisory\n  when the agent is done, review the code or commit(s), iterate until happy, edit by hand if needed\n  open a PR, wait for CI results and code review from humans or Copilot\n  pass any failing CI job logs or code review comments back to the agent, iterate until happy\n  merge the PR, delete the worktree\n\n\nI could do all this with Superset, it\u2019s just now I can do it all entirely in one app.\nIn the happy path where the agent one-shots the solution: I sometimes do all of this without typing a single character, only clicking.\nI\u2019m also nudged into the workflow I still want to use i.e. usually some manual code review before pushing (although, perhaps ironically, not for AgentIDE\u2019s Swift itself).\nThis was not easily possible with Superset, Fork and/or Zed.\n\n\ud83d\ude85 Results\n\n\n  I can do more work in less time\n  I find it less frustrating because it works how I want (and when it doesn\u2019t: modification is trivial)\n  Several coworkers and comaintainers get the above benefits, too\n\n\nThe biggest thing I never saw coming with agentic coding is just how easy it has become to build your own tools that work just how you want them.\nEven if they aren\u2019t open source, even if no-one else ever uses them: if you use and prefer them: great.\nIf you know what you are doing and lean into vibe/agentic engineering, you can get high quality software.\nThe wildest part: I have not (deliberately) read a single line of Swift code.\nI don\u2019t need to.\nIt\u2019s been designed such that the trust boundaries are enforced by user separation and sandboxing through Sandvault.\n\nNot everything needs to be as fully-featured and complex as what I\u2019ve made here.\nI\u2019ve enjoyed a meeting reminder app called \u201cIn Your Face\u201d for a few years and was paying \u00a320 for its use.\nI decided I\u2019d try to build a replacement to address a few annoying edge cases.\nWithin ~2 hours it was just as good as In Your Face for my usage.\nWithin 2 weeks, it was better in every way.\nIt\u2019s called MinMaxCal, it\u2019s also open source and can be installed with brew install minmaxcal.\n\n\n\nIt has required even less maintenance than AgentIDE; less than an hour in months for a tool that Just Works.\n\n\ud83d\udd2e Future\n\nI am increasingly intolerant of friction in software.\nI\u2019ll continue to try and contribute to open source projects to make this better.\nWhen I can\u2019t, though, I\u2019ll just try to replace that software myself.\nI\u2019ve never had more fun building software and couldn\u2019t be happier with my output.\n\nThink about how you can use these tools to improve your processes to make software more robust, reliable and performant.\nEven if it\u2019s just for you: you will be happy you did.\n\n    \n        Written by me, not an AI. I solicit AI suggestions and apply only when I agree (often I don't)."
                ],
                "output": "readability",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:34.792587+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-27T22:11:34.788203+00:00",
                "index_texts": null,
                "output": "Vibe Coding Developer Productivity Tools | Mike McQuaid",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:34.779767+00:00",
                "status": "succeeded"
            }
        ],
        "wget": [
            {
                "cmd": [
                    "wget",
                    "--no-verbose",
                    "--adjust-extension",
                    "--convert-links",
                    "--force-directories",
                    "--span-hosts",
                    "--no-parent",
                    "-e",
                    "robots=off",
                    "--reject=js,mjs,woff,woff2,ttf,otf,eot,mp4,m4v,mov,webm,ogv,mkv,avi,flv",
                    "--timeout=120",
                    "--restrict-file-names=windows",
                    "--page-requisites",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.21.3",
                    "--compression=auto",
                    "--timestamping",
                    "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
                ],
                "cmd_version": "GNU Wget 1.21.3",
                "end_ts": "2026-09-27T22:11:34.771358+00:00",
                "index_texts": null,
                "output": "mikemcquaid.com/vibe-coding-developer-productivity-tools/index.html",
                "pwd": "/data/archive/1790546707.103236",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-27T22:11:32.942209+00:00",
                "status": "succeeded"
            }
        ]
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": null,
        "dom": null,
        "favicon": "favicon.ico",
        "git": null,
        "media": null,
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "Vibe Coding Developer Productivity Tools | Mike McQuaid",
        "warc": null,
        "wget": "mikemcquaid.com/vibe-coding-developer-productivity-tools/index.html"
    },
    "link_dir": "/data/archive/1790546707.103236",
    "newest_archive_date": "2026-09-27T22:11:36.225301+00:00",
    "num_failures": 0,
    "num_outputs": 6,
    "oldest_archive_date": "2026-09-27T22:11:31.795202+00:00",
    "path": "/vibe-coding-developer-productivity-tools/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_id": "dca353f1-493a-4900-bed8-2f8d1438013c",
    "sources": [
        "/data/sources/1790546707-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1790546707.103236",
    "title": "Vibe Coding Developer Productivity Tools | Mike McQuaid",
    "updated": "2026-09-27T22:11:31.794953+00:00",
    "updated_date": "2026-09-27 22:11",
    "url": "https://mikemcquaid.com/vibe-coding-developer-productivity-tools/"
}