Your models,
running on your machine.

No account · No internet · No data leaving your system

A private, air-gapped AI workspace built for Microsoft Foundry Local — chat, documents, prompts, memory and models, running entirely on your own hardware.

Verify it, don't trust it.

Strong claims, so each one is checkable.

Nothing is collected

No telemetry, no analytics, no account, no API key.

You can watch it

Every request is logged, in full, where you can read it. They all go to 127.0.0.1.

Your voice stays here

Dictation runs on a speech model on this machine. What you say lands in the message box for you to read before anything is sent.

One thing leaves, and it announces itself

Reading a page you asked for is the only outbound act. The badge turns amber and names the host while it happens. Otherwise, pull the cable and carry on.

A look inside

Real screenshots, on real hardware. Nothing tidied up afterwards — click any of them to see it full size.

Horizon reading a news page and answering it, while a red banner reads Listening and dictated words appear in the message box.
A page fetched and summarised, and the next question spoken rather than typed. The banner and clock are there because the microphone is open.
A reply from qwen3-0.6b with an expanded panel headed Thought for 8.5s showing the model's working, and the answer beneath it.
A model that shows its working, kept apart from the answer, with the time it took.
A dialog headed Shut down Horizon explaining that the model is held in memory by the Foundry service, with a checkbox to also stop that service.
Closing the window would orphan the model in memory. Horizon says so, and offers to give it back.

There is more than fits here. The user guide walks through the lot.

Is this the right tool for you?

Worth being honest early.

Use Open WebUI or AnythingLLM if…

…you want one interface across many providers — OpenAI, Anthropic, Ollama, Foundry Local. Both are mature and have far more features than this. Point them at Foundry Local's endpoint and they work.

Use Horizon if…

…you want the opposite trade: one runtime, understood properly. It starts and stops the service, loads and unloads models, finds the port again when Foundry restarts, and gives the memory back when you are done. No Docker, no Electron.

How it works

All of it local. Your browser never talks to Foundry directly — it only talks to the small Node.js server in the project folder.

browser
  ↳ 127.0.0.1:3000   Horizon's Node.js server
      ↳ 127.0.0.1:<auto>   Foundry REST API  →  the model   CPU, GPU or NPU
      ↳ pseudo terminal   foundry transcribe  →  your microphone   dictation only

Foundry picks a new port on every restart. Horizon finds it again mid-session, without losing your conversation.

Speech takes the second branch because Foundry offers it only as a command, not over HTTP. Foundry opens the microphone, not the page, so your browser shows no recording indicator — Horizon shows its own.

Install

Two one-time installs, then a double-click. Pick whichever column sounds like you.

The simple way

no terminal

If you have never used a command line, follow this.

1

Install the two pieces

Download and run each installer. Both links go to the official source:

Accept the defaults in both, and restart if either asks.

2

Download Horizon

On the project page, click the green Code button, then Download ZIP.

3

Unblock it, then extract

Windows marks files that come from the internet. Clearing it on the ZIP saves clearing it on every file inside.

Right-click the ZIP → Properties → tick Unblock → OK. Then right-click → Extract All… into a folder that belongs to you, such as Documents\horizon.

No Unblock box? Nothing to clear — carry on.

4

Double-click Start Horizon.bat

A small black window opens — that is the server, and it stays open while Horizon runs. Your browser opens at http://127.0.0.1:3000.

The page walks you through choosing and downloading a model. If Windows says “Windows protected your PC”, click More info → Run anyway.

Do not close that black window to quit. It is the server: closing it kills Horizon mid-request and leaves the model orphaned in memory. Use the power button in Horizon for a safe exit.

For developers

git

Cloning skips the unblock step — Git-created files are not tagged.

1

Dependencies

winget install Microsoft.FoundryLocal
winget install OpenJS.NodeJS.LTS

No winget? It ships with Windows 11 and recent Windows 10, but not every machine has it. Use the installers in the column on the left instead — same software, same sources.

2

Clone and run

git clone https://github.com/itstejaswi/horizon
cd horizon
.\"Start Horizon.bat"

One dependency: node-pty, which opens a terminal for the speech command and does nothing else. It arrives ready-built for Windows — no compiler, no build tools, nothing to set up.

3

Or use the PowerShell launcher

.\scripts\Start-Horizon.ps1

Same thing, but it also starts Foundry and pre-loads the model so the first message is quick. -WebPort, -ModelAlias and -NoBrowser are accepted.

4

Tests and tooling

npm test     # regression tests, no model needed
npm run check
npm run build

The suite runs against a stub — no model, no GPU, no network.

What you need

RequirementDetail
WindowsWindows 10 or Windows 11, on Intel/AMD or Arm. macOS support is on the roadmap, not here yet.
PowerShell5.1 or later — already included with Windows
Node.js18 or later. The one dependency ships ready-built, so npm install compiles nothing.
Foundry LocalInstalled separately. Horizon starts and stops it, but does not install it.
RAMMinimum 8 GB.
Disk200 MB for Horizon and its runtime, plus 700 MB for the speech model if you want dictation, plus the size of the model you choose.
InternetTo install, and to download each model once.
MicrophoneOnly for dictation. Off until you switch it on.