Outlier  ›  learn

What is 127.0.0.1:8766? It's Outlier, running on your Mac

Quick answer
  • 127.0.0.1:8766 is Outlier. When you open the app, it starts a small program called outlier-cli, and that program listens on port 8766. The app's window talks to it there.
  • 127.0.0.1 means this Mac. Other computers, phones and the internet cannot connect to it. To check, run lsof -nP -iTCP:8766 -sTCP:LISTEN in Terminal. If it lists outlier-c on 127.0.0.1:8766, that is Outlier.
  • Paste the address into a browser and you get a short message saying the engine only answers the Outlier app. That is the engine working, not an error to fix.
  • Quit Outlier and the engine goes with it. If the app crashes, the engine checks every 5 seconds whether the app is still there and exits when it is not.

Checked on 2026-10-12 on a Mac Studio with an M1 Ultra, macOS 26.3.1, running Outlier 1.11.916. Every command below is real output from that Mac. The details are in the receipts at the bottom.

Outlier Pro: $249 once · or 4 × $62.25

Download free Buy Pro

Free to start (Nano and Lite). macOS 26+, Apple silicon. Refund window: 30 days, no questions asked.

I make Outlier, so this is my address. If you found 127.0.0.1:8766 in a firewall log, a browser history, a Terminal listing or an error message, and Outlier is installed on that Mac, it is almost certainly ours. This page shows you how to be sure instead of taking my word for it, and what stops anyone else from using it.

What it is

Outlier is two programs working together. One is the window you type in. The other is the engine, a program called outlier-cli. It loads the model, runs it on your Apple Silicon chip and writes the answer. The window hands your message to the engine over a local web connection, and the engine streams the answer back.

127.0.0.1 is the address a computer uses to talk to itself. 8766 is the port, a numbered door on that address, and the engine listens at that door. Because the address is 127.0.0.1, the connection starts and ends on your Mac. It never goes out over Wi-Fi or Ethernet.

How to check that it is Outlier

A port number does not belong to one program. Any app can take a free port, so ask the Mac who has this one. Open Terminal and run:

$ lsof -nP -iTCP:8766 -sTCP:LISTEN
COMMAND    PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
outlier-c 9949 you           20u  IPv4 0xdae7a285267902b0      0t0  TCP 127.0.0.1:8766 (LISTEN)

Read the first and last columns. outlier-c is outlier-cli, cut to nine characters by lsof. 127.0.0.1:8766 (LISTEN) means it accepts connections only from this Mac. A program open to your whole network would show *:8766 instead.

To see where that program lives, give ps its process number (the second column, 9949 here):

$ ps -p 9949 -o comm=
/Applications/Outlier.app/Contents/Resources/outlier-cli/outlier-cli

That path is inside Outlier.app. If lsof names a different program, or the path points somewhere else, the port is not Outlier's on your Mac, and nothing on this page describes it.

If lsof prints nothing, nobody is listening, which usually means Outlier is not running right now. To check that an empty answer is not simply a broken command, ask about a port nothing uses:

$ lsof -nP -iTCP:8999 -sTCP:LISTEN; echo $?
1

Nothing printed, and the exit status is 1. So an empty result means no listener.

What you see if you open it in a browser

Paste http://127.0.0.1:8766/ into Safari and you get a line of text, not a website. Here is the same request from curl, with the date and server headers left out:

$ curl -i http://127.0.0.1:8766/
HTTP/1.1 401 Unauthorized
content-type: application/json
content-length: 174

{"detail":"This Outlier engine only answers the Outlier app on this Mac. A program on this Mac can send the key in ~/.outlier/local_api_token as the X-Outlier-Token header."}

401 means unauthorized. The engine is telling a stranger that it only talks to the Outlier app. The root address has no page to show.

One path answers without the key, /health, so the app (and anyone troubleshooting) can see that the engine is up. These are three fields from its reply:

$ curl -s http://127.0.0.1:8766/health | python3 -c 'import json,sys; d=json.load(sys.stdin); print({k:d[k] for k in ("status","local_key","version")})'
{'status': 'ok', 'local_key': 'required', 'version': '1.11.916'}

local_key: required means this engine refuses everything else unless the request carries the key. More on that below.

What stops other people and other websites from using it

Four things sit between the engine and everyone else. I tested each one against the running engine on my Mac.

  1. It listens on this Mac only. The lsof line above says 127.0.0.1, and netstat agrees. When I connected to the Mac's own network address on that port, the connection was refused. The same request to 127.0.0.1 got a reply.
  2. It only answers requests addressed to this Mac. A web page can trick a browser into treating the page's own name as 127.0.0.1, a trick called DNS rebinding. Those requests still carry the page's name in the Host header. The engine answers only when the Host is 127.0.0.1, localhost, [::1] or the Outlier window's own local name, and sends back a 421 for anything else.
  3. Other websites get no CORS permission. A request that claimed to come from https://example.com came back with no Access-Control-Allow-Origin header, so a browser will not hand the reply to that page.
  4. Everything else needs a key. The app makes a random key each time it starts the engine, saves it in ~/.outlier/local_api_token where only your account can read it, and sends it with each request. Without it you get the 401 above.

Here is the evidence for the first three:

$ netstat -an -p tcp | grep -E '\.8766 .*LISTEN'
tcp4       0      0  127.0.0.1.8766         *.*                    LISTEN
$ curl -sS -o /dev/null http://<mac-network-address>:8766/health
curl: (7) Failed to connect to <mac-network-address> port 8766 after 1 ms: Couldn't connect to server
$ curl -i -H 'Host: example.com' http://127.0.0.1:8766/health
HTTP/1.1 421 Misdirected Request
content-type: application/json
content-length: 77

{"detail":"This Outlier engine only answers requests addressed to this Mac."}
$ curl -s -D - -o /dev/null -H 'Origin: https://example.com' http://127.0.0.1:8766/health | grep -i -c access-control-allow-origin
0

The last command counts the lines with that header in the reply. Zero.

For the key file I only looked at its permissions and its timestamp. I never opened it. The engine started at 01:14:18 on 11 October, and the file was last written at 01:14:18 as well:

$ ls -l ~/.outlier/local_api_token | awk '{print $1}'
-rw-------
$ stat -f '%Sm' -t '%Y-%m-%d %H:%M:%S' ~/.outlier/local_api_token
2026-10-11 01:14:18
$ ps -p 9949 -o lstart=
Sun Oct 11 01:14:18 2026

The key does not help against a program you run yourself, outside a sandbox. That program can read the file the way it can read the rest of your home folder. The key is there for the other cases: a web page, another user account on the Mac, a sandboxed app.

If you use Outlier as an API

The same port serves Outlier's OpenAI-compatible API at http://127.0.0.1:8766/v1. It is a Pro feature. You switch it on in Settings, under Advanced, and it has its own key, separate from the engine key above. On the free plan, requests to /v1 come back 402. Without a key, a request gets this:

$ curl -i http://127.0.0.1:8766/v1/models
HTTP/1.1 401 Unauthorized
content-type: application/json
content-length: 114

{"error":{"message":"Missing Bearer API key","type":"authentication_error","code":"missing_api_key","param":null}}

The steps and working code for the OpenAI SDK are on the developers page and in how to run a local OpenAI API on a Mac.

If a tool of yours says connection refused on 127.0.0.1:8766, either Outlier is not running or you just opened it and the engine is still starting. Open Outlier, wait for the chat window to load, and try again.

How to stop it

Quit Outlier with Command-Q. The engine belongs to the app. If the app quits or crashes, the engine checks every 5 seconds whether the app is still there, and exits when it is gone. Run the lsof command again afterwards. It should print nothing.

If you want the longer version of why none of this puts your chats on the internet, is local AI safe covers it, and can AI run without the internet covers what still needs a connection.

What I did not test

Frequently asked questions

What is 127.0.0.1:8766?

It is the address of Outlier's engine on your own Mac. When you open Outlier, it starts a program called outlier-cli that listens on port 8766 of 127.0.0.1, the address a computer uses for itself. The Outlier window sends your messages to that program and shows what comes back.

Is port 8766 open to the internet?

No. The engine listens on 127.0.0.1 only, so lsof shows 127.0.0.1:8766 (LISTEN) and not *:8766. On my Mac, connecting to the Mac's own network address on port 8766 was refused, while the same request to 127.0.0.1 got a reply.

Why does outlier-cli listen on a port at all?

Outlier is two programs: the window you type in and the engine that runs the model. They talk over a local web connection, and the port is the numbered door the engine listens on. The connection starts and ends on your Mac.

Does 127.0.0.1:8766 send my chats anywhere?

No. That address only connects programs on your Mac to each other. Outlier uses the internet for other things, such as downloading a model or running a web search when you ask for one, and those are separate connections.

How do I turn it off?

Quit Outlier with Command-Q. The engine belongs to the app: if the app quits or crashes, the engine checks every 5 seconds whether the app is still there and exits when it is not.

Receipts: Every command ran on 2026-10-12, around 16:10 UTC, on a Mac Studio with an M1 Ultra and 64 GB, macOS 26.3.1, against the installed Outlier 1.11.916. The engine's own /health reply says version 1.11.916. I only read: I sent no chat and changed no setting. In the lsof line the user name is replaced with "you", and in the curl output the date and server headers are left out. The network address in the connection test is replaced with a placeholder. The key file's contents were never read. How the key, the Host check, the CORS rule, the 5-second app check and the API routes are written comes from reading the engine's source for 1.11.916. The results above are what the running engine did when I asked.

Try Outlier free

Free: Nano + Lite. Pro: $249 once · or 4 × $62.25. macOS 26+. In the US, Klarna or Afterpay at checkout: four payments, two weeks apart. Refund window: 30 days, no questions asked.

Download free (290 MB) Buy Pro

New models worth running