Ragon

A coding helper that runs on your own machine.
It solved about 69 of every 100 test problems.

68 of 100 real programming problems from SWE-bench Verified, solved without the internet on one DGX Spark, at about 48 tokens a second. (A token is a small piece of a word; the machine writes about 48 of them each second.) Ragon is a coding helper, a chat assistant and a desktop app, and all of it runs on your own GB10. Nothing is sent to a cloud. There is no account, no bill for each use, and no tracking. How we measured it

Ragon — Work · ~/project
Qwen3.8-27B NVFP4 · 127.0.0.1:8000 /airgapped on
The signup tests fail when the email is blank. Find out why, and fix it.
✔ ragon-code def validate_signup → src/auth/signup.py:42
✔ pytest tests/test_signup.py -q → 1 failed, 14 passed
✔ apply_patch src/auth/signup.py +12 -2 · tests/test_signup.py +8
✔ pytest tests/test_signup.py -q → 15 passed in 0.41s
A string of only spaces got past the check, because the check ran before the spaces were removed. I now strip the spaces first, in src/auth/signup.py, and added a test so it stays fixed.
src/auth/signup.py (+12 -2) · tests/test_signup.py (+8 -0)
68/100SWE-bench Verified problems solved, without the internet, on one DGX Spark
~48 tok/swords per second while it works on code, one task at a time
0connections that call home, checked by the egress audit
$0per token, for as long as you use it

New in 1.7: the desktop app on a Mac, Linux and Windows

Latest release →
v1.7.2

The ragon-serve engine, the ScaleSearch drafter, and a Forgejo on each node

The optional ragon-serve runs Qwen3.8-27B on the GB10 with a 262K-token memory. Every node gets its own private Forgejo (a place to keep git repositories), and the Telegram Mini App works directly on your repositories.

v1.7.2 →
v1.7.1

Host sockets closed, a local file index, and LoRA adapters

Inside the command sandbox, the Docker, containerd, D-Bus and systemd sockets are closed (a socket is a door a program can use to give orders to the system). ragon-docs now reads scanned pages and office documents too, and the server can serve signed LoRA adapters (small add-ons that change what a model is good at).

v1.7.1 →
v1.7.0

The desktop app on macOS, Linux and Windows, and Night Shift best-of-N

Ask and Work share one desktop window, with a review pane, worktrees and terminal tabs. /night add --best-of N runs a task N times and keeps the best try.

v1.7.0 →

Also in 1.7.0: Night Shift can try one task several times and keep the best try (/night add --best-of N). One machine can run several Signal bridges. And a computer that sees two GB10s on one network can choose between them without forgetting the one it already knows. Release notes and downloads.

Install

$ curl -fsSL https://github.com/dreamference/ragon/releases/latest/download/install.sh | bash
$ ragon-admin server start      # downloads the model once (~20 GB), then starts it
$ cd ~/your-project && ragon    # that's all

This works on the NVIDIA DGX Spark and on every other GB10 machine. The script checks each download against the release's checksums, and shows you each sudo command before it runs it. You can read the script first.

Mac and Linux clients

Your other computers borrow the GB10's model over your home or office network. On a Mac or another Linux machine, the same command installs ragon, the part you type into. It finds the GB10 by itself.

From 1.7.2 it also puts the desktop app in Applications on a Mac, ready to open. Add --no-app if you don't want it.

Windows client preview

> irm https://github.com/dreamference/ragon/releases/latest/download/install.ps1 | iex

Type this in PowerShell. It needs no administrator rights (from 1.7.2 that holds for the desktop app too). Windows then asks you once to set up a walled-off place where the helper runs commands. The installer is not signed yet, so Smart App Control must be off. Read the script.

Other ways to install

The release page also has the Mac disk image (Ragon-<version>-arm64-preview.dmg, or x64 for Intel) and the Windows installer (Ragon-Setup-<version>-x64.exe, or arm64). They are unsigned previews, so when you download them in a browser, your system stops them the first time. Before you open one, check it against the release's signed SHA256SUMS file.

  • macOS 15 and later: drag Ragon to Applications and open it once. Then go to System Settings › Privacy & Security and press Open Anyway. On macOS 14 and earlier, Control-click the app and choose Open.
  • Windows: SmartScreen › More info › Run anyway. Smart App Control must be off.

Runs on every GB10

  • NVIDIA DGX Spark
  • Acer Veriton GN100
  • ASUS Ascent GX10
  • Dell Pro Max with GB10
  • Gigabyte TOP ATOM
  • HP ZGX Nano
  • Lenovo ThinkStation PGX
  • MSI EdgeXpert

All of them have the same chip, the same 128 GB of memory shared by the processor and the graphics, and DGX OS 7, so one installer covers them. We develop and test Ragon every day on the ASUS Ascent GX10. The others are covered by our automated tests, but we don't run them by hand.

Try these first

Or leave work for tonight with /night add <task>. Ragon goes through the list while you sleep, each task on its own git branch, and you look over the branches in the morning.

$ ragon "explain this repository to me like I'm new on the team"
# reads the code index (ragon-code outline, def, refs, callers) instead of grepping,
# then walks you through the layout, the entry points and how they connect

🧭 A code index

A list of where things are defined and who uses them across your project, so the helper can look code up and not search for it by guessing.

🔎 Web search and page fetch

Search goes through a private SearXNG on your own machine, so there is no search account and no key to get. The questions still go out to the web to be answered.

🌙 Night Shift

Type /night add <task> before bed. By morning each task is done on its own git branch. Nothing is merged or pushed unless you do it.

What you get

The desktop app in 1.7.0 puts both ways of using Ragon in one window: Ask, where you put questions, and Work, where the helper edits your code. Work has a box to type tasks in (you can attach files, skills and commands), a pane to look over changes before you keep or undo them, separate working copies of your code (worktrees), terminal tabs, and a file tree beside the conversation. On your other computers the app talks to your GB10, which it finds on your network.

ragon · ragon-code · ragon-docs

🖥️ ragon, the helper in your terminal

It reads your project, runs commands and tests, edits code, and asks you first before anything risky.

$ ragon worktree on   # new sessions start in their own worktree
$ cd ~/your-project && ragon
> /airgapped on      # no network for any command it runs
> /worktree apply    # bring the changes back to your checkout

🧩 The skills you already have

Skills you wrote for Claude Code, Gemini CLI, OpenClaw or Hermes work here as they are.

ragon app · ragon web

🪟 Desktop app preview

Ask and Work in one window, on the GB10, a Mac, Linux or Windows. The helper's sessions ask your approval, and there is a pane for reviewing changes, separate working copies, and undo. New in 1.7.

Questions with web search, image search and speaking instead of typing, and your helper sessions too, from this machine or from a phone you have paired with it. It all uses the same model on your machine.

macOS preview

From 1.7.2, the install command puts Ragon in Applications next to ragon, and you open it like any other app. It runs on Apple silicon and Intel, with macOS 12 or later. ragon update updates it.

Linux

On the GB10, the file ragon_1.7.0_arm64.deb installs the app, its menu entry and the ragon-app command, along with the sandbox profile it needs. (A sandbox is a closed room for running commands, so they can't touch the rest of the machine.)

$ sudo apt install ./ragon_1.7.0_arm64.deb

Then open it from the application menu, or type ragon app. More.

Windows 11 preview

From 1.7.2, the PowerShell line installs the app too, for you alone and without administrator rights, with an entry in the Start menu. Settings → Apps removes it, and ragon update updates it. Smart App Control must be off.

ragon-admin mcp · ragon signal · ragon chat

JetBrains, VS Code, and your phone

You can connect JetBrains or VS Code through stdio MCP (ragon-admin mcp). You can also send messages to your GB10 from Signal (to yourself, in Note to Self), from Telegram (with the Mini App for working on repositories), and from Matrix over Tailscale. Every phone link is off until you turn it on. Signal is end-to-end encrypted, and Matrix runs on a server of your own. Telegram messages pass through Telegram's servers unencrypted, so use it only for things you would not mind sharing that way.

$ ragon-admin mcp            # stdio MCP for JetBrains and VS Code
$ ragon signal setup         # Note to Self only, off until linked
$ ragon chat telegram setup  # topics and the Mini App

📬 Gmail, Drive, Calendar preview

Read-only, through a sign-in that stays on your machine. It is switched off completely with /airgapped on.

Your code stays on your desk, and you can check that it does

A cloud coding helper sends your source code to computers that belong to someone else. Ragon sends it nowhere. The model runs on your GB10, and nothing in Ragon calls home: no usage counts, no measurements, no sign-in, not even "anonymous" crash reports. So you can use it on code you are not allowed to upload, such as a client's work, protected data or a product not yet released.

One command runs a real Ragon session under strace, a tool that watches every call a program makes, and then lists each network connection the session opened:

$ ragon-admin audit egress
✔ Egress audit: pass
Network destinations:
   127.0.0.1:8000     29x  model server
   127.0.0.1:8767      1x  Gmail search service
DNS queries: none
Networked git commands: none

All of it stayed on 127.0.0.1, which is the machine talking to itself. There was not one DNS lookup (a DNS lookup is asking the internet for the address of a name).

Want a firm guarantee?

Type /airgapped on. Every command the helper runs then gets an empty network from the Linux kernel. That is not a polite request to the model. There is simply no network to reach. At the same time, Full Access, which would get around the sandbox, is refused.

What can leave, and when

Only what you or the helper ask for: a web search (through a private SearXNG that runs on your own machine, though the search itself still goes out to the web), a fetch of a web page, a read-only request to a Google account you have connected, or a check for updates. With /airgapped on, none of these happens.

Why Ragon

🔒 Private

The model, your code, your questions and its answers stay on the machine where they are.

  • No account, no tracking
  • An egress audit you can run again
  • /airgapped on, enforced by the kernel

⚡ Fast, and no bill

Working on code~48 tok/s
Writing code69 tok/s
JSON84 tok/s
Prose32 tok/s
Reading code~1,800 tok/s
Memory of the conversation262K

These are speeds for one task at a time on a GB10. The model uses a trick called speculative decoding: a small helper guesses several words ahead and the big model checks all the guesses in one go. "Working on code" is measured over real helper sessions. Writing code, JSON and prose are each measured on that kind of output. The last line is how much text it can hold in mind at once, 262K tokens, which is a few hundred pages. Run four helpers at once if you like. There is no quota and no "please wait".

✨ Little to set up

  • No tuning: we chose the model, the memory size, the low-level code and the speculative decoding for the GB10.
  • It should not freeze your machine: it checks the machine before loading the model, and watches memory while it loads.
  • Your other computers find it on your network.
  • An update is one command: ragon update.

Ragon and cloud coding helpers

Cloud coding helpersRagon
Where your code goesTheir computersNowhere
Account neededYesNo
Price for each tokenYou pay for each oneNothing
Limits on how much you can useYesNo
Works with the network cable pulled (after the first download)NoYes
You can check for yourself what leavesNot from your sideragon-admin audit egress

SWE-bench Verified, measured on one DGX Spark

SWE-bench Verified is a set of 500 real problems taken from open-source programs. For each one, the helper has to change the code so that the tests pass. On 2026-10-08 we gave 100 of them to Ragon 1.5.1, using the Qwen3.8-27B model, on one DGX Spark with no internet. It had one try at each, in its default mode, and it solved 68 of the 100. If we scale that up to all 500, we estimate about 69%, give or take a few points (the 95% range is 63.9 to 73.4%). We measured this ourselves, on our own machine, on a sample of the problems. It is not an entry on the official leaderboard.

SystemSame 100
tasks
All 500
tasks
Ragon 1.5.1 + Qwen3.8-27B (NVFP4), one DGX Spark, offline168/100≈69% estimated
Ragon 1.5.1 + Qwen3.8-27B (NVFP4), refine mode, one DGX Spark, offline169/100≈70% estimated
Qwen3-Coder-480B-A35B (OpenHands)268/10069.6%
GLM-4.6 (Z.ai's agent)368/10068.2%
Kimi K2.5, high (mini-SWE-agent)470/10070.8%
DeepSeek V3.2, high (mini-SWE-agent)570/10070.0%
Claude Opus 4.5, four agents677–80/10076.8–79.2%
Gemini 3 Pro (live-SWE-agent)779/10077.4%
Smaller open models (20–40B parameters)
Qwen3-Coder-30B-A3B (EntroPO + R2E), test-time scaling860/10060.4%
Qwen3-Coder-30B-A3B (EntroPO + R2E), single attempt856/10052.2%
Devstral Small 2512 (mini-SWE-agent)957/10056.4%
Coding-agent products, as their vendors publish them
GitHub Copilot agent mode (VS Code), with Claude 3.7 Sonnet10not published56.0%
Claude Code11not publishednot published
Cursor12not publishednot published

Read this table as a way to see who is nearby, not as a ranking. On the same 100 problems, Ragon solved as many as Qwen3-Coder-480B and GLM-4.6, models many times its size. But every row uses a different helper program and different hardware, and the leaderboard rows used the official test images for x86 computers, while ours ran on community images for arm64. There is also a second mode, called refine. A first session studies the problem and changes nothing, then a fresh session does the work. It solved one more problem than the default (69 against 68, and each mode solved some problems the other missed), and it took about 2.2 times as long for each problem. So it is off unless you ask for it with ragon --refine.

How we estimate the 69%

100 problems are a fifth of Verified, so the figure for all 500 is an estimate. Here is how we made it. Take the results of all 175 public Verified submissions, problem by problem. Give every problem a difficulty and every system an ability, with a one-parameter item-response (Rasch) model. Ragon's ability is the one that would solve 68 on these 100 problems, and about 69% is what that ability would score on all 500. A plain regression on the published scores agrees to within a point. We also checked the method on others: for every public submission we used only its score on these 100 problems to predict its score on all 500. The error was 2.4 points (RMSE), and the range above is 1.96 times that on each side. Every number in the table can be reproduced by scripts/swe_bench_compare.py, from the public per-problem data in SWE-bench/experiments.

We spread the 100 problems over the programs in Verified in the same proportions as the full set. We drew them from the problems whose test setup works and checks out on arm64 (the correct fix passes, and doing nothing fails). Published systems score 1.0 to 1.5 points lower on these 100 than on all 500, so the sample is not an easy one. It is still not a leaderboard entry, because the SWE-bench team grades those on their own machines.

  1. Ragon: 100 problems, one try each; one DGX Spark (GB10, 128 GB), model running on the machine, no cloud; default mode measured 2026-10-08, refine mode 2026-10-09. The estimate uses the per-problem data in SWE-bench experiments.
  2. 500 tasks, one attempt; hardware not stated. Source: experiments, 20250805_openhands-Qwen3-Coder-480B-A35B-Instruct. The same model with mini-SWE-agent: 57/100, 55.4%.
  3. 500 tasks, one attempt, agent undisclosed; hardware not stated. Source: experiments, 20250930_zai_glm4-6.
  4. 500 tasks, one attempt; hardware not stated. Source: experiments, 20260217_mini-v2.0.0_kimi-k2-5-high.
  5. 500 tasks, one attempt; hardware not stated. Source: experiments, 20260217_mini-v2.0.0_deepseek-3-2-high.
  6. 500 tasks each; hardware not stated. Four submissions: OpenHands (80/100, 77.6%), live-SWE-agent (80/100, 79.2%), Sonar Foundation Agent (77/100, 79.2%), mini-SWE-agent, high (79/100, 76.8%). An earlier mini-SWE-agent run scored 74/100, 74.4%.
  7. 500 tasks, one attempt; hardware not stated. Source: experiments, 20251120_livesweagent_gemini-3-pro-preview. The same model with mini-SWE-agent: 72/100, 74.2%.
  8. The best published 20–40B model on the leaderboard. 500 tasks; test-time scaling uses two or more attempts per task; hardware not stated. Sources: test-time scaling, single attempt.
  9. 500 tasks, one attempt; hardware not stated. Source: experiments, 20251209_mini-v1.17.2_devstral-small-2512.
  10. GitHub's own figure, April 2025: "agent mode achieves a pass rate of 56.0% on SWE-bench Verified with Claude 3.7 Sonnet". Number of tasks, attempts and hardware not stated; not on the leaderboard. Source: GitHub blog.
  11. Anthropic publishes SWE-bench Verified for its Claude models, run in a simple scaffold of its own (a bash tool and an edit tool), not for the Claude Code product. Sources: Claude Code, Anthropic's SWE-bench method.
  12. Cursor publishes results on its own benchmark, Cursor Bench, not SWE-bench Verified. Source: Cursor blog, Composer.

All leaderboard numbers: swebench.com and the SWE-bench/experiments repository; "same 100 tasks" is each submission's published per-task results restricted to the tasks Ragon ran.

Paper

Docs

Getting started, and the documentation

How to make a GB10 safe to load, how to start the model server, how to pair Mac, Linux and Windows computers with it, and how to run the egress audit.

Docs →

Benchmark

Repeat the SWE-bench comparison

Fit the Rasch item-response model yourself and reproduce every per-problem number in the benchmark table from the public SWE-bench experiments data.

swe_bench_compare.py →

FAQ

Do I need a GB10?

Yes, to run the model. Your other computers are clients that borrow it: Linux (Arm or x86) and macOS with the same install command, and Windows (Arm or x86, preview) with the PowerShell line.

I installed Puffin. Is this the same program?

Yes. Puffin was renamed Ragon in 1.5. Run puffin update once, then run puffin one last time. It moves your sessions, settings and links across, and after that the command is ragon.

Does it really cost nothing?

Nothing for the program or for the model. Ragon is open source under the AGPL, and the model's weights are free to use. You pay for the machine and the electricity it uses.

What do I need besides the machine?

The operating system it comes with (DGX OS 7, or Ubuntu 24.04 where NVIDIA offers it), Docker with the NVIDIA Container Toolkit, Python 3 and Git. On plain Ubuntu, ragon-admin host check tells you what is missing.

Does anything ever go out to the internet?

Only what you or the helper ask for, such as a web search (through a SearXNG that runs on your own machine) and the downloads on first use. With /airgapped on, all of it is off.

Which model does it run?

Qwen3.8-27B, in NVIDIA's 4-bit format called NVFP4, served by our own engine, ragon-serve, with a small guessing helper called a DFlash2 drafter; SGLang stays as the fallback through 1.9.x. We chose and tuned all of it for the GB10. The weights take about 20 GB, and while it runs, about 38 GB of the machine's memory stays free.

Keep your code on your desk

If you think code should stay on the desk where it was written, star the repository on GitHub. That is how other GB10 owners find Ragon.

$ curl -fsSL https://github.com/dreamference/ragon/releases/latest/download/install.sh | bash