[{"data":1,"prerenderedAt":568},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fcomfy-ui-setup":204,"\u002Fblog\u002Fcomfy-ui-setup-surround":563},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":69,"authors":206,"badge":212,"body":214,"date":554,"description":555,"extension":556,"image":557,"meta":559,"navigation":397,"path":70,"seo":560,"status":561,"stem":71,"__hash__":562},"posts\u002F2.blog\u002F20250628.comfy-ui-setup.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"ComfyUI",{"type":215,"value":216,"toc":541},"minimark",[217,221,224,227,232,240,245,272,279,283,286,299,305,309,312,327,333,340,344,348,351,356,360,363,369,372,446,449,468,492,496,519,524,527,531,534,537],[218,219,220],"p",{},"I've been using Fooocus for a while now as my go-to tool for generating images from text prompts. However, after spending an hour debugging issues today and discovering that the repository hasn't had a merge commit in 5 months, it became clear that development has stalled.",[218,222,223],{},"Time to find a better alternative.",[218,225,226],{},"After some research and a recommendation from my brother Patrick, I decided to set up ComfyUI - a more actively maintained and feature-rich solution for local AI image generation.",[228,229,231],"h2",{"id":230},"installation","Installation",[218,233,234,235,239],{},"I chose to use ",[236,237,238],"code",{},"uv"," to install ComfyUI as a tool, which provides isolated Python environments for better dependency management.",[241,242,244],"h3",{"id":243},"step-1-install-comfy-cli","Step 1: Install comfy-cli",[246,247,252],"pre",{"className":248,"code":249,"language":250,"meta":251,"style":251},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv tool install comfy-cli\n","bash","",[236,253,254],{"__ignoreMap":251},[255,256,259,262,266,269],"span",{"class":257,"line":258},"line",1,[255,260,238],{"class":261},"sBMFI",[255,263,265],{"class":264},"sfazB"," tool",[255,267,268],{"class":264}," install",[255,270,271],{"class":264}," comfy-cli\n",[218,273,274],{},[275,276],"img",{"alt":277,"src":278},"ComfyUI CLI installation","\u002Fimages\u002Fblog\u002Fcomfy-ui-install-20250628.png",[241,280,282],{"id":281},"step-2-install-comfyui","Step 2: Install ComfyUI",[218,284,285],{},"After installing the CLI tool, the next step is to install ComfyUI itself:",[246,287,289],{"className":248,"code":288,"language":250,"meta":251,"style":251},"comfy install\n",[236,290,291],{"__ignoreMap":251},[255,292,293,296],{"class":257,"line":258},[255,294,295],{"class":261},"comfy",[255,297,298],{"class":264}," install\n",[218,300,301,302],{},"However, I encountered an error: ",[236,303,304],{},"comfy-cli\u002Fbin\u002Fpython: No module named pip",[241,306,308],{"id":307},"step-3-fix-the-pip-issue","Step 3: Fix the pip issue",[218,310,311],{},"The problem was that pip wasn't available in the isolated Python environment created by uv. To resolve this, I needed to ensure pip was installed:",[246,313,315],{"className":248,"code":314,"language":250,"meta":251,"style":251},"~\u002F.local\u002Fshare\u002Fuv\u002Ftools\u002Fcomfy-cli\u002Fbin\u002Fpython -m ensurepip\n",[236,316,317],{"__ignoreMap":251},[255,318,319,323],{"class":257,"line":258},[255,320,322],{"class":321},"sMK4o","~",[255,324,326],{"class":325},"sTEyZ","\u002F.local\u002Fshare\u002Fuv\u002Ftools\u002Fcomfy-cli\u002Fbin\u002Fpython -m ensurepip\n",[218,328,329],{},[275,330],{"alt":331,"src":332},"Fixing pip installation in ComfyUI environment","\u002Fimages\u002Fblog\u002Fcomfy-cli-ensurepip-20250628.png",[218,334,335,336,339],{},"After running this command, ",[236,337,338],{},"comfy install"," worked successfully.",[228,341,343],{"id":342},"downloading-models","Downloading Models",[241,345,347],{"id":346},"models-in-the-model-manager","Models in the Model Manager",[218,349,350],{},"Some—few, it seems—can be downloaded from the Model Manager.",[218,352,353],{},[275,354],{"alt":251,"src":355},"\u002Fimages\u002Fblog\u002Fcomfy-ui-model-manager-20250628.png",[241,357,359],{"id":358},"downloading-models-manually","Downloading Models Manually",[218,361,362],{},"More models can be downloaded manually if they're not available in the Model Manager. Here's how to use curl to download models to the correct folder with proper filenames. Yes, this is oddly not a straightforward process. You'll need to open a template using \"Browse Template\" and choose \"image generation\".",[218,364,365],{},[275,366],{"alt":367,"src":368},"Generating Images with ComfyUI","\u002Fimages\u002Fblog\u002Fcomfy-ui-generate-image-20250624.png",[218,370,371],{},"After it opens, it will tell you the model it needs to download. What you need to do is copy the model ID and use it. It's crazy the UI doesn't build and run this command, but here is what I'm using.",[246,373,375],{"className":248,"code":374,"language":250,"meta":251,"style":251},"# check you know your local folder structure\nls ~\u002Fcomfy\u002FComfyUI\u002Fmodels\n\n# use the URL provided to download the model and modify where it'll be downloaded.\n\n# For downloading from Civitai (example)\ncurl -L \"https:\u002F\u002Fcivitai.com\u002Fapi\u002Fdownload\u002Fmodels\u002FMODEL_ID\" \\\n     -o ~\u002Fcomfy\u002FComfyUI\u002Fmodels\u002Fcheckpoints\u002Fcustom-model.safetensors\n",[236,376,377,383,392,399,405,410,416,437],{"__ignoreMap":251},[255,378,379],{"class":257,"line":258},[255,380,382],{"class":381},"sHwdD","# check you know your local folder structure\n",[255,384,386,389],{"class":257,"line":385},2,[255,387,388],{"class":261},"ls",[255,390,391],{"class":264}," ~\u002Fcomfy\u002FComfyUI\u002Fmodels\n",[255,393,395],{"class":257,"line":394},3,[255,396,398],{"emptyLinePlaceholder":397},true,"\n",[255,400,402],{"class":257,"line":401},4,[255,403,404],{"class":381},"# use the URL provided to download the model and modify where it'll be downloaded.\n",[255,406,408],{"class":257,"line":407},5,[255,409,398],{"emptyLinePlaceholder":397},[255,411,413],{"class":257,"line":412},6,[255,414,415],{"class":381},"# For downloading from Civitai (example)\n",[255,417,419,422,425,428,431,434],{"class":257,"line":418},7,[255,420,421],{"class":261},"curl",[255,423,424],{"class":264}," -L",[255,426,427],{"class":321}," \"",[255,429,430],{"class":264},"https:\u002F\u002Fcivitai.com\u002Fapi\u002Fdownload\u002Fmodels\u002FMODEL_ID",[255,432,433],{"class":321},"\"",[255,435,436],{"class":325}," \\\n",[255,438,440,443],{"class":257,"line":439},8,[255,441,442],{"class":264},"     -o",[255,444,445],{"class":264}," ~\u002Fcomfy\u002FComfyUI\u002Fmodels\u002Fcheckpoints\u002Fcustom-model.safetensors\n",[218,447,448],{},"The key parts of the curl command:",[450,451,452,459,465],"ul",{},[453,454,455,458],"li",{},[236,456,457],{},"-L"," follows redirects (important for many model hosting sites)",[453,460,461,464],{},[236,462,463],{},"-o"," specifies the output path and filename",[453,466,467],{},"Use the full path including the desired filename",[246,469,471],{"className":248,"code":470,"language":250,"meta":251,"style":251},"curl -L \"https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002Fstable-diffusion-v1-5-archive\u002Fresolve\u002Fmain\u002Fv1-5-pruned-emaonly-fp16.safetensors?download=true\" -o ~\u002Fcomfy\u002FComfyUI\u002Fmodels\u002Fcheckpoints\u002Fv1-5-pruned-emaonly-fp16.safetensors\n",[236,472,473],{"__ignoreMap":251},[255,474,475,477,479,481,484,486,489],{"class":257,"line":258},[255,476,421],{"class":261},[255,478,424],{"class":264},[255,480,427],{"class":321},[255,482,483],{"class":264},"https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002Fstable-diffusion-v1-5-archive\u002Fresolve\u002Fmain\u002Fv1-5-pruned-emaonly-fp16.safetensors?download=true",[255,485,433],{"class":321},[255,487,488],{"class":264}," -o",[255,490,491],{"class":264}," ~\u002Fcomfy\u002FComfyUI\u002Fmodels\u002Fcheckpoints\u002Fv1-5-pruned-emaonly-fp16.safetensors\n",[228,493,495],{"id":494},"generating-an-image","Generating an Image",[218,497,498,499,502,503,506,507,514,515,518],{},"Now trying to recreate the art style I used in Fooocus like ",[236,500,501],{},"SAI Fantasy Art",", ",[236,504,505],{},"SAI Comic Book",", I looked around and ",[508,509,513],"a",{"href":510,"rel":511},"https:\u002F\u002Fgithub.com\u002Fbash-j\u002Fmikey_nodes",[512],"nofollow","Mikey Nodes"," seems to be the most popular. After using the ",[236,516,517],{},"prompt_with_styles_2x.json"," from the repo, it seems to be a good starting place. Once I fixed the models:",[218,520,521],{},[275,522],{"alt":251,"src":523},"\u002Fimages\u002Fblog\u002Fcomfy-ui-working-working-20250628.png",[218,525,526],{},"After a few iterations, I hope to recreate the desired art style.",[228,528,530],{"id":529},"whats-next","What's Next?",[218,532,533],{},"With ComfyUI now installed, I can start exploring its workflow-based approach to AI image generation. Unlike Fooocus's simple prompt-to-image interface, ComfyUI offers more granular control through visual nodes and workflows - perfect for more advanced image generation tasks.",[218,535,536],{},"The active development community and extensive plugin ecosystem make ComfyUI a solid long-term choice for local AI image generation.",[538,539,540],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":251,"searchDepth":385,"depth":385,"links":542},[543,548,552,553],{"id":230,"depth":385,"text":231,"children":544},[545,546,547],{"id":243,"depth":394,"text":244},{"id":281,"depth":394,"text":282},{"id":307,"depth":394,"text":308},{"id":342,"depth":385,"text":343,"children":549},[550,551],{"id":346,"depth":394,"text":347},{"id":358,"depth":394,"text":359},{"id":494,"depth":385,"text":495},{"id":529,"depth":385,"text":530},"2025-06-28","Installing and configuring ComfyUI for local AI image generation after Fooocus development stalled","md",{"src":278,"alt":558},"ComfyUI installation process using uv tool manager",{},{"title":69,"description":555},"published","Vk-Bgeuv7fIJOAebpQ0zTw75vs9nldMaIZ-8l0QtRuE",[564,566],{"title":65,"path":66,"stem":67,"description":565,"status":561,"children":-1},"Exploring voice-to-text development workflows with VS Code Speech extension",{"title":73,"path":74,"stem":75,"description":567,"status":561,"children":-1},"How watching Anthropic's Claude Code lead work made me realize I wasn't using AI enough, and the journey to OS-level voice dictation for better terminal workflows.",1776221196452]