Outlier is a desktop app for Apple Silicon Macs — a private, offline alternative to cloud AI like Claude and ChatGPT. It reads your codebase, edits files, runs the tests, researches the web, and keeps working on long jobs unattended — all on your own machine, with no caps and no data centre.
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]: """Merge overlapping intervals. Args: intervals: List of [start, end] pairs (inclusive). Returns: List of merged non-overlapping intervals. """ if not intervals: return [] # Sort by start time sorted_intervals = sorted(intervals, key=lambda x: x[0]) merged = [sorted_intervals[0]] for current in sorted_intervals[1:]: last = merged[-1] # Overlap or adjacency: merge them if current[0] <= last[1]: merged[-1] = [last[0], max(last[1], current[1])] else: merged.append(current) return merged
The edge case most implementations get wrong: adjacent intervals (e.g., [1, 2] and [2, 3]). Many implementations use < instead of <=, which fails to merge intervals that touch at a single point.
Real output, Outlier Core on an M1 Ultra — 21 socket samples during this answer, 0 left the Mac
Local model inference runs entirely on your Apple Silicon chip. Your prompts, files, code, and chat history stay on your disk, under your control. Only model downloads and optional web search ever touch the network — and only when you choose. No telemetry on inference. The open-weight models are auditable on HuggingFace.
$ lsof -a -p $(pgrep -x outlier-cli) -i -n -P outlier-c 62303 22u IPv4 TCP 127.0.0.1:8766->127.0.0.1:56293 (ESTABLISHED) outlier-c 62303 25u IPv4 TCP 127.0.0.1:8766 (LISTEN) # sampled 21× across the 33s answer shown above — sockets leaving this Mac: 0
-a is load-bearing: without it lsof ORs its filters and returns every socket on the machine instead — 328 when this was captured, and a different number each time you run it, because it counts every other process too. That is how a check like this can quietly prove nothing.Everything below ships today, in a signed, notarized Mac app.
Streaming token output, persistent local history, rename / delete / pin, Markdown export — and a running cost display that stays at $0.00.
File read/write and shell execution behind permission modes, with a plan-review card, repair loop and audit log.
Several engines queried in parallel — DuckDuckGo, Mojeek and Wikipedia for the general web, plus OpenAlex, Crossref, Stack Exchange and Hacker News — each best-effort, so one of them blocking does not fail the search. Sources are classified (encyclopedia, official, docs, community) and every claim carries an inline citation with the excerpt it came from.
Persistent memory in SQLite — facts carry a category, a confidence score, a confirmed flag and the chat they came from, so you can see why Outlier believes something. Exportable and importable as JSON.
Upload an image or a screenshot and query it directly through Outlier Vision — reading text, diagrams and charts in the picture, all on your Mac. Text-layer PDFs are extracted too; scanned PDFs are not, because that needs a separate OCR pass the app does not ship yet.
A macOS arm64 DMG, accepted by Apple notarization and Gatekeeper, distributed via GitHub Releases with a built-in auto-updater.
Three things Outlier does that a chat box does not. Same window, same offline machine, nothing leaving it.
search_files — find the upload clientread_file — src/upload/client.tsedit_file — add retry with backoffrun_bash — npm testapprove, approve_edited,
deny — so a plan can be edited before it runs, and the
tool names are the real registry of 19. The example task is illustrative;
the mechanism is not.⌘N new · Esc stop · ⌘⇧M hideFree is useful immediately with Nano + Lite. Pro adds the other four tiers — Quick, Core, Vision, and the 397B Plus tier. There is one model per memory bracket — 6, 12, 16, 24 and 64 GB — so the tier you want is simply the largest your Mac can hold. (Not sure what yours has? Apple menu → About This Mac — the “Memory” line is the number to match.) The single exception is Vision 3.8, which shares Core’s 24 GB bracket because it is the only tier that reads images; on text and code the two are level, so Core stays the default and you switch only when you have a screenshot or a diagram to hand it.
| Tier | Plan | Best for | Disk / RAM | Speed / note |
|---|---|---|---|---|
Outlier Nano Qwen3.5-4B · MLX 4-bit |
Free | Fast iteration, lightweight chat, small Macs | 2.37 GB · 6 GB min RAM | ~30–70 tok/s (Mac-dependent) |
Outlier Lite Qwen3.5-9B · MLX 4-bit |
Free | Daily local AI, writing, search, Q&A | 5.04 GB · 12 GB min RAM | Mac-dependent |
Outlier Quick Gemma-4-26B MoE |
Pro | Thinking-mode reasoning, not a code substitute | 15.61 GB · 16 GB min RAM | Mac-dependent |
Outlier Core Qwen3.6-27B · text-only |
Pro | Best default quality, reasoning, coding | 15.13 GB · 24 GB min RAM | High-end quality, fully offline |
Outlier Plus Qwen3.5-397B-A17B · V9 paged |
Pro | Largest local tier · 397B MoE on high-end Macs. Slow on purpose-built hardware: 1.59 tok/s measured at the shipped K=20 setting on an M1 Ultra, 60–90s to first token on 64 GB. Use Core for everyday work. | 209 GB disk · 64 GB min, 128 GB recommended | For depth, not for speed |
Outlier Vision 3.8 Qwen3.8-27B · images + text |
Pro | Images, screenshots, diagrams — and plain text questions too | 15.5 GB · 24 GB min RAM | 17.2 tok/s |
Quick / Core / Vision / Plus 397B are all included with Pro, which is a one-time purchase. Coding used to be a separate Code tier on the same weights; it is now a mode of Core rather than a second download. Quick is useful for reasoning, not positioned as a coding tier.
Benchmarks for the shipping tiers, measured on this hardware against the shipping build. Where a tier has not been measured, the cell says so rather than carrying an estimate.
Dot size follows disk footprint. Plus is absent because it has no MMLU run on the shipping 4-bit build — the figure this chart plots. Vision 3.8 has one, and it is in the table: it shares Core’s 24 GB bracket, so on an axis of required memory it would sit on top of Core rather than tell you anything new.
| Tier | MMLU | HumanEval | SWE-bench (agentic) | Decode | Disk |
|---|---|---|---|---|---|
Outlier Nano Qwen3.5-4B · MLX 4-bit |
52.0% | Not measured | Not measured | 71.7 tok/s | 2.37 GB |
Outlier Lite Qwen3.5-9B · MLX 4-bit |
77.0% | Not measured | Not measured | 53.4 tok/s | 5.04 GB |
Outlier Quick Gemma-4-26B MoE |
81.0% | Not measured | 0% | 43.6 tok/s | 15.61 GB |
Outlier Core Qwen3.6-27B · text-only |
89.5% | 95.1% 156/164 |
46.0% | 20.7 tok/s | 15.13 GB |
Outlier Plus Qwen3.5-397B-A17B · V9 paged |
Not measured — the 209 GB weights are not on the test machine. Plus itself runs here at 1.59 tok/s, 14.04 GB peak during generation, streaming experts from SSD; MMLU awaits a re-download, not a hardware limit. | Not measured | Not measured | 1.59 tok/s | 209 GB |
Outlier Vision 3.8 Qwen3.8-27B · images + text |
82.5% | 94.5% 155/164 |
Not measured | 17.2 tok/s | 15.5 GB |
Decode speed on this M1 Ultra, log scale — the tiers span 45×, so a linear axis would flatten Plus to nothing. These figures come from an earlier measurement round (2026-05-20) than the MMLU and SWE-bench numbers above, which were taken 2026-08-09; the dataset file says so too. Quick is blank for the same reason Plus is absent from the chart above: no run on the shipping build. Vision 3.8 is measured but shares Core’s memory bracket, so it appears in the table rather than the chart. Speed varies by Mac.
How these were run — HumanEval: all 164 problems, greedy (temperature 0), execution-graded against the official test suite on the same v1.11.804 build; only Core and Vision 3.8 have been run. Read it as a comparison BETWEEN those two tiers, not as a headline — HumanEval dates from 2021 and is almost certainly inside any 2026 model’s training data, so the absolute number partly measures memorisation. What it does show is that the two 24 GB tiers are level on single-function coding, 156/164 against 155/164, a tie on a paired test, while MMLU separates them by 7 points. How these were run — MMLU: n=200, deterministic stratified sample across 57 subjects, greedy (temperature 0, fixed seed), thinking off, on an M1 Ultra. All five were re-run on 2026-08-24 through the shipping v1.11.804 path — so every figure here comes from one regime, on one build. The page now links 1.11.827. Between the benchmark build and it, 1.11.822 removed a retired tier from the first-run picker, fixed a dialog that promised a fallback and then did nothing, and changed how the code agent explains one refusal: asking it for a shell loop used to return "binary not in allowlist: 'while'", naming a program that does not exist. 1.11.823 then allowed the code agent to run strings and tr: a bench run on the previous build spent 3 of its 17 tool calls being refused on exactly those two while inspecting a binary, which is the one job strings exists for. 1.11.824 then fixed a defect that had stopped the code agent adding a function to an existing file at all: the description of its own edit tool demonstrated a call without the required file path, so every attempt was rejected and the agent reported that it could not do it. Measured on the same task, 0 of 4 runs succeeded before the fix and 5 of 5 after, verified against the built app rather than the source. It does not yet reliably commit that edit — the agent sometimes makes the change, says it is committing, and stops; that defect is open and the edit is usually already on disk. 1.11.825 then stopped the agent damaging a file it edited: when the model's tool call was slightly malformed — a dropped closing tag, which small models do routinely — the recovery that salvages the call could carry that tag, and the chat template's end-of-turn marker, into the contents it wrote, leaving a line like return a - b</args></tool> on disk and a file that no longer parses. Recovering a malformed call is still right; carrying the envelope into the file was not. Unlike the two figures above, this one is not a measured rate — the damage was intermittent, and what changed is that every string a tool receives is now cut at the first such marker, the file path included. 1.11.826 changed how the app updates rather than how it codes: an update that had downloaded used to wait for the next time you opened Outlier, so a copy left running never picked it up — it now restarts itself once you are not mid-task, and writes every check to ~/.outlier/updater.log. 1.11.827 then fixed how it decides you are not using it: 826 waited 20 seconds after your last keystroke, which is what reading a long reply looks like, so it now waits until the window has been in the background for five minutes or the machine itself has gone untouched, never while a reply is on screen in front of you — and it puts your window back where it was, which nothing had ever done. None of that reaches the MMLU or HumanEval figures: those are single-shot and greedy, with no agent in the loop. The SWE-bench figure is the one to watch, and not only because it is an agent run — in our own bench the agent read that misleading refusal and recovered by guessing, so a message it can act on is exactly the kind of change that could move an agent score. It has not been re-run since v1.11.804. The SWE-bench figure is a different case and we should say so plainly — it is an agent run, and the last two items in that list are changes to the agent, so that number could move on a re-run. It has not been re-run since v1.11.804, and this sentence will keep saying so until it has. They previously came from two: Nano, Lite, Quick and Core on v1.11.757, Vision 3.8 on a later build. Core and Vision 3.8 reproduced their earlier scores question for question; Nano, Lite and Quick each moved by one or two questions, which is what the re-run was for. At n=200 the 95% interval is roughly ±7 points near 50% and ±4 near 90%, so Lite and Quick are a statistical tie. SWE-bench Verified, blind — the agent gets the issue and the repo at base commit, no test patch, no file hint, no pass/fail feedback — graded by the official swebench.harness Docker evaluation: 23 of 50 on a fixed sample (seed 42), seven of which produced no patch at all and are counted as unresolved, ±14 points at this size. An older build scored 18 of 40 on 2026-06-25 — statistically the same, though the harness changed a great deal in between. Quick: 0 of 30 on our internal firm30 set. Decode measured on an M1 Ultra, V9 paged engine; your Mac will differ.
Why this table is unusual — checked on their live pages 2026-08-13, Ollama, LM Studio, Jan and GPT4All publish no MMLU, HumanEval or SWE-bench figure at all. That is not a criticism — the scores belong to the upstream models — but it means nobody in this category tells you what a local model will actually get right. These are ours to be held to.
Every tier is sized to real Apple Silicon memory. Start free on a MacBook Air; scale all the way to the 397B Plus tier on a Mac Studio.
Apple Silicon only (M1 / M2 / M3 / M4). Intel Macs are not supported.
Choosing the machine first? M1 vs M4 compares memory bandwidth, Mac mini vs Mac Studio compares 48 GB against 96 GB, and Mac vs PC covers why unified memory decides the model size.
The cloud tools proved the workflow: coding agents, long-context research, always-on help. The problem is the meter. Outlier is building the local version — Mac-native, private by default, and not capped by an Outlier token allowance.
| Cloud AI tools | Cloud coding agents | Outlier Free | Outlier Pro | |
|---|---|---|---|---|
| Monthly cost | $20+ | Often much higher | $0 | $249 once |
| Usage model | Server-side limits | Usage windows / caps | No token meter | No token meter |
| Where inference runs | Provider cloud | Provider cloud | Your Mac | Your Mac |
| Privacy default | Remote request | Remote repo / context | Local by default | Local by default |
| Offline use | No | No | Yes, once downloaded | Yes, once downloaded |
| Current maturity | Very mature | Very mature | Useful beta | Ambitious beta |
Honest framing: Outlier is not claiming parity with the best cloud coding agents today. The beta is the foundation; Pro and Founders revenue funds the climb toward that experience, locally. See the raw data: 54-prompt Outlier vs Claude · Mac local-AI benchmarks · streaming-engine tok/s · RAM → model size.
No investors and no API margins to protect — which is why Free is genuinely free. Pro includes everything: all six tiers and every feature.
Local, private AI for everyday use — no subscription required.
Pay once, own Pro forever — the lowest price local Pro will ever be.
14-day money-back guarantee — just email matt@outlier.host.
Cloud inference needs data centers, networking, cooling, and ever-growing GPU clusters. Local inference uses the Apple Silicon chip you already own — no round-trip, no per-token meter. What a cloud prompt actually travels to.
of AI compute is inference — the calls made every time someone uses a cloud model, now drawing more grid electricity than training did (MIT Tech Review, 2025).
Local models create no Outlier cloud-inference bill and no cloud token meter.
Apple Silicon unified memory is efficient for local inference versus shipping every prompt to a server.
Not every local query is automatically cleaner — hardware, model size and electricity source all matter. The point is directional: move everyday inference onto devices people already own, and the load on cloud infrastructure drops.
The best environmental feature isn’t a green badge. It’s a model good enough, small enough and fast enough that people actually choose to run it locally.
Runs locally. Belongs to you. Never hits a token cap mid-task.
Requires a Mac with Apple Silicon (M1, M2, M3, or M4) — Intel Macs are not supported. macOS 12+.
Open weights ship constantly and most of them are not worth your disk. When one is — a model that beats a tier Outlier already has, on hardware you already own — we say so, and what it replaces. That is the only reason we will email you.
Your address and which of our sites you sent it from. No IP, no user agent, no referer, and no tracking pixel on this form — it sends nothing until you press the button. One click to leave, on every email. Privacy.