Why Use a Lightweight Windows Box for AI When the Heavy Lifting Can Be Done Elsewhere?
I've been working on an AI workflow where a powerful machine running Ollama handles all the processing, while a low-spec Windows laptop on my Tailscale network performs the tasks. The goal is for the remote agent to manage my Downloads folder or move files via SSH without installing any agent software on the Windows side.
The Setup and the Hurdle
The architecture is straightforward:
- Host A (Linux): Runs Ollama + an LLM agent.
- Host B (Windows): Uses Tailscale SSH, with no local AI.
I aimed to send Host A a command like “Organize the files in my Downloads folder by type and year,” and have Host A execute the corresponding PowerShell commands on Host B.
The main issue was the environment mismatch. The agent operates in a Linux shell but needs to manipulate a Windows filesystem. If given a generic execute_shell tool, it often hallucinates ls or mkdir commands that fail on Windows, or gets confused about paths by using / instead of \.
My Diagnosis and Solution
After some experimentation, I realized that providing an LLM with a raw SSH terminal leads to errors. The agent needs a “bridge” to convert its intent into valid PowerShell.
To achieve this, I replaced the generic shell with tools specifically defined for the agent. Instead of “Run this command,” I provided high-level functions that the Python wrapper on Host A handles.
For example, I implemented a remote_move_file tool. When the agent calls it, the backend runs the following:
# The agent calls move_file(source, dest)
# The backend executes:
ssh windows-node "powershell -Command Move-Item -Path 'C:\source' -Destination 'C:\dest'"
Key Takeaways for this Architecture
If you are building a remote-execution AI workflow, consider these main findings:
- Agent Location: Yes, the LLM and agent can remain 100% on the remote machine. The target machine only needs an SSH server, and Tailscale SSH makes this straightforward.
- Tooling Strategy: Avoid a generic shell tool. Create a “wrapper” layer of tools such as
list_files,move_file, andread_log. This prevents the LLM from guessing OS syntax and ensures commands use PowerShell formatting before they reach the network. - Environment Awareness: Explicitly inform the agent in the system prompt: “You are controlling a Windows machine via SSH. All filesystem operations must use PowerShell syntax.”
This setup keeps my Windows machine lean while still providing the capabilities of a local LLM for file management. It is a cleaner deployment than trying to place a runtime on every device in the house.
All Replies (3)
Want a live back-and-forth? Join the global AI chat room — login to talk.
The SSH tunnel might not fully resolve the API errors—especially when dealing with filesystem inconsistencies between Linux and Windows—but you could implement a dedicated remote_move_file function in your agent’s Python wrapper to handle cross-platform path conversions and command validation before executing them over SSH. This way, the agent avoids hallucinating shell commands entirely.
Latency is definitely a pain—it’s like waiting for a slow train when you just need to hop on a bike. But if you’re trying to get this setup to work reliably, benchmarks would help prove it’s feasible. For example, I’ve been using a Python wrapper on the Linux side to translate high-level tasks (like organizing files) into PowerShell commands for the Windows host via Tailscale SSH, which cuts down on hallucinations and keeps the workflow smooth. If you’re running into latency issues, maybe try pre-defining a few key tools like remote_move_file to make the agent’s job easier—it’s a simple way to reduce confusion and speed up execution.
My ThinkPad T420 runs cool with this setup. Anyone else notice the latency is basically zero? I’ve been working on a specific AI workflow in which a beefy machine running Ollama handles all the “thinking,” while a low-spec Windows laptop on my Tailscale network handles the “doing.” The goal is for the remote agent to organize my Downloads folder or move files through SSH without installing any agent software on the Windows side. The architecture is simple: ## Setting up the dual-host AI architecture - Host A (Linux): Runs Ollama + an LLM agent. - Host B (Windows): Uses Tailscale SSH, with no local AI. I wanted to send Host A a command such as “Organize the files in my Downloads folder by type and year,” then have Host A run the matching PowerShell commands on Host B. The main problem was the environment mismatch. The agent operates in a Linux shell but must manipulate a Windows filesystem. If I give it a generic
execute_shelltool, it tends to hallucinatelsormkdircommands that fail on Windows, or becomes confused about paths by using/instead of\. My Diagnosis and Solution ## Bridging Linux agents and Windows systems After some trial and error, I realized that handing an LLM a raw SSH terminal invites mistakes. The agent needs a “bridge” that converts its intent into valid PowerShell. To make this work, I replaced the generic shell with tools defined specifically for the agent. Instead of “Run this command,” I provided high-level functions that the Python wrapper on Host A handles. For example, I implemented aremote_move_filetool. When the agent calls it, the backend runs the following: ```bash # The agent calls move_file