Projects catalogue · project page
DesktopFly: the desktop pet fly with a FlyWire circuit, and what really moves it
DesktopFly puts a 3D fruit fly on your Mac desktop (a Windows port is included). It runs a small spiking circuit cut from the FlyWire brain map, and since version 1.1.0 a second circuit from the male fly nerve cord moves its legs when it walks. With 1,053 GitHub stars on 27 Sep 2026, it is the most-starred fly brain demo in our catalogue.
Short answer
A real spiking simulation runs, but it is small and it mostly chooses animations. 668 neurons from FlyWire (0.5% of the 139,255 in the fly brain) decide which of five behaviours the fly shows. Only one of them, walking, is then moved by simulated neurons: a 1,045-neuron leg circuit from the male fly connectome (MaleCNS). Flight, grooming and darting are coded animations, and sleep follows your computer's idle time and the clock.
Its headline, "driven by a live spiking simulation of the real FlyWire connectome", is overstated. The sentence is the GitHub repository description; the README says, more carefully, that it combines identified neural circuits with modelled senses, joints and behaviour. The author's own evaluation says grooming, flight, sleep and the choice of state still use "modeled rules and animations".
What picks and what moves each behaviour
Your cursor, typing, new windows and clicks are turned into input for the FlyWire circuit. When the firing rate of chosen neurons crosses a limit set by the author, the fly switches state. Colours show which parts are measured, modelled, hand-made or ordinary code.
- Measured (connectome data)
- Modelled
- Hand-made by the author
- Ordinary code or animation
| Part | What it is | Kind |
|---|---|---|
| FlyWire circuit | 11 cell types chosen by the author (looming detectors LC4 and LPLC2, the giant fibre, the turning neurons DNa01 and DNa02, DNp09, DNg11, MDN and others) plus their 330 strongest partners: 668 neurons and 18,968 connections from FlyWire v783 (etl.py lines 23–56, 79–112). | Measured, cut down |
| Connection strengths | Synapse counts with a sign from the predicted transmitter, times one global scale. The looming → giant-fibre connections that drive the escape get a hand-set ×6 boost (Sim.swift lines 310–322). | Measured counts, hand-set scaling |
| Neuron model | Leaky integrate-and-fire spikes in 1 ms steps, with random background drive, random noise and random "arousal" bursts every 15–40 s (Sim.swift lines 207–212, 270–283, 346–358). | Modelled |
| Leg circuit (since v1.1.0) | 1,045 neurons and 17,224 connections from MaleCNS v1.0, from descending neurons through the nerve cord to leg motor neurons (Locomotor.swift). | Measured, cut down |
| Link between the two circuits | No synapses: the two circuits come from different flies (female FlyWire, male MaleCNS). Firing rates of FlyWire descending-neuron groups are copied as input into male neurons with the same names, which the author calls "a modeled homologous population-rate interface" (Sim.swift lines 285–300; Locomotor.swift lines 122–128). | Hand-made |
| The 23,210 "neurons" in the brain window | Every sixth or so FlyWire cell body, drawn as a still point cloud. Not simulated; spike flashes appear only at the 668 circuit neurons (BrainView.swift lines 67–82). | Display only |
| Inputs | An approaching cursor is fed to the looming neurons, fast cursor moves and typing act as an "air puff", new windows loom, clicks tap, and the legs report joint contact. The clock, idle time and the computer's temperature state also change behaviour (main.swift lines 784–797, 840–886 and 1000–1009). | Hand-made |
| Choosing a state | When neuron rates cross hand-set limits, the state changes: a giant-fibre spike starts a flight, DNg11 above 0.5 starts grooming, DNp09 above 0.22 starts walking, an MDN burst walks backward for 0.5 s, and high arousal raises the chance of a random take-off (FlyModel.swift lines 652–714). | Hand-made |
| Walking | MaleCNS motor-neuron rates drive the leg joints and the body's movement (Locomotor.swift lines 202–213; FlyModel.swift lines 587–593). The knee's stiffness and damping were calibrated by hand. | Driven by the network |
| Flight | A random landing point or window ledge, reached along a timed, smoothed path with some wobble (FlyModel.swift lines 448–482, 786–817). | Coded animation |
| Grooming and darting | Grooming is a leg sine animation (lines 861–865); darting is a coded turn away from the cursor at a random speed (lines 667–678). | Coded animation |
| Sleep | Not a neuron: the fly sleeps when the computer has been idle for more than 10 minutes between 22:00 and 06:00, or for more than 30 minutes at any time (main.swift lines 1003–1007). | Clock and idle time |
| Trained parts | None. | None |
| Tests | Only checks of the model against itself: DNp09 driven at 40 Hz for 8 s moves the fly 10.64 model units forward, MDN at 70 Hz moves it 12.66 units backward, and removing all synapses stops propulsion (EVALUATION.md lines 73–80). No comparison with fly data and no wiring control. | Author's numbers |
Why the grade is C
Our first check graded DesktopFly B with the note "borderline C". On 29 Sep 2026 we read the deciding lines again. The code has not changed since 5 Sep 2026, so the new grade reflects a closer reading, not a change in the project. We give the lowest grade whose conditions all hold, and grade C covers "a real connectome whose activity only triggers scripted movements".
- Neurons pick, code performs.
Every change of behaviour happens when a neuron rate crosses a limit set by the author, and then a coded program runs (
FlyModel.swiftlines 652–714). - Three of the five behaviours are animations.
Flight is a random-target, timed path; grooming is a sine animation; darting is a scripted turn with a random speed (
FlyModel.swiftlines 448–482, 786–817, 861–865). - Sleep does not come from the brain at all.
It is switched by the computer's idle time and the clock (
main.swiftline 1007). Our earlier verdict text said a neuron rate switched sleep; that was wrong and is corrected. - The brain part is small and hand-picked.
668 of FlyWire's 139,255 neurons, chosen around 11 cell types, with a hand-set ×6 boost on the escape pathway (
etl.pylines 37, 104–112;Sim.swiftlines 310–322). - The author says so.
"Grooming, flight, sleep and behavioral state selection still use the existing modeled rules and animations" (
EVALUATION.mdlines 188–189).
The case for B
When the fly walks, simulated MaleCNS motor neurons really do move its legs and body, and removing all synapses stops it (EVALUATION.md line 75). That is why the first grade was B.
Why it does not carry the grade
Walking is one of five states, and the leg circuit is fed through a hand-made interface between two different flies. Most of what you see on the desktop is coded animation that the circuit switches on.
The claim and our verdict
| Claim | Source | Verdict |
|---|---|---|
| "A 3D fruit fly living on your macOS desktop, driven by a live spiking simulation of the real FlyWire connectome" | GitHub repository description ("About"), read on 29 Sep 2026. It is not in the README. | Overstated. A live spiking simulation does run, but of a 668-neuron FlyWire extract plus a 1,045-neuron MaleCNS leg extract, and it mostly switches scripted flight, grooming and dart programs. Only walking is driven by simulated motor output. Verdict row |
| "Spiking simulations built from FlyWire brain wiring and the MaleCNS brain-to-leg network. It combines identified neural circuits with modeled senses, joints and behavior." | README, lines 8–11 | Accurate as a description. |
What you need to run it
| Item | What the project says | Our status |
|---|---|---|
| Official app download | None. Release v1.1.0 carries only GitHub's automatic source archives (zip and tar.gz). | No official build |
| macOS | macOS 13 or newer with the Xcode Command Line Tools (Swift 5.9 or newer). Clone the repository, run ./build.sh, then ./DesktopFly. No special permissions (README lines 85–94). | Untested |
| Windows | Windows 10 or 11 with Node.js 18 or newer: cd desktop-fly/windows, npm install, npm start (an Electron app). The author writes that "Windows-native sensing still needs verification on Windows" (README lines 46–47, 100–116). | Untested |
| Download size | About 2.9 MB of files after cloning, of which the data/ folder is about 2.1 MB (measured on our clone). The 1.2 MB in our catalogue entry is a size from the clone's metadata. | Measured by us |
| GPU | None needed: the simulation runs on the CPU. | Untested |
| Rebuilding the circuits (optional) | FlyWire Codex v783 tables (about 60 MB) through etl.py; MaleCNS tables (about 1.11 GB) through etl_malecns.py, which needs numpy, pandas and pyarrow (README lines 192–209). | Untested |
| Online demo | None. | No online demo |
Ports and copies by other people
These are not from DesktopFly's author. We read their code and release pages on 29 Sep 2026 but did not run any of them, and we did not check their app files for safety.
| Repository | What it is | Our note |
|---|---|---|
| lan450/desktop-fly-android | A Java re-implementation for Android that simulates live. Its two circuit files are byte-identical to DesktopFly's; it has no brain point cloud. A third-party app file (477 KB) is attached to its release v0.1.0. Last commit 26 Sep 2026. | Live port Its own audit reports the same numbers as the Swift version with a fixed random seed, but a flaky self-test without one. |
| somsom10/desktop-fly-linux | A Python/GTK port of the earlier FlyWire-only version, with an added sugar and odour feature; no MaleCNS leg circuit. Last commit 21 Aug 2026. | Port Its README repeats the "live spiking simulation of the real FlyWire connectome" wording. |
| mmggaas3-git/desktop-vibe-fly-4win | A C#/.NET 8 Windows port of the earlier FlyWire-only version, with added "VibeSense" features; no MaleCNS leg circuit. Third-party Windows builds (1.48 MB and 29 MB zips) are attached to its release v1.1.1. Last commit 16 Sep 2026. | Port Not the upstream app. |
caucasiadoublevision2701/desktop-fly (not linked) | No DesktopFly code or data: a one-line README and a zip file whose listing shows Application.bat, key.txt and zen.exe, a Windows program. Its only commit is dated 29 Sep 2026. | Do not download A download lure that borrows DesktopFly's name. |
Videos
We have no DesktopFly video in the Video gallery yet: no video by the author was found in our sweeps.
Status
| Field | Value |
|---|---|
| Code | github.com/DenisSergeevitch/desktop-fly |
| Last commit (default branch) | 32b0001, 5 Sep 2026, "Release v1.1.0: MaleCNS locomotion and smooth state transitions"; unchanged since our first check |
| Last release | v1.1.0, 5 Sep 2026, the only release; source archives only |
| Code licence | MIT. The LICENSE file adds that it covers the source code only (GitHub's licence detector therefore reports no standard licence) |
| Data licence | FlyWire-derived files: CC BY-NC 4.0 (non-commercial). MaleCNS-derived leg circuit: CC BY 4.0 (data/DATA_LICENSE.md) |
| GitHub stars | 1,053 on 27 Sep 2026 (not re-queried since) |
| Link check | HTTP 200 on 6 Oct 2026 |
| Catalogue entry | desktop-fly, grade C (re-graded 29 Sep 2026), last verified 6 Oct 2026 |
Sources
- DesktopFly repository at commit 32b0001: README.md, LICENSE, EVALUATION.md, etl.py, Sim.swift, Locomotor.swift, FlyModel.swift, main.swift, BrainView.swift, data/DATA_LICENSE.md, the circuit files in data/ and windows/package.json. Read by us on 29 Sep 2026.
- DesktopFly release v1.1.0 and its assets list, and the repository description on the GitHub page, read on 29 Sep 2026.
- The ports desktop-fly-android, desktop-fly-linux and desktop-vibe-fly-4win: code and release pages read on 29 Sep 2026. The lure copy was cloned and its zip listed, not extracted or run.
- Our catalogue entry desktop-fly and the research report of 29 Sep 2026.