I can tell you what I use… and if that is horribly wrong, hopefully someone else will be sufficiently horrified reading that and will correct me. ;)
On Windows (you probably also have that?) I enabled WSL and installed Ubuntu. In Ubuntu I created a user called “claude”, and under this user I installed Claude Code. In Windows, I installed Windows Terminal from Microsoft Store.
If any of these steps sound complicated, the web chatbot can navigate you through them! I don’t know if there is an equivalent for chatgpt, but the web chatbot can tell you that, too. And the web chatbot can also tell you how to enable sandbox mode.
You do not have to be a Linux pro. The idea is that installing Ubuntu in WSL creates a computer inside your computer—and you let the AI work on the inner computer. However, the outer computer is still reachable from the inside one via ”/mnt/c” (perhaps there is a way to remove that? no idea). Never ask the AI to do something on the outer computer; tell it to only use its ”/home/claude” directory. (The sandbox mode should enforce this. It will probably also keep asking you tons of questions, that may be annoying.)
How does it work: I start the Windows Terminal, and open an Ubuntu tab (so I have a command-line access to the inner computer). I type “claude” for the first time, or “claude—continue” every following time. Then I communicate to Claude Code using that window in the Windows Terminal.
How can I copy the files into / out of the inner computer? In Explorer, type something like “\wsl$\Ubuntu\home\claude” into the address bar, and it will show you the inner computer’s disk. You can copy there.
...the cool part is that if you did not understand any of this, you can just copy the entire comment into a web chatbot, and ask it to explain it, or to navigate you step by step, or to propose improvements. Basically, use the web chatbot in order to set up the system on your machine.
My computer is 11 years old, and even back then it was a cheap machine, so… it works… I can’t say how quickly because I have nothing to compare it with (never ran Claude Code on a different computer) and I can watch a movie while Claude Code is working, depending on the movie resolution. I’d guess it consumes about 50% of the computer’s capacity, so it is possible to do some simple tasks in parallel. It is faster than using a virtual machine. I am okay using it like “I spend 20 minutes talking to Claude Code about what to do in the next iteration, then I say do it, and I do something else, like watch a movie or do the dishes”.
There is one part of your question I forgot to answer, and that is specifically about Python. (I usually work in Java, so I tell Claude Code to make me a ZIP file that I can unzip and run on Windows. Then I copy the ZIP file and it works.) I am not that experienced in Python, but it seems to me like a good idea to use “venv”, which is a virtual Python environment, in other words a system of libraries installed specifically for the purpose of your app. The thing is that pure Python does not have a good way to handle library versions: if you tell it to install library X, it will install the latest version of it. If you need an older version, because the new one is not backwards compatible, you are screwed. You are even more screwed if you have two Python programs who each require a different version of the same library.
The solution to this problem is the “venv” which basically installs the libraries for your program in a separate place, as opposed to directly in the Python installation. Advantage: solves the “what if the latest version is not the best” problem. Disadvantage: slightly more space on disk (installing the libraries separately for each project, even if not necessary), and you need to explicitly start the environment before starting the program.
What I would suggest: Tell Claude Code to create you a ZIP fie containing the generate Python program and two Windows BAT files—one to create the virtual environment (unless it already exists) and install there all libraries required by your program (unless they are already installed); the idea is that this BAT can be used repeatedly if the list of libraries later changes. The second BAT file to activate the virtual environment and start the Python program. And then, the usage is just: double-click “init.bat”, wait until done, then double-click “run.bat” and use the Python program.
You can probably ignore this, because for the freshly written code the latest version will almost certainly be the right one. This is something you may worry about in long term, or if you try to publish the code (when publishing Python programs one should specify the versions of the libraries… somehow).
What’s the speed or latency like? Is it very resource intensive running Ubuntu inside of Windows like that?
depends on your application. WSL overhead can be as low as 1% or as high as 90%. most heavy compute is done on the cloud these days (including claude CLI/codex inference), so locally you likely won’t notice if you’re not short on RAM. some of that worst case performance comes from interaction between Linux and Windows filesystems, so avoid that.
I can tell you what I use… and if that is horribly wrong, hopefully someone else will be sufficiently horrified reading that and will correct me. ;)
On Windows (you probably also have that?) I enabled WSL and installed Ubuntu. In Ubuntu I created a user called “claude”, and under this user I installed Claude Code. In Windows, I installed Windows Terminal from Microsoft Store.
If any of these steps sound complicated, the web chatbot can navigate you through them! I don’t know if there is an equivalent for chatgpt, but the web chatbot can tell you that, too. And the web chatbot can also tell you how to enable sandbox mode.
You do not have to be a Linux pro. The idea is that installing Ubuntu in WSL creates a computer inside your computer—and you let the AI work on the inner computer. However, the outer computer is still reachable from the inside one via ”/mnt/c” (perhaps there is a way to remove that? no idea). Never ask the AI to do something on the outer computer; tell it to only use its ”/home/claude” directory. (The sandbox mode should enforce this. It will probably also keep asking you tons of questions, that may be annoying.)
How does it work: I start the Windows Terminal, and open an Ubuntu tab (so I have a command-line access to the inner computer). I type “claude” for the first time, or “claude—continue” every following time. Then I communicate to Claude Code using that window in the Windows Terminal.
How can I copy the files into / out of the inner computer? In Explorer, type something like “\wsl$\Ubuntu\home\claude” into the address bar, and it will show you the inner computer’s disk. You can copy there.
...the cool part is that if you did not understand any of this, you can just copy the entire comment into a web chatbot, and ask it to explain it, or to navigate you step by step, or to propose improvements. Basically, use the web chatbot in order to set up the system on your machine.
Thanks, that’s a very clear write up. I didn’t even need to ask a chatbot to understand it.
What’s the speed or latency like? Is it very resource intensive running Ubuntu inside of Windows like that?
My computer is 11 years old, and even back then it was a cheap machine, so… it works… I can’t say how quickly because I have nothing to compare it with (never ran Claude Code on a different computer) and I can watch a movie while Claude Code is working, depending on the movie resolution. I’d guess it consumes about 50% of the computer’s capacity, so it is possible to do some simple tasks in parallel. It is faster than using a virtual machine. I am okay using it like “I spend 20 minutes talking to Claude Code about what to do in the next iteration, then I say do it, and I do something else, like watch a movie or do the dishes”.
There is one part of your question I forgot to answer, and that is specifically about Python. (I usually work in Java, so I tell Claude Code to make me a ZIP file that I can unzip and run on Windows. Then I copy the ZIP file and it works.) I am not that experienced in Python, but it seems to me like a good idea to use “venv”, which is a virtual Python environment, in other words a system of libraries installed specifically for the purpose of your app. The thing is that pure Python does not have a good way to handle library versions: if you tell it to install library X, it will install the latest version of it. If you need an older version, because the new one is not backwards compatible, you are screwed. You are even more screwed if you have two Python programs who each require a different version of the same library.
The solution to this problem is the “venv” which basically installs the libraries for your program in a separate place, as opposed to directly in the Python installation. Advantage: solves the “what if the latest version is not the best” problem. Disadvantage: slightly more space on disk (installing the libraries separately for each project, even if not necessary), and you need to explicitly start the environment before starting the program.
What I would suggest: Tell Claude Code to create you a ZIP fie containing the generate Python program and two Windows BAT files—one to create the virtual environment (unless it already exists) and install there all libraries required by your program (unless they are already installed); the idea is that this BAT can be used repeatedly if the list of libraries later changes. The second BAT file to activate the virtual environment and start the Python program. And then, the usage is just: double-click “init.bat”, wait until done, then double-click “run.bat” and use the Python program.
You can probably ignore this, because for the freshly written code the latest version will almost certainly be the right one. This is something you may worry about in long term, or if you try to publish the code (when publishing Python programs one should specify the versions of the libraries… somehow).
depends on your application. WSL overhead can be as low as 1% or as high as 90%. most heavy compute is done on the cloud these days (including claude CLI/codex inference), so locally you likely won’t notice if you’re not short on RAM. some of that worst case performance comes from interaction between Linux and Windows filesystems, so avoid that.