Ollama. On your terms.
Chat on this PC by default. Connect a GPU you rented over SSH when you want one. The app names that machine while prompts leave this PC.
Install
Microsoft Store → InControl-Desktop
Build
git clone … && dotnet restore && dotnet build
Run
dotnet run --project src/InControl.App
Features
Local AI chat that respects your privacy.
This PC first
Prompts stay here until you connect a rental. No account and no telemetry.
SSH, not a public port
The rental runs Ollama on 127.0.0.1. InControl opens an SSH local forward. It does not publish port 11434.
Native Windows
WinUI 3 with Fluent Design. Looks and feels like a real Windows app, not an Electron wrapper.
Ollama
One HTTP API, on this PC or at the near end of the tunnel. The tool-URL allowlist is a different screen.
Projects and notes
File sessions under projects with their own instructions. Notes you ask it to remember come along with the next message that matches them.
Voice on this PC
Kokoro reads replies aloud on this PC. The voice model downloads once, the first time voice is needed.
Web search, when you want it
Turn on Web and a model that can use tools searches DuckDuckGo and reads public pages. Each reply lists its searches.
Attach files
Add text and code files to a message, or images for a vision model. Use the paperclip or drop files on the composer.
NuGet libraries
Core and Inference packages available on NuGet for building your own local AI integrations.
Installation
Microsoft Store
# Search the Store for InControl-Desktop, or open
# https://apps.microsoft.com/detail/9N1FG39JWF83
# Windows 10 version 2004 or later, x64.
# The package carries its own .NET and Windows App SDK.
# Then install Ollama on this PC
# https://ollama.com/download
ollama pull llama3.2 From Source
git clone https://github.com/mcp-tool-shop-org/incontrol.git
cd incontrol
dotnet restore
dotnet build
# Run (Ollama on this PC)
dotnet run --project src/InControl.App NuGet Packages
Add packages
dotnet add package InControl.Core
dotnet add package InControl.Inference Use in your app
// Stream chat with a local LLM
var client = inferenceClientFactory.GetClient();
var request = ChatRequest.Simple("llama3.2", "Hello");
await foreach (var token in client.StreamChatAsync(request))
{
Console.Write(token);
}