<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Lukas von Kunhardt</title><description>Essays and notes by Lukas von Kunhardt on building with LLMs.</description><link>https://lukasvonkunhardt.com/</link><item><title>Renting Out Your Mac for AI Inference Using Darkbloom</title><link>https://lukasvonkunhardt.com/renting-out-your-mac-for-ai-inference-using-darkbloom/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/renting-out-your-mac-for-ai-inference-using-darkbloom/</guid><description>A Service called Darkbloom pays you to serve open source models on an idle Apple Silicon Mac.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You can now rent out your old M1 Mac to serve open source language models for $150 a month…&lt;/p&gt;
&lt;p&gt;If you have an M-Series Mac that’s sitting idle most of the time, there is now a service called “darkbloom.dev” that lets you rent out this unused compute.&lt;/p&gt;
&lt;p&gt;They do it in such a way that the individual computers on their network can never actually “see” what’s being processed, so users can run these models with data privacy.&lt;/p&gt;
&lt;p&gt;This could be an interesting option going forward to mitigate the high cost of entry for running models locally.&lt;/p&gt;
&lt;p&gt;Higher-end Macs tend to be quite expensive, but if you can earn back some money by renting them out whenever you aren’t using them, that could make the purchase more attractive.&lt;/p&gt;
&lt;p&gt;What you actually earn depends heavily on utilization though, and right now darkbloom has more suppliers than buyers. Their estimate assumes your Mac is busy 60% of the time. When I checked, the network was running at 11%. So the real payout sits well below what they advertise…&lt;/p&gt;
&lt;p&gt;I stumbled upon it when I saw this tweet:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Rick Manelius on X: he found he could convert his old M1 to serve Qwen 3.6 for $150 a month&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1174px) 1174px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1174&quot; height=&quot;804&quot; src=&quot;https://lukasvonkunhardt.com/_astro/tweet%20of%20someone%20expecting%20about%20150%20dollars%20in%20revenue%20for%20old%20m1%20pro.CoN5prKi_Z2uwTko.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Double checked and the darkbloom website confirms estimated earnings of $146 a month for that machine. For a newer M4 Pro with 64 GB RAM the calculator shows $217.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Darkbloom’s earnings calculator for an M1 Pro with 32 GB, showing $12 to $158 per month&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1922px) 1922px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1922&quot; height=&quot;1278&quot; src=&quot;https://lukasvonkunhardt.com/_astro/darkbloom%20dev%20screenshot%20showing%20price%20estimates.CpVw8Qm1_IPGld.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Interestingly the ROI seems to be favoring rather old models (M1, M2) with enough RAM. Their estimate scales with memory bandwidth, NOT with chip generation, and Apple’s Max and Ultra chips have had 400 to 800 GB/s since 2021. An M4 Pro does 273.&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Chip&lt;/th&gt;&lt;th&gt;Bandwidth&lt;/th&gt;&lt;th&gt;RAM&lt;/th&gt;&lt;th&gt;Estimate&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;M1, M2 Pro&lt;/td&gt;&lt;td&gt;200 GB/s&lt;/td&gt;&lt;td&gt;32 GB&lt;/td&gt;&lt;td&gt;$158&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;M4 Pro&lt;/td&gt;&lt;td&gt;273 GB/s&lt;/td&gt;&lt;td&gt;64 GB&lt;/td&gt;&lt;td&gt;$217&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;M1, M2, M3 Max&lt;/td&gt;&lt;td&gt;400 GB/s&lt;/td&gt;&lt;td&gt;64 GB&lt;/td&gt;&lt;td&gt;$310&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;M4 Max&lt;/td&gt;&lt;td&gt;546 GB/s&lt;/td&gt;&lt;td&gt;64 GB&lt;/td&gt;&lt;td&gt;$417&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;M1 Ultra&lt;/td&gt;&lt;td&gt;800 GB/s&lt;/td&gt;&lt;td&gt;64 GB&lt;/td&gt;&lt;td&gt;$602&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;So a 2021 M1 Max earns about $90 a month more than a 2024 M4 Pro.&lt;/p&gt;
&lt;p&gt;I did find one &lt;a href=&quot;https://miyagadget.page/en/blog/2026/06/24/darkbloom-provider-mac-earnings-review-en/&quot;&gt;review&lt;/a&gt; on it. They only ran it for a day and a half, and it did work. But the earnings landed at the very bottom of the range, almost all of it the base reward for staying online rather than anything from actual inference.&lt;/p&gt;
&lt;p&gt;That review also turned up something the website doesn’t mention: you have to let darkbloom install device management (MDM) on your Mac.&lt;/p&gt;
&lt;p&gt;It is the same thing corporate IT installs to monitor a machine and confirm it meets their security standards, and darkbloom needs it to back up the privacy guarantee - which is fair enough I guess.&lt;/p&gt;
&lt;p&gt;That being said, not every machine in every context is eligible for that, and handing that much access to a new provider nobody has heard of yet is not something everyone will be comfortable with.&lt;/p&gt;</content:encoded></item><item><title>Obsidian + Claude Code: The Setup I Use Every Day</title><link>https://lukasvonkunhardt.com/obsidian-claude-code-setup/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/obsidian-claude-code-setup/</guid><description>How I use Obsidian as the markdown editor and project organizer next to Claude Code. No plugin, no MCP server, one folder per project.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started working with LLMs i kept running into an issue many people will be familiar with: The longer you keep a chat going, the less productive it becomes, at some point you are forced to migrate to a new chat and you have to start from zero with the model. Point Claude Code at your Obsidian vault instead, and the same work lands in plain files on your own computer, where it can stay and &lt;strong&gt;compound&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This works because relevant information can be externalized to files which both of you can easily access. You can read it, and so can Claude. What accumulates is a shared memory. Neither of you needs an abstraction layer in between, and that matters more than it sounds (more on this later).&lt;/p&gt;
&lt;p&gt;I’m going to walk you through how it works: what it looks like on screen, how I organize the vault, and where it works well and where it doesn’t. You do not need special plugins, no MCP server, and you don’t have to be a developer. You don’t need to pay for anything other than a subscription to Claude, or to any other language model provider.&lt;/p&gt;
&lt;h2 id=&quot;what-does-the-setup-actually-look-like&quot;&gt;What does the setup actually look like?&lt;/h2&gt;
&lt;p&gt;My day to day setup looks like this: I have Obsidian open, and Claude Code. If I have a big enough screen, I like to view them at the same time. I have Claude open on the left. I mostly use a dictation tool to talk to Claude (&lt;a href=&quot;https://lukasvonkunhardt.com/tool-recommendation-best-dictation-for-mac/&quot;&gt;read my best dictation tool for Mac article&lt;/a&gt; if you want to know more), or just use wisprflow or something like that. And on the right side I have my vault.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screenshot splitscreen left Claude right Obsidian.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2940px) 2940px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2940&quot; height=&quot;1846&quot; src=&quot;https://lukasvonkunhardt.com/_astro/Screenshot%20splitscreen%20left%20Claude%20right%20Obsidian.BrNrcGdB_Z1RTthi.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;I use Obsidian for viewing the outputs of whatever Claude is writing. The idea is that Obsidian is a markdown viewer and editor. It allows me to have a sort of collaboration with Claude, where I can worka in it like in Google Docs.&lt;/p&gt;
&lt;p&gt;I use this for all kinds of projects: work, personal, anything, writing. The project itself doesn’t have to be text-based. Your thinking about it is, and so is your conversation with Claude. So the habit is simple: every time I work something out about a project, it goes into some note in that project’s folder, and every time Claude works something out worth keeping, it goes into the same folder. That is what gives Claude the &lt;strong&gt;same picture&lt;/strong&gt; of the project that I have. And the folder of markdown notes is better at retaining information than either of us. I tend to forget what I decided last March, and Claude remembers nothing outside the current chat context.&lt;/p&gt;
&lt;h2 id=&quot;how-does-claude-code-see-my-notes&quot;&gt;How does Claude Code see my notes?&lt;/h2&gt;
&lt;p&gt;First of all, you have to understand the concept of Claude Code and how it’s different from the Claude chat. In Claude Code, you start by opening a folder. No matter where you use Claude Code, whether it’s the terminal version or the app version, it’s going to ask you to point it to some &lt;strong&gt;file location&lt;/strong&gt;, and this is the starting point.&lt;/p&gt;
&lt;p&gt;If you were starting from scratch and had never used this before, you would open Obsidian first, and then you would create a “vault”, which is the parent folder all of your files will be collected in. In Obsidian you have a sidebar, and in the sidebar you see notes and nested folders. If you open your vault with a file explorer, you can see this mirrors exactly the file structure that exists on your computer. What you see in Obsidian as folders and nicely written and rendered notes is just folders on your computer with markdown files in them. This is the core of the magic. If you point Claude Code at some folder on your computer, it’s going to have access to, and see, the exact same files you’re seeing.&lt;/p&gt;
&lt;p&gt;Say you wanted to start some project, and it’s going to be a more complicated one: some research project, some new project for work, whatever. You would create a new folder in your vault, and in this folder you might collect notes for anything relevant to this project. And the nice thing is: if you now switch to Claude Code, you can point it at the same folder location, and then it’s going to see everything you’re writing. And it can also edit and suggest changes to your own writing.&lt;/p&gt;
&lt;p&gt;Depending on what mode you select in Claude Code, you can either approve each change manually, so you are in full control of what Claude does to your notes, or you can give it full control if it’s a more hands-off thing.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Diff viewer in claude code showing changes its suggesting.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1466px) 1466px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1466&quot; height=&quot;1850&quot; src=&quot;https://lukasvonkunhardt.com/_astro/Diff%20viewer%20in%20claude%20code%20showing%20changes%20its%20suggesting.WPOyXzbc_Z1QhaTz.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;do-you-need-the-obsidian-claude-code-plugin-or-an-mcp-server&quot;&gt;Do you need the Obsidian Claude Code plugin or an MCP server?&lt;/h2&gt;
&lt;p&gt;Short answer: No.&lt;/p&gt;
&lt;p&gt;If you work on your computer and you have Claude there and you have Obsidian there, then there’s nothing else you need to do. Because Obsidian just looks at files on your machine, and Claude Code natively, by design, is supposed to work with files on your machine. They are a match made in heaven. They are directly complementary to each other.&lt;/p&gt;
&lt;p&gt;What is on offer falls into three groups, and it helps to know which one you are looking at.&lt;/p&gt;
&lt;p&gt;The first group runs Claude Code inside an &lt;strong&gt;Obsidian sidebar&lt;/strong&gt;. I don’t see the point. Having two windows open is not something you need a special app for.&lt;/p&gt;
&lt;p&gt;The second group are editor context bridges, which tell Claude which note you have open and what text you have selected. That is at least a real gap, but it is easy enough to just tell Claude which file you mean, and if you follow the convention of working in one project folder it stops mattering much. If the files you need are scattered across your whole vault, it is worth more.&lt;/p&gt;
&lt;p&gt;The third group are MCP servers that expose your vault to other apps, and this is the one worth being clear about. Claude Code can read your files. The Claude desktop app in chat mode cannot, so people connect an MCP server to Obsidian to fix that. But that is the long way around to somewhere worse. Just use Claude &lt;strong&gt;Code&lt;/strong&gt; instead of Claude &lt;strong&gt;Chat&lt;/strong&gt; so that it natively has access to your files without requiring an MCP middle layer. Else you give up most of the advantage this whole setup is built on.&lt;/p&gt;
&lt;p&gt;There is one case where I do use one. I have the Local REST API plugin enabled because I had Claude Code running on a server, posting updates into a note in one of my projects about how a website was performing. If you have a site on a server somewhere and you want a weekly report to land in that project’s folder, that is genuine: something outside your computer needs to write into your vault. Editing your vault from your phone is the same shape of problem. It is a different problem from the one this article is about.&lt;/p&gt;
&lt;h2 id=&quot;why-markdown-and-not-notion-or-word&quot;&gt;Why markdown, and not Notion or Word?&lt;/h2&gt;
&lt;p&gt;Take a comparison. If you were to use Notion with a Notion MCP server, you would have a similar looking setup, at least on your side. You already know how to navigate Notion and how to write there, so your half of the interaction would not change much. But for Claude it changes a lot, because Claude does not see Notion documents as files in a folder. Instead it must go through an MCP server or an API to interact with Notion, and the same is true of any note taking tool that does not store your notes in an easily legible format on your own device.&lt;/p&gt;
&lt;p&gt;That has several disadvantages. The model spends far more tokens and thinking on the question of how to reach the files at all, which is unnecessarily difficult. Every abstraction layer you introduce makes it harder.&lt;/p&gt;
&lt;p&gt;If a model wants to find text somewhere on your computer, it can use something like “grep”. grep is a search tool that has been sitting on every Mac and Linux machine for about fifty years. It looks inside your files, not just at their names, and it goes through thousands of them in well under a second.&lt;/p&gt;
&lt;p&gt;That opens up a lot. Claude can find every note in a client folder that mentions one supplier, across hundreds of subfolders, without you remembering which note it was in. It can list every note you have not touched since March. It can find the notes that mention two things at once, which is the question you can never answer with a search box. It can ask for every file longer than a certain length, or rename fifty notes to match a convention.&lt;/p&gt;
&lt;p&gt;None of that needs a plugin, an installation, or any special tool. These are basic command line commands, from the same generation as grep, and the model has seen them used more times in its training data than almost anything else. It is fluent in them the way it is fluent in English. The Notion MCP server, by comparison, did not exist two years ago, and it is complicated to use, so the model has to work out how to drive the tool at the same time as it does your actual work. The files are just there, in the same folder Claude Code runs in.&lt;/p&gt;
&lt;p&gt;Here is the proof that this is the model’s own preference and not just mine. Ask Claude Code to write something down, store it for later, keep it as a reference document. What kind of file do you think it creates? Markdown. You don’t have to change its ways at all.&lt;/p&gt;
&lt;p&gt;You could also work with Word. But Word files are in a proprietary format. In order for Claude to read one, it has to run a Python script to unzip the contents of a .docx file. That makes every read and every edit more complicated, and Claude spends tokens and thinking on that layer instead of on your work. If you have been trying to get Claude to edit your Word files, you will have noticed the difference.&lt;/p&gt;
&lt;p&gt;Here is what that looks like. Finding every note that mentions one supplier, in markdown:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes flexoki-light flexoki-dark&quot; style=&quot;background-color:#f2f0e5;--shiki-dark-bg:#1c1b1a;color:#100f0f;--shiki-dark:#cecdc3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;color:#24837B;--shiki-dark:#3AA99F&quot;&gt; -ril&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt; &quot;acme&quot;&lt;/span&gt;&lt;span style=&quot;color:#24837B;--shiki-dark:#3AA99F&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same search, on Word files:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes flexoki-light flexoki-dark&quot; style=&quot;background-color:#f2f0e5;--shiki-dark-bg:#1c1b1a;color:#100f0f;--shiki-dark:#cecdc3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; zipfile&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; re&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; pathlib&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt; docx_text&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;    with&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; zipfile&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;ZipFile&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; z&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;        xml &lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; z&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt;&quot;word/document.xml&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;decode&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; re&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;sub&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt;&quot;&amp;#x3C;[^&gt;]+&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt; &quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; xml&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; path &lt;/span&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; pathlib&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;Path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;rglob&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt;&quot;*.docx&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;startswith&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt;&quot;~$&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;):&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;   # Word lock files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;        continue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#66800B;--shiki-dark:#879A39&quot;&gt; &quot;acme&quot;&lt;/span&gt;&lt;span style=&quot;color:#5E409D;--shiki-dark:#8B7EC8&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt; docx_text&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;lower&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#205EA6;--shiki-dark:#4385BE&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#100F0F;--shiki-dark:#CECDC3&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#6F6E69;--shiki-dark:#878580&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That version still misses anything in a header, a footer or a comment, because Word keeps those in separate files inside the zip.&lt;/p&gt;
&lt;p&gt;And for you it is also quite convenient, because Obsidian is genuinely fun to use. It looks nice and it has most of the functionality you need. A little less than Notion, a little less than Word, but it is the lowest common denominator in the good sense: for both of you it is just really good to work in. It is a very fleshed out notes app with high customizability. PDFs it displays out of the box, with nothing to install. For most other file types there is a plugin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“CSV Editor” for comma separated tables&lt;/li&gt;
&lt;li&gt;“Sheet Plus” or Excel for spreadsheets&lt;/li&gt;
&lt;li&gt;“ePub Reader” for books&lt;/li&gt;
&lt;li&gt;“Annotator” if you want to highlight a PDF rather than just read it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-is-the-actual-benefit-over-a-normal-claude-chat&quot;&gt;What is the actual benefit over a normal Claude chat?&lt;/h2&gt;
&lt;p&gt;Where do the fruits of your labor, the results of the interaction with Claude, actually get stored? If you’re using Claude as basically a pimped-up version of Google to answer singular questions, you aren’t getting half of what you can out of it. That’s really the advantage that Claude plus Obsidian has: it allows you to work on long-term projects and to build up a &lt;strong&gt;shared knowledge&lt;/strong&gt; base that you and Claude can interact with, which for any complicated task is going to be necessary.&lt;/p&gt;
&lt;p&gt;Here is an example: Some time ago I came onto a large enterprise project in a field I knew very little about. In the first weeks I was sent an enormous amount of material, and there were so many new people to memorize. In the meetings I did not get most of what was being explained to me. They would mention fifteen people I did not know yet, sometimes the same ones from a meeting two hours earlier, and I still did not remember them. a couple of weeks in, that one folder holds a hundred transcripts and about three hundred wiki pages.&lt;/p&gt;
&lt;p&gt;Claude organized all of it into a wiki inside that folder, and it started to make sense so much sooner. I could ask my questions there instead of being the guy who asks stupid questions all the time. I could spend a day on “explain back to me what all these files were, and what did they mean by this term I keep hearing”, and the answer came back with its receipts: you discussed it in that meeting, and the document they sent five days ago describes it on page 90. They gave me the feedback that they found it amazing how quickly I started to get things, in a field everyone knew was hard to get into.&lt;/p&gt;
&lt;p&gt;I also got into the habit of transcribing the meetings and storing them, so I can query backwards. What did I discuss with this person at the start, what was their opinion then, and what is it now? When was the first time we talked about this? Those are easy to answer now and close to impossible otherwise.&lt;/p&gt;
&lt;p&gt;None of that needs a special feature. You point the model at a section of your project folder and let it build its own interlinked wiki, which it updates every time a new transcript or document arrives. I described that system in &lt;a href=&quot;https://lukasvonkunhardt.com/my-favorite-memory-system-for-llms/&quot;&gt;My favorite memory system for LLMs&lt;/a&gt;, and it ships as &lt;a href=&quot;https://github.com/lukaskunhardt/skills&quot;&gt;skills you can install&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One thing on confidentiality, since I said enterprise. Nothing in this setup depends on Claude. The notes are plain text in a folder on your own machine, so if your client has not approved Anthropic, you swap the model and keep everything else exactly as it is. Use whatever they have whitelisted, or a provider hosted in the region they require. Claude Code itself also runs through Amazon Bedrock, Google Cloud or Microsoft Foundry, which is often what a corporate security review has already signed off on.&lt;/p&gt;
&lt;h2 id=&quot;doesnt-this-lock-you-into-claude&quot;&gt;Doesn’t this lock you into Claude?&lt;/h2&gt;
&lt;p&gt;It does the opposite, and this is a major advantage for me. I don’t want to lock myself in with one provider.&lt;/p&gt;
&lt;p&gt;That is the other disadvantage of having most of your knowledge hidden away in some chat. Even if you work with Claude Cowork and Claude Projects, or with Codex and ChatGPT Projects, they all share the same problem: if they get expensive, or there is a better deal somewhere, or a better model you would rather be using, the migration becomes difficult. Unless nothing interesting is actually stored in the model provider’s app, and everything is in files on your computer anyway. Then it is easy. You can migrate in a blink.&lt;/p&gt;
&lt;p&gt;I can swap out my provider tomorrow. It doesn’t actually matter to me. I use Claude right now only as the inference provider for the model: not to organize my projects, not to store knowledge somewhere, not to keep some sort of memory on me. All of that sits in files that I own, on my personal computer, that I have full control over. I wrote more about that in &lt;a href=&quot;https://lukasvonkunhardt.com/how-to-avoid-locking-yourself-into-one-ai-provider/&quot;&gt;How to avoid locking yourself into one AI provider&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;wouldnt-a-database-be-better-than-markdown-files&quot;&gt;Wouldn’t a database be better than markdown files?&lt;/h2&gt;
&lt;p&gt;I don’t think so. I don’t think vector search is that useful unless you have massive amounts of text data. And the database comes with a massive disadvantage: you not being able to quickly interact with it. The main advantage is that markdown and the file system convention is something that you and Claude can both work in really well. If Claude is down and you’re offline, you still have all of your notes, you have all of your insights, to easily work with. And when Claude becomes better and maybe you do much less of the editing yourself, nothing about that changes. It will still be great at reading and working with markdown, and so will you.&lt;/p&gt;
&lt;h2 id=&quot;how-do-i-organize-the-vault&quot;&gt;How do I organize the vault?&lt;/h2&gt;
&lt;p&gt;I organize the vault by the PARA principle. It’s a principle designed by Tiago Forte for organizing basically anything in your life: all your notes and all writing and all files. I find it really useful. He describes it in his book Building a Second Brain. It splits things into four categories, sorted by actionability: Projects, Areas, Resources, and an Archive.&lt;/p&gt;
&lt;p&gt;Projects are the things you are working on now, the ones that have an end. Areas are ongoing responsibilities that never finish: your health, your finances, each client relationship. Resources are topics you keep for reference, like reading notes and snippets. The Archive is where anything finished or gone quiet from the other three ends up.&lt;/p&gt;
&lt;p&gt;I organize every project that I start, a project being anything that involves more than one step. There are large projects that I have with clients, with hundreds of subfolders, and there are also small folders, like planning a weekend or something. Everything gets its own folder.&lt;/p&gt;
&lt;p&gt;Obsidian is open on the whole vault, so I see all of it at once: the four categories at the top, and every note inside them.&lt;/p&gt;
&lt;h2 id=&quot;which-folder-do-you-open-claude-code-in&quot;&gt;Which folder do you open Claude Code in?&lt;/h2&gt;
&lt;p&gt;Not at the vault. This is the one part worth being precise about, because the two windows do not look at the same thing: Obsidian sees the whole vault, Claude Code sees one folder.&lt;/p&gt;
&lt;p&gt;I never point it at my entire vault, I always point it at the one specific folder I am working on. That is usually a project, but it can just as well be one area or one resource. And this only works if you actually have a folder for each project you work on, or for every resource, or for every area. That’s why I think the whole PARA sorting mechanism works especially well: sorting the folders by actionability makes them especially well suited, because there is basically always a folder for any given topic that I would want to discuss with Claude. Actionability is the perfect thing to sort by if you want folders to directly match your working sessions. So the shared memory is not one big pile. Every folder builds its own, across as many sessions as the work takes, and Claude starts each session already inside the only context it needs.&lt;/p&gt;
&lt;p&gt;None of this locks Claude into that one folder. The folder you open is a starting point, not a fence, and Claude Code can still reach anything else on your machine when you tell it to. Say the project is finishing this year’s tax declaration, and half of what I need is in a resources folder called finances. I mention that folder once and it uses both for the rest of the session.&lt;/p&gt;
&lt;h2 id=&quot;do-you-need-a-claudemd-in-your-vault&quot;&gt;Do you need a CLAUDE.md in your vault?&lt;/h2&gt;
&lt;p&gt;You could, of course. You could explain conventions or something like that, but I think you mostly don’t need to, because the vault has a pretty simple structure. Projects, areas, resources and the archive are so different in nature that I didn’t have any sort of things that would apply to everything. And I think the models have gotten smart enough that you don’t need to explain their environment to them. They figure it out best on their own. So no.&lt;/p&gt;
&lt;p&gt;But then again, you could: you could specify for example a tone or writing style, or conventions to be used, or what type of notes are read-only to the model, all kinds of things. Just like in a coding repo, you could have these sorts of conventions in your writing vault.&lt;/p&gt;
&lt;h2 id=&quot;how-do-you-and-claude-edit-the-same-note-without-overwriting-each-other&quot;&gt;How do you and Claude edit the same note without overwriting each other?&lt;/h2&gt;
&lt;p&gt;With markdown files, there is a built-in protection in Claude Code that stops it from overwriting changes. When you edit a markdown file and the model wants to make changes to it, it gets notified that the file has changed and is forced to read it first before editing it. This allows you to work in the same document as the LLM without having to worry about the model deleting your work.&lt;/p&gt;
&lt;p&gt;Claude is no longer allowed to overwrite files that have changed since it last looked at them. This problem basically solves itself. I think it’s basically become a default.&lt;/p&gt;
&lt;p&gt;And there is the Obsidian Git plugin, which automatically syncs my entire vault to git. Because Claude is great at using git, if I tell it to restore some previous version, it does so reliably.&lt;/p&gt;
&lt;h2 id=&quot;which-obsidian-plugins-do-i-actually-use&quot;&gt;Which Obsidian plugins do I actually use?&lt;/h2&gt;
&lt;p&gt;Fifteen, but only a few of them matter for this setup. Obsidian Git is the important one: it versions the whole vault automatically, which is what makes “Claude, restore the previous version” work at all. After that it is CSV Editor for tables, Excalidraw for sketches, Tasks and Kanban for task lines and boards, Templater and QuickAdd for note templates and capture shortcuts, Dataview for queries across notes, and Marp Slides when I need a deck out of markdown. The rest are theme and interface tweaks that have nothing to do with Claude.&lt;/p&gt;
&lt;h2 id=&quot;what-does-this-look-like-on-the-phone&quot;&gt;What does this look like on the phone?&lt;/h2&gt;
&lt;p&gt;I can sync Obsidian to my phone automatically (this is Obsidian Sync, and it does cost money, about 4 dollars a month, which is quite cheap), so that I have all the notes on each project on my phone and can edit them on the go. If I want to jot something down on my phone while I’m on the train or on the run, I can do so, and it will appear later on my desktop. I don’t really work from my phone when I’m traveling. Mostly I use my computer for working. But you could do this on your phone, probably.&lt;/p&gt;
&lt;h2 id=&quot;what-does-not-work&quot;&gt;What does not work?&lt;/h2&gt;
&lt;p&gt;I just want to be honest about what doesn’t work so well. What this is not good at is working with projects that are mostly not text, or that just don’t support markdown. You are kind of bound by file type. Just think about what your primary mode of working is. If you work 90% of your day in Excel, this setup is going to be less useful than if you mostly work with text and PDFs.&lt;/p&gt;
&lt;p&gt;Obsidian is great at having even thousands of markdown documents for you to quickly navigate and read. But other file formats it is not so optimized for. Obsidian displays PDFs out of the box, and there are plugins for annotating them. But if your primary mode is working in PDFs, highlighting them because you need to send them back in PDF format, or if they are image heavy, I don’t know if this would be the best solution for you. And if you have a lot of them, Obsidian Sync doesn’t support large vault sizes, and Obsidian becomes noticeably slow. Also tables, Excel files, don’t really work. If that happens, you can hide the heavy folders from Obsidian with a community plugin called &lt;a href=&quot;https://github.com/devxoul/obsidian-ignore&quot;&gt;Ignore&lt;/a&gt;. It gives you a &lt;code&gt;.obsidianignore&lt;/code&gt; file that works like a gitignore for non-coders.&lt;/p&gt;
&lt;p&gt;Obviously there are also workarounds, because if you’re working with text-based PDFs, for the most part you can just extract them to markdown files, and that has the advantage of you being able to edit them. For example, if you were to prepare a research paper or thesis statements or something like that, I would probably just use some tool to extract the text from the PDFs, then store the resulting markdown files in my vault, and then Claude would be very good at quickly finding information even in thousands of different source documents you collected.&lt;/p&gt;
&lt;h2 id=&quot;do-you-have-to-be-a-developer&quot;&gt;Do you have to be a developer?&lt;/h2&gt;
&lt;p&gt;No. On your side, Claude Code barely looks different from the Claude chat. You type, it answers. The whole difference is hidden in what the model can reach: instead of a constrained chat window where it has the internet and not much else, it has your file system.&lt;/p&gt;
&lt;p&gt;There is nothing to set up for that and no commands to learn. You can learn them, and people have a lot of tricks for getting more out of it, but none of that is the entry price. It works out of the box.&lt;/p&gt;
&lt;p&gt;Developers use Claude Code more because it drops straight into a workflow they already have. Knowledge workers underuse it, and I think that is the wrong way round, because the ability to persist what you find, and to run a bit of code on the side when you need a result, is worth more outside of engineering, not less.&lt;/p&gt;
&lt;h2 id=&quot;how-do-you-start&quot;&gt;How do you start?&lt;/h2&gt;
&lt;p&gt;What I would suggest: do not worry about doing some tutorial. Hand over most of the work to Claude. Just open Claude Code and tell it that you want to start using Obsidian and Claude Code together, and that it should walk you through it. Claude has no shortage of patience and is great at researching how people are using this online currently. You don’t really have to figure it all out before you can start using it. You can start using it and use Claude to teach you how it works.&lt;/p&gt;</content:encoded></item><item><title>Claude Code vs Cursor: Speed, Pricing and Use Case Comparison (2026)</title><link>https://lukasvonkunhardt.com/claude-code-vs-cursor/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/claude-code-vs-cursor/</guid><description>Claude Code vs Cursor, answered with a month of measured turn times: speed, real cost, when each tool wins, and how to run Claude Code inside Cursor.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code and Cursor are two different approaches for working with AI coding models directly in your files. But they are hard to compare, because they are not the same kind of thing. First we have to separate two concepts: the model and the tool around it.&lt;/p&gt;
&lt;p&gt;The model is the AI that reads and writes code. The tool around it is a normal program: it looks and behaves like a chat interface, it feeds your files to the model, runs commands for it, and applies its edits. Developers call this program a harness. Anthropic’s docs say it like this: &lt;a href=&quot;https://code.claude.com/docs/en/glossary&quot;&gt;“Claude Code is the harness; Claude is the model inside it.”&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; is an editor, a specialized software for viewing and editing code, with such a harness built in. It lets you choose the model: the Anthropic and OpenAI models, open source models, or Cursor’s own model, Composer 2.5, which answers fast and at a decent quality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; is a harness without an editor. Anthropic built it around its own Claude models. It is especially good at completing long, complicated tasks independently.&lt;/p&gt;
&lt;p&gt;I used both, and I measured both. The short answer: Cursor with its Composer model responds to your messages faster, but it needs more &lt;strong&gt;micromanagement&lt;/strong&gt;. Claude Code does more work per response and finishes tasks more completely. So my total time per task is lower with Claude Code. Which one you should pay for depends mostly on your budget and on how much you want to read the code you produce.&lt;/p&gt;
&lt;h2 id=&quot;what-is-the-actual-difference-between-claude-code-and-cursor&quot;&gt;What is the actual difference between Claude Code and Cursor?&lt;/h2&gt;
&lt;p&gt;Claude Code is the coding environment built by Anthropic for the Claude family of language models: Fable, Opus, Sonnet, Haiku. The Claude models do the thinking, Claude Code is everything around it: file access, terminal access, permissions, and the loop that keeps the model working until the task is done. There is a terminal version (CLI), or you can access Claude Code in &lt;span class=&quot;img-peek&quot;&gt;&lt;button class=&quot;img-peek-label&quot; type=&quot;button&quot; aria-expanded=&quot;false&quot;&gt;the Code tab in the Claude app&lt;/button&gt;&lt;span class=&quot;img-peek-panel&quot;&gt;&lt;img alt=&quot;the Code tab in the Claude app&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 608px) 608px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;608&quot; height=&quot;448&quot; src=&quot;https://lukasvonkunhardt.com/_astro/Claude%20Code%20in%20Claude%20app.CErAgjXa_RcXfo.webp&quot;&gt;&lt;/span&gt;&lt;/span&gt;. The app is generally much more accessible, if you have no prior experience with working in a terminal, the app is the obvious choice.&lt;/p&gt;
&lt;p&gt;The CLI is the same agent without the interface: &lt;span class=&quot;img-peek&quot;&gt;&lt;button class=&quot;img-peek-label&quot; type=&quot;button&quot; aria-expanded=&quot;false&quot;&gt;a terminal window, a prompt, and nothing else&lt;/button&gt;&lt;span class=&quot;img-peek-panel&quot;&gt;&lt;img alt=&quot;a terminal window, a prompt, and nothing else&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 702px) 702px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;702&quot; height=&quot;322&quot; src=&quot;https://lukasvonkunhardt.com/_astro/CLI%20version%20of%20claude%20code.Dl2_F3ZN_Z15gbow.webp&quot;&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;I like working with the terminal because I can have &lt;span class=&quot;img-peek&quot;&gt;&lt;button class=&quot;img-peek-label&quot; type=&quot;button&quot; aria-expanded=&quot;false&quot;&gt;multiple windows open and see them at a glance&lt;/button&gt;&lt;span class=&quot;img-peek-panel&quot;&gt;&lt;img alt=&quot;multiple windows open and see them at a glance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2291px) 2291px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2291&quot; height=&quot;416&quot; src=&quot;https://lukasvonkunhardt.com/_astro/You%20can%20run%20multiple%20claude%20code%20sessions%20in%20one%20terminal%20window.DOQbHciW_2wrfB2.webp&quot;&gt;&lt;/span&gt;&lt;/span&gt;, and I can quickly navigate between folders and servers with terminal shortcuts, which most people won’t be using.&lt;/p&gt;
&lt;p&gt;You also CAN use Claude Code in an IDE. So there are three options: you can use the Claude Code CLI, you can use the Claude app, and you can use the Claude Code VS Code extension, either in VS Code OR in Cursor.&lt;/p&gt;
&lt;p&gt;The one thing you cannot really choose in Claude Code is the model. Officially it runs Claude models only. You can point it at other models through an API proxy, and &lt;a href=&quot;https://github.com/musistudio/claude-code-router&quot;&gt;people do&lt;/a&gt;, but Anthropic does not support this, and updates break these setups regularly. &lt;a href=&quot;https://artificialanalysis.ai/agents/coding-agents&quot;&gt;Artificial Analysis even benchmarks Claude Code running foreign models&lt;/a&gt; this way: the same harness scores 67 with Opus 5 and 31 with DeepSeek. So in practice if you are using Claude code, you will be using the Claude models and an Anthropic subscription. (The alternative would be to use API based billing, which is prohibitively expensive)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; on the other hand is an IDE, a specialized interface for developers. It is based on VS Code, which has a lot of useful features built in for viewing and editing code. If you prefer to read and understand the code you are editing, you will need an IDE anyway.&lt;/p&gt;
&lt;p&gt;Cursor added a chat interface and a tab completion model to VS Code, so that you can edit code directly, or easily see where edits are made. Cursor lets you choose between a large variety of models: its own models (Composer 2.5, and since the SpaceX deal also Grok), the Claude models, the GPT models, Gemini, and self-hosted models exposed via an API.&lt;/p&gt;
&lt;p&gt;So the comparison is not apples to apples. Cursor specializes in how you work with the code; Claude Code specializes in how much work you can hand over.&lt;/p&gt;
&lt;p&gt;You can watch this specialization happen: early Claude Code showed you every diff prominently. Today the automatic mode hides the code more and more, because handing the work over is the workflow Anthropic sees people use.&lt;/p&gt;
&lt;h2 id=&quot;is-claude-code-slower-than-cursor-i-measured-it&quot;&gt;Is Claude Code slower than Cursor? I measured it.&lt;/h2&gt;
&lt;p&gt;Cursor’s Composer 2.5 model answers much faster than the Claude models, and that appealed to me. I am looking for a more interactive model to code with, so that I can work on one task at a time. If the model always takes 5 minutes to respond, I usually do 2-3 things in parallel, which is mentally taxing.&lt;/p&gt;
&lt;p&gt;So I measured both tools the same way: wall-clock time from the moment I submit a prompt until the agent stops working. It measures the thing I actually care about: after I send a prompt, how long am I waiting before the agent is done enough that I can think again?&lt;/p&gt;
&lt;p&gt;For Claude Code, I parsed my local session logs: 1,814 turns over the last 30 days, all on Claude models. For Cursor, I used Cursor’s agent hooks to log every prompt and every stop event; those turns all ran on Composer 2.5 Fast. So the table compares two tool-plus-model pairs, which is how you use them in practice.&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;&lt;em&gt;Claude Code + Claude models (n=1,814)&lt;/em&gt;&lt;/th&gt;&lt;th&gt;&lt;em&gt;Cursor + Composer 2.5 Fast (n=54)&lt;/em&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Median turn&lt;/td&gt;&lt;td&gt;92 s&lt;/td&gt;&lt;td&gt;32 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Average turn&lt;/td&gt;&lt;td&gt;3.9 min&lt;/td&gt;&lt;td&gt;55 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;p90&lt;/td&gt;&lt;td&gt;8.7 min&lt;/td&gt;&lt;td&gt;1.8 min&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Turns over 5 min&lt;/td&gt;&lt;td&gt;18%&lt;/td&gt;&lt;td&gt;2%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;By this measure, the Cursor and Composer pair wins clearly: about three times faster at the median.&lt;/p&gt;
&lt;p&gt;But then I noticed something odd. I still defaulted to Claude Code. You can see it in the sample sizes: 1,814 turns against 54. Part of that is that I logged Claude Code for longer. But the window is longer because I kept coming back to it.&lt;/p&gt;
&lt;p&gt;Why? Composer responds faster, but it also does less work per response. Before it hands control back, Composer works for about 55 seconds. Claude Code works for about 4 minutes. Composer does not finish tasks faster. It cuts them into more pieces and hands each piece back to me.&lt;/p&gt;
&lt;p&gt;I looked for a benchmark to check this intuition, and found one. &lt;a href=&quot;https://artificialanalysis.ai/agents/coding-agents&quot;&gt;Artificial Analysis benchmarks coding agents&lt;/a&gt; as tool-plus-model pairs, measured by wall-clock time until a whole task is actually finished, with no human in the loop. Composer 2.5 scores 62 and needs 9.3 minutes per finished task. So even with nobody waiting between turns, the fast model does not finish tasks fast. Claude Code with Opus 5 at maximum effort scores 67, the top score, and needs 23.6 minutes. That looks slower, until you put it next to my turn data: Claude Code spends that time in a few long, autonomous stretches. Composer spends its minutes in many short steps, and each hand-back lands on your desk.&lt;/p&gt;
&lt;p&gt;So Composer is a micromanagement model. You save money, but you have to stay involved. That is probably not what people expect when they read the headlines about how fast Cursor is. Per response, it IS faster. Per task, it is not. Composer’s real advantage is not speed. It is price.&lt;/p&gt;
&lt;p&gt;But micromanagement is not bad for everyone. There are people who want to be very involved and work in very small steps. If you work closely with the code and want to develop a deep understanding of it, this might not be a bad thing.&lt;/p&gt;
&lt;p&gt;One caveat so you can judge my data: the Cursor sample is small: 54 turns over two days, all on Composer 2.5 Fast, mostly writing tasks rather than coding. The Claude Code sample is 30 days of everything I do.&lt;/p&gt;
&lt;h2 id=&quot;which-one-is-better-and-for-whom&quot;&gt;Which one is better, and for whom?&lt;/h2&gt;
&lt;p&gt;Claude Code is targeted at being your sparring partner. You do not read the code. You make judgment calls: what should be built, and is the built thing good, by clicking through whatever comes out. That only works if you make the bet that the agent works well on its own. Cursor is more like the machine room. If you work on high-stakes applications, you are forced to read the code and develop a deep understanding of it, and then you need an IDE anyway: Cursor, or VS Code with the Claude Code extension.&lt;/p&gt;
&lt;p&gt;The second difference is money: pricing and model selection. You obviously have much less vendor lock-in with Cursor, and they have much cheaper models available, like the Composer 2.5 model. BUT the most capable models have lately been either the OpenAI or Anthropic models, and both of these are available cheapest through the respective provider. So if you want to use Claude models and want to save money, it’s cheapest to use their subscription. If cost savings are most important to you, and it’s fine for you to use a good model, but maybe not the cutting edge, Cursor will offer the better deal.&lt;/p&gt;
&lt;h2 id=&quot;can-you-use-claude-code-inside-cursor&quot;&gt;Can you use Claude Code inside Cursor?&lt;/h2&gt;
&lt;p&gt;Yes. The question confuses many people, and the answer only makes sense once you separate model from tool. Cursor is based on VS Code, so the official Claude Code extension could technically install directly in it. If you have subscriptions to both, you get Cursor’s editor and Tab completion, and next to it the full Claude Code agent on your Claude subscription. The two are separate programs that share a window. The reverse does not work: you cannot select Composer inside Claude Code.&lt;/p&gt;
&lt;h2 id=&quot;what-do-they-cost-in-practice&quot;&gt;What do they cost in practice?&lt;/h2&gt;
&lt;p&gt;Claude Code at the 20 dollar tier is for regular work basically unusable. You will hit the limit immediately when working more than a couple of hours with it, especially if you select the larger models: the 20 dollar tier defaults to Sonnet, Opus drains the limit several times faster, and Fable 5 is not included at all: you pay for it with usage credits. On the Max plans, Fable 5 is included since July 2026, capped at half of your weekly limit. The Cursor 20 dollar tier will actually get you quite far, assuming you choose cost-effective models like Composer 2.5: Cursor bills its own models separately from the 20 dollars of included third-party model usage, so Composer turns barely touch that budget. So if you have a small budget and want the most bang for the buck, Cursor is the way to go. If you have a larger budget and model quality is most important, I would go with Claude.&lt;/p&gt;
&lt;p&gt;The benchmark numbers say the same: on Artificial Analysis, a Composer 2.5 task costs about &lt;strong&gt;7 cents&lt;/strong&gt; in API terms, while the same task with a frontier model in Claude Code or Codex costs &lt;strong&gt;7 to 12 dollars (!!!)&lt;/strong&gt; (as listed in August 2026). Composer scores about 10 percent below the frontier models on the coding index, at about 1 percent of the cost per task.&lt;/p&gt;
&lt;h2 id=&quot;when-is-cursor-the-better-choice&quot;&gt;When is Cursor the better choice?&lt;/h2&gt;
&lt;p&gt;If you are writing code and want a &lt;strong&gt;tab completion model&lt;/strong&gt;, Cursor is leading in the field, Claude Code has no equivalent. So there Cursor is actually better, no matter which model you chat with. If you want to avoid vendor locking and want to be able to use a variety of different models, Cursor is also the way to go.&lt;/p&gt;
&lt;h2 id=&quot;what-does-the-spacex-acquisition-mean-for-cursor&quot;&gt;What does the SpaceX acquisition mean for Cursor?&lt;/h2&gt;
&lt;p&gt;On August 14, 2026, SpaceX closed its $60 billion acquisition of Cursor. The Grok integration is not an announced plan anymore, it has already shipped: Cursor and SpaceX’s AI division trained Grok 4.5 and 4.6 together, and Cursor now lists Grok next to Composer as one of its own models. For the Claude and GPT models inside Cursor, nothing has changed so far. But Cursor’s own models now compete with the third-party models it resells, and Cursor’s Auto mode decides which model handles your request. I would not panic, but I would &lt;a href=&quot;https://lukasvonkunhardt.com/how-to-avoid-locking-yourself-into-one-ai-provider/&quot;&gt;keep my work portable&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-about-codex&quot;&gt;What about Codex?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Codex is the same pattern as OpenAI one more time: a harness built by OpenAI around its own GPT models.&lt;/em&gt; Codex is gaining a lot of momentum, and lately people are switching at a really high rate from Claude Code to Codex. The switch is mostly due to &lt;a href=&quot;https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/&quot;&gt;GPT-5.6 Luna being reduced in price by 80%&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;OpenAI’s chart of the Artificial Analysis intelligence index against cost per task: GPT-5.6 Luna sits alone in the cheap and smart corner&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 641px) 641px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;641&quot; height=&quot;594&quot; src=&quot;https://lukasvonkunhardt.com/_astro/cost%20per%20task%20vs%20intelligance%20score_%20gpt%205.6%20luna%20dominates.DCc7GECU_Z1megLW.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;So right now Codex is actually the best bang-for-the-buck solution. It also offers an IDE extension for VS Code.&lt;/p&gt;
&lt;p&gt;OpenAI’s Codex lead posted that &lt;a href=&quot;https://x.com/thsottiaux/status/2087706104814023111&quot;&gt;Codex and ChatGPT Work together crossed 15 million weekly active users&lt;/a&gt; in August 2026, up from 10 million in late July. So they grew by 50% in about two weeks!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;OpenAI’s growth chart of ChatGPT Work and Codex weekly active users: 2 million in March 2026, 6 million on July 12, 10 million on July 21&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1254px) 1254px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1254&quot; height=&quot;1254&quot; src=&quot;https://lukasvonkunhardt.com/_astro/Codex%20and%20ChatGPT%20Work%20weekly%20active%20users%20growth%20chart.VzOFCkpz_Z1j5vSy.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-do-i-actually-use&quot;&gt;What do I actually use?&lt;/h2&gt;
&lt;p&gt;Right now I work in &lt;a href=&quot;https://lukasvonkunhardt.com/obsidian-claude-code-setup/&quot;&gt;Obsidian and Claude Code&lt;/a&gt;. The cornerstone is Obsidian: it stores all information, all my work results, and the interchangeable part is the language model. I can basically switch to Codex tomorrow (and probably will, due to pricing), because anything I ever worked out with Claude or other AI agents is persisted in my Obsidian vault.&lt;/p&gt;</content:encoded></item><item><title>When Can You Run a Claude Fable-Level LLM Locally on a MacBook?</title><link>https://lukasvonkunhardt.com/fable-quality-model-on-a-macbook/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/fable-quality-model-on-a-macbook/</guid><description>If the trend holds, you will be able to run a model with Fable 5 capabilities on your MacBook around May 2027. Open source matched Opus 4.5 in nine months.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If the trend holds, you will be able to run a model with Fable 5 capabilities on your MacBook around &lt;strong&gt;may 2027&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It took nine months for open source to catch up with Claude Opus 4.5: &lt;strong&gt;Qwen3.8-27B&lt;/strong&gt; came out last week, has matching performance on coding benchmarks, and runs on a MacBook.&lt;/p&gt;
&lt;p&gt;The rate at which open source models catch up to closed source is increasing: It took 33 months for open source to match GPT 3, and since open source has been catching up faster and faster.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;HP3bwx-WgAE5yWD.jpeg&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2048px) 2048px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2048&quot; height=&quot;1180&quot; src=&quot;https://lukasvonkunhardt.com/_astro/HP3bwx-WgAE5yWD.B1Rw9cne_1S2Dif.webp&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;source: &lt;a href=&quot;https://x.com/peterom/status/2089067438658760786&quot;&gt;https://x.com/peterom/status/2089067438658760786&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If we expect the trend to hold, we could expect a Fable 5 like model in about 9-11 months (March to May next year).&lt;/p&gt;
&lt;p&gt;You would still need an expensive machine to run a model like this, but a ~$4,000 MacBook Pro with 64 GB of RAM would allow you to generate about 20–30 tokens per second, with &lt;strong&gt;no API bill&lt;/strong&gt;, and &lt;strong&gt;nothing leaves your machine&lt;/strong&gt;. (4000 $ doesn’t seem that crazy if I look at my Claude bill…)&lt;/p&gt;
&lt;p&gt;BUT: now that Fable 5 is out, I don’t see myself using Opus 4.5 anymore - the Fable 5 release reset my expectations. At the same time I probably COULD use a less capable model for a lot of tasks. It’s just convenient to always use the most capable model if the budget allows for it.&lt;/p&gt;</content:encoded></item><item><title>Karpathy&apos;s LLM Wiki: A Markdown Memory System for Claude Code</title><link>https://lukasvonkunhardt.com/my-favorite-memory-system-for-llms/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/my-favorite-memory-system-for-llms/</guid><description>The model is rarely the bottleneck on a long project, the missing context is. I use Karpathy&apos;s &quot;LLM wiki&quot; system so the model maintains its own context (and mine). Here&apos;s how it works.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Context is the ceiling for language model usefulness in a project, more so than model intelligence - the more complex a project becomes, the more tedious it gets to keep the model in the loop. The good news is: Language models are actually great at structuring and keeping track of information, they just have to be told to do so.&lt;/p&gt;
&lt;p&gt;I have been using Karpathy’s “LLM wiki” approach for each of my projects for the past couple months, which works so well that I now use the models to help ME understand relevant context for projects rather than the other way around.&lt;/p&gt;
&lt;p&gt;The system is quite simple and easy to understand: you try to gather as many relevant sources as possible, and have each one be “ingested” by the model to build a knowledge graph consisting of linked markdown files, similar to a fandom wiki.&lt;/p&gt;
&lt;p&gt;The sources go in a sources directory, which is immutable to the model and serves as the ground truth. Each time a new source is ingested by the model, it updates the wiki with any new concepts, topics or people.&lt;/p&gt;
&lt;p&gt;The wiki is treated as a first class priority, no question is answered without thorough investigation, any information gathered in the course of the project has to be persisted somewhere in it.&lt;/p&gt;
&lt;p&gt;I can easily access and reference this information with a markdown reader like &lt;a href=&quot;https://lukasvonkunhardt.com/obsidian-claude-code-setup/&quot;&gt;Obsidian&lt;/a&gt;, although the wiki is meant to be largely untouched by the human and is maintained and read mostly by the LLM.&lt;/p&gt;
&lt;p&gt;I wrapped Karpathy’s instructions in four small skills: &lt;code&gt;/create-wiki&lt;/code&gt; to scaffold it, &lt;code&gt;/ingest&lt;/code&gt; to fold in new sources, &lt;code&gt;/query&lt;/code&gt; to answer from the wiki, and &lt;code&gt;/lint&lt;/code&gt; to clean it up periodically, this allows me to set this up in any project in seconds.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Drawing that shows folder structure for Karpathy LLM wiki&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2555px) 2555px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2555&quot; height=&quot;2308&quot; src=&quot;https://lukasvonkunhardt.com/_astro/karpathy_wiki%201.CpFWzBy__1eGtqF.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;These are available as reusable skills: install them with this command, &lt;code&gt;npx skills add lukaskunhardt/skills&lt;/code&gt;, or grab them on &lt;a href=&quot;https://github.com/lukaskunhardt/skills&quot;&gt;GitHub&lt;/a&gt;. The &lt;a href=&quot;https://lukasvonkunhardt.com/the-simplest-way-to-improve-llm-answers/&quot;&gt;persona prompting skill&lt;/a&gt; is in the same repo.&lt;/p&gt;</content:encoded></item><item><title>How to Avoid AI Vendor Lock-In: Keep Your Work in Files, Not Chats</title><link>https://lukasvonkunhardt.com/how-to-avoid-locking-yourself-into-one-ai-provider/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/how-to-avoid-locking-yourself-into-one-ai-provider/</guid><description>Most people do their AI work in chat, where it stays on the provider&apos;s server. Keep it in your own files instead and you can switch models anytime - and your work keeps getting more useful as they improve.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most model providers give you two ways to work: a “chat” and a “code” environment. Most people just use chat, but for anything you’ll come back to later the code environment is actually the better choice, because it allows you to work in your own file system.&lt;/p&gt;
&lt;p&gt;The name “code” is a bit misleading, because the difference isn’t about doing more or less programming (I use it for many tasks that have nothing to do with coding), but about where your work ends up.&lt;/p&gt;
&lt;p&gt;In chat, everything you produce lives in the chat history on the provider’s server. All the input (files you drag in) and outputs (files the model creates for you) and the whole conversation in between is accessible to you only through the chat interface.&lt;/p&gt;
&lt;p&gt;With a coding agent you point it at a folder on your own machine, and all the inputs and outputs are just files sitting on your disk.&lt;/p&gt;
&lt;p&gt;This matters when you want to switch providers. If they raise their prices, or another model gets better, or &lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot;&gt;their best model is no longer accessible outside of the US&lt;/a&gt;, you’ll likely want to move. If all your work lives inside one provider’s chat interface that’s difficult to do. (The other answer is &lt;a href=&quot;https://lukasvonkunhardt.com/fable-quality-model-on-a-macbook/&quot;&gt;running a Claude-level model on your own machine&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;US Government suspends anthropics fable model&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1496px) 1496px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1496&quot; height=&quot;428&quot; src=&quot;https://lukasvonkunhardt.com/_astro/fable_suspended.DX3nNPcW_1znHGS.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;So the thing you want is to keep the model separate from your files. The model is just a processor you’re renting, the files are the part you actually care about, so it makes sense to store them somewhere that doesn’t depend on which model you happen to be using this month.&lt;/p&gt;
&lt;p&gt;There’s a great essay called “&lt;a href=&quot;https://stephango.com/file-over-app&quot;&gt;file over app&lt;/a&gt;” by Obsidian’s founder Steph Ango that makes the argument: store your work in simple formats you control instead of locking it inside whatever app created it. A few reasons this helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;if an app or provider goes out of business, your work is still there&lt;/li&gt;
&lt;li&gt;your files are on your own machine, so you can get to them offline&lt;/li&gt;
&lt;li&gt;multiple programs / users / AI agents can read and write the same file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last part I find especially useful when working together with AI, because it allows me to actually work &lt;strong&gt;alongside&lt;/strong&gt; whatever AI agent I am using. My usual setup is Obsidian open on the right half of my screen and Claude or Codex on the left, both pointed at the same project folder. That setup has its own post now: &lt;a href=&quot;https://lukasvonkunhardt.com/obsidian-claude-code-setup/&quot;&gt;Obsidian and Claude Code, the setup I use every day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I can edit the same documents the agent is working on, and my changes show up for it immediately. Sometimes I use Claude, sometimes Codex - there’s no switching penalty, because neither of them is holding onto anything.&lt;/p&gt;
&lt;p&gt;Another problem I often see is that &lt;strong&gt;people don’t make files at all&lt;/strong&gt;. When the model produces a good analysis, or you come to a decision, or you finally figure something out, that shouldn’t just stay sitting in the conversation, but be pulled out into its own document.&lt;/p&gt;
&lt;p&gt;If you come back a month later you just open a folder, rather than finding the relevant chat and then re-reading a transcript trying to find the part that mattered.&lt;/p&gt;
&lt;p&gt;So the rule I follow is pretty simple: &lt;strong&gt;if it’s a one-off thing I’ll never need again, I use chat&lt;/strong&gt; (chat basically replaces googling something). &lt;strong&gt;If it’s something I’ll come back to, I’ll use a coding agent in a dedicated folder.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I start a project I make a new folder, put the relevant context in it, and point the agent at it. When the agent produces something useful I have it write the result back into the folder as a document, table, or whatever digital artifact is most appropriate. Next time I don’t have to find the right provider and then the right chat, I just open the Projects folder.&lt;/p&gt;
&lt;p&gt;Another advantage of keeping your files separate from the model is that they keep getting more useful over time as the models improve.&lt;/p&gt;
&lt;p&gt;Models change fast, and the one you use today probably won’t be the one you use next month. But your project folder mostly just sits there and grows slowly as you keep adding to it.&lt;/p&gt;
&lt;p&gt;This matters most for the things you only touch now and then. You might open your tax return folder once a year, and by the time you come back the models have changed completely. If everything lived in last year’s chat you’d be starting over. If it lives in files, you just point this year’s model at it.&lt;/p&gt;
&lt;p&gt;The way I think about it is that you have two things growing independently. One is your &lt;strong&gt;context&lt;/strong&gt;, which is all the information and insights you’ve gathered on a project. The other is &lt;strong&gt;model capability&lt;/strong&gt;. And what you get out of it is roughly the two multiplied together.&lt;/p&gt;
&lt;p&gt;The same folder of tax documents is worth more next year than this year, even if you didn’t change anything, just because the model working on it got better. This year the model might not be able to actually file your taxes for you. Next year it probably can - and when it can, it can do it against everything you already gathered.&lt;/p&gt;
&lt;p&gt;I try to think of myself as a context hoarder. The job is to gather &lt;strong&gt;everything&lt;/strong&gt; a future model would find useful and get it out of my head and out of the chat history into structured files in the right folder.&lt;/p&gt;
&lt;p&gt;That way my own knowledge and whatever the model figures out along the way both end up in the same place - not stuck in my brain, not stuck in a transcript, just sitting in files, waiting for whatever model comes next.&lt;/p&gt;</content:encoded></item><item><title>Working with agents now feels like email, not chat</title><link>https://lukasvonkunhardt.com/don-t-try-to-delegate-your-understanding/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/don-t-try-to-delegate-your-understanding/</guid><description>Working with frontier models now feels less like chat and more like email - fire off a task, pick up another. That works for tasks you can verify, but building an understanding needs a real-time thinking partner.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been developing headaches and brain fog when working with Claude lately - and it’s actually due to an improvement: It can now work for long stretches without me.&lt;/p&gt;
&lt;p&gt;Working with recent frontier models with subagent heavy “workflows” enabled feels less like a chat and more like email:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Long complicated instructions in … wait … long complicated result out.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Obviously I don’t sit there waiting for the agents to finish, but I pick up another todo in a new tab. The more complex the tasks I work on, the longer the waiting time, the more tasks I end up multitasking on.&lt;/p&gt;
&lt;p&gt;I end up waiting for one of the 4-5 Claude instances I have working simultaneously to finish.&lt;/p&gt;
&lt;p&gt;This is mentally taxing because it forces me to continuously have to task switch, and the outputs I have to verify tend to be more complex.&lt;/p&gt;
&lt;p&gt;Increasing the model’s output quality by having it work on the problems for longer made the interaction &lt;strong&gt;asynchronous&lt;/strong&gt; in nature.&lt;/p&gt;
&lt;p&gt;Depending on the type of task this type of async interaction is either exactly what I want, or counterproductive.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Quote: “You can outsource your intelligence but you cannot outsource your understanding” Kache&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1208px) 1208px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1208&quot; height=&quot;424&quot; src=&quot;https://lukasvonkunhardt.com/_astro/cant_outsource_understanding.BswI0ZjB_WPR3Q.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;I split the tasks I have to work on in two categories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tasks where I know what good output looks like&lt;/li&gt;
&lt;li&gt;Tasks where I have to &lt;strong&gt;figure out&lt;/strong&gt; what good output looks like&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the desired output is already known, and it’s easily verifiable, I want to delegate the task to the model to disappear for an hour and report back to me when it’s done.&lt;/p&gt;
&lt;p&gt;But for all other tasks, tasks where I am &lt;strong&gt;actively building an understanding of what it is that I want to build&lt;/strong&gt;, I actually want a conversational interaction with speed that is as close to realtime as possible. That way I can stay focussed on working on one thing at a time.&lt;/p&gt;
&lt;p&gt;So there are essentially two modes I need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One “&lt;strong&gt;thinking partner&lt;/strong&gt;” interactive mode where responses are as fast as possible, with sufficient output quality to augment my ability to research and implement while staying inside the same thread of thought&lt;/li&gt;
&lt;li&gt;One “&lt;strong&gt;fire and forget&lt;/strong&gt;” delegation mode that finishes tasks for me that I can easily verify with little to no effort (currently either Claude / Codex)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The thinking partner is used to build an understanding, and this is arguably the most important part. LLMs make it trivial to create huge amounts of “volume”, the quality is more than ever the distinguishing feature.&lt;/p&gt;
&lt;p&gt;The only way to output better quality work than other people using the same models is to augment the model in some area it’s lacking, so it’s necessary to understand the problem as deeply as possible.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;I experimented with different models and currently use Cursor’s Composer 2.5 model for these types of interactive tasks, which is incredibly fast.&lt;/p&gt;
&lt;p&gt;I analyzed the average response time from the last couple of days and it was around 25 seconds. My average Claude session (with subagents) is about 80 seconds, up to an average of 6 minutes in sessions with subagents. I did the full measurement later: &lt;a href=&quot;https://lukasvonkunhardt.com/claude-code-vs-cursor/&quot;&gt;Claude Code vs Cursor&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Best Mac Dictation App: Free, Local, and Offline</title><link>https://lukasvonkunhardt.com/tool-recommendation-best-dictation-for-mac/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/tool-recommendation-best-dictation-for-mac/</guid><description>After months of testing dictation tools (Whisperflow, MacWhisper, Snaply.ai), here&apos;s the one I settled on - and why M-chip Macs make local transcription a no-brainer.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dictating Text is about 3 to 4 times faster than typing, so it really makes sense to give it a shot if you haven’t tried it already.&lt;/p&gt;
&lt;p&gt;If you happen to have any one of the recent Mac Models with M-Chip (even M1), they contain a really powerful neural engine, that enables them to be &lt;em&gt;unusually&lt;/em&gt; good at running powerful transcription models locally, there’s really no need to use cloud services.&lt;/p&gt;
&lt;p&gt;I tried a lot of different dictation tools over the last couple months. E.g., Whisperflow, Mac Whisper, and now Snaply.ai, and I have settled on &lt;a href=&quot;https://snaply.ai&quot;&gt;Snaply.ai &lt;/a&gt; as the best one. (no affiliation)&lt;/p&gt;
&lt;p&gt;Winning points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it’s completely free for individuals, no featured paywall gated&lt;/li&gt;
&lt;li&gt;runs on your own mac (works offline)&lt;/li&gt;
&lt;li&gt;clean speaker separation when transcribing meetings, and does so without joining your calls&lt;/li&gt;
&lt;li&gt;european company (founded in zurich, founder is from Trieste, Italy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caveats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whisperflow does do more accurate transcription, but Snaply.ai does it well enough for the difference to be too small to matter.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Don&apos;t make this personal</title><link>https://lukasvonkunhardt.com/don-t-make-this-personal/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/don-t-make-this-personal/</guid><description>The model can&apos;t flatter a character who isn&apos;t there. Why removing &apos;you&apos; and &apos;I&apos; from a prompt gets you a better answer.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The reason LLMs behave sycophantically when answering your questions is that you unnecessarily cast yourself as a &lt;strong&gt;character in a relationship&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Consider this question:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Gemini thinks the uber for dogfoods idea is fantastic&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1562px) 1562px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1562&quot; height=&quot;686&quot; src=&quot;https://lukasvonkunhardt.com/_astro/dog_food_bad_question.CCuPLlFt_ZJM3Vb.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;This idea is clearly far from “fantastic”, so Gemini is now giving you bad advice.&lt;/p&gt;
&lt;p&gt;The answer is a product not only of the model’s understanding of &lt;strong&gt;terrible startup ideas,&lt;/strong&gt; but also by its understanding of &lt;strong&gt;relationships&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Because of how the question is framed, the model now simulates an interaction between &lt;strong&gt;you&lt;/strong&gt;, the person excitedly pitching their “great” idea, and an &lt;strong&gt;I&lt;/strong&gt;, which doesn’t exist - it will now start emulating some personality, and suddenly interpersonal dynamics come into play. (You wouldn’t want to break your friends heart and tell them their startup idea sucks?)&lt;/p&gt;
&lt;p&gt;This issue is inherent to the way the models are created. After pretraining (where the models learn to predict the next word), the model goes through a second phase - called RLHF (reinforcement learning from human feedback). In this phase, the model is fine-tuned to give answers that people &lt;strong&gt;rate highly.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The issues is, humans tend to like being affirmed more than to be challenged, hence the models develop a tendency to be &lt;strong&gt;suckups&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let’s compare our previous attempt to this question:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;If you take out the personal relationship, it becomes clearer the idea is bad&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1554px) 1554px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1554&quot; height=&quot;660&quot; src=&quot;https://lukasvonkunhardt.com/_astro/dog_food_expert_question._CUw3Mil_Z2rIWA0.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;The model clearly didn’t spare your feelings in any way in this response, mostly because &lt;strong&gt;it didn’t know&lt;/strong&gt; it was your idea in the first place.&lt;/p&gt;
&lt;p&gt;If you ask the same question to an LLM and a human, LLMs will provide &lt;a href=&quot;https://www.science.org/doi/10.1126/science.aec8352&quot;&gt;50% more&lt;/a&gt; sycophantic answers than humans - they will take your side, even when you are wrong.&lt;/p&gt;
&lt;p&gt;The model trying to guess what you &lt;strong&gt;want to hear&lt;/strong&gt; does significantly worsen the truthfulness of its output.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Try removing the “you” and the “I” from the question, so that  the model isn’t tempted to flatter you&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;video class=&quot;embed-video&quot; width=&quot;498&quot; height=&quot;320&quot; autoplay loop muted playsinline preload=&quot;metadata&quot; aria-label=&quot;Gríma Wormtongue from Lord of the Rings leaning close to King Théoden with a fawning grin, captioned “You’re absolutely right!”&quot; data-email-gif=&quot;wormtongue.gif&quot;&gt;&lt;source src=&quot;https://lukasvonkunhardt.com/_assets/wormtongue.mp4&quot; type=&quot;video/mp4&quot;&gt;&lt;/video&gt;&lt;/p&gt;</content:encoded></item><item><title>Expert Role Prompting: How to Get Better Answers From ChatGPT and Claude</title><link>https://lukasvonkunhardt.com/the-simplest-way-to-improve-llm-answers/</link><guid isPermaLink="true">https://lukasvonkunhardt.com/the-simplest-way-to-improve-llm-answers/</guid><description>There is a pretty simple way to get better answers out of Claude / ChatGPT. I first got this idea from a Karpathy post, since then I use this approach daily.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you ask a language model a question, you’ll get a prediction of the average of the internet’s answer - whatever is said most often in reply to a question like yours.&lt;/p&gt;
&lt;p&gt;You improve the output with one additional step: you force the model to first reason about which &lt;strong&gt;specific person&lt;/strong&gt; would be best to answer this question, and then answer as them.&lt;/p&gt;
&lt;p&gt;This works so well because experts in each field usually have a large public body of writing: books, lecture transcripts, blogs, etc. that went into the model’s training data, so the model has a great understanding of how an expert thinks - and simulating “what does Paul Graham think about my startup idea” pulls far better answers than the crowd average.&lt;/p&gt;
&lt;p&gt;I initially got the idea for this approach from &lt;a href=&quot;https://x.com/karpathy/status/1997731268969304070?lang=en&quot;&gt;this&lt;/a&gt; Karpathy tweet:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Andrej Karpathy’s post on framing prompts around which expert would answer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1198px) 1198px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1198&quot; height=&quot;1048&quot; src=&quot;https://lukasvonkunhardt.com/_astro/karpathy_expert_framing.vf8H_za9_j6yF2.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Since then I have experimented with it and found that the best way to use this framing is to have the model really pick one &lt;strong&gt;specific&lt;/strong&gt; person, or a panel of specific people to discuss this, and first explain &lt;strong&gt;why&lt;/strong&gt; the chosen people are particularly well suited to answer this question. This seems to reinforce the character simulation.&lt;/p&gt;
&lt;p&gt;I turned this into a reusable skill. Install it with one command, &lt;code&gt;npx skills add lukaskunhardt/skills&lt;/code&gt;, or grab it on &lt;a href=&quot;https://github.com/lukaskunhardt/skills&quot;&gt;GitHub&lt;/a&gt;. The same repo has the &lt;a href=&quot;https://lukasvonkunhardt.com/my-favorite-memory-system-for-llms/&quot;&gt;LLM wiki skills&lt;/a&gt; I use for project memory.&lt;/p&gt;</content:encoded></item></channel></rss>