NEURON / woflo
00 / WHY IT EXISTS

an anti-synapse for your razer gear.

Neuron is one small binary that replaces Razer Synapse. It talks to your mouse and keyboard directly over raw HID, sending the same bytes Synapse does, worked out from wire captures and a lot of live probing. Doesn't require a kernel driver, vendor SDK, account, or cloud-anything. Neuron does what you tell it then gets out of your way.

Synapse grew into a two-gigabyte, account-gated, cloud-synced install that re-enables features you turned off and bolts a login screen onto your mouse dpi. Neuron is the opposite design on purpose: one tray process sitting at a few megabytes, your config as plain TOML on your own disk, and nothing running in the background that you didn't ask for.

 
01 / TRIGGER → ACTION

everything is one sentence: when this, do that.

The whole app runs on a single idea. Something happens, so it does something. A button press, a drawn glyph, a radial flick, the foreground app changing, a tap on your mic mute, a held hypershift layer: those are all triggers. A keystroke, a macro, a dpi cycle, a profile switch, a raw python script: those are all actions. Bind any trigger to any action and everything further down this page is built out of that one pairing.

mouse4 held → sniper: dpi 400
 
02 / NO DRIVERS

no driver. no sdk. just hid.

Razer's control interface answers HID feature reports, and those don't need read or write access to the device, so Neuron opens your mouse with zero desired access and speaks the exact bytes Synapse sends. That one detail is the whole foundation. There's no kernel driver to sign allowing Neuron to sidestep the "vulnerable driver" quarantines that bricked OpenRGB and SignalRGB in 2025.

On top of that sits the everyday stuff: dpi and the full stage cycle, polling up to 8000 Hz where the hardware exposes it, brightness, lift-off distance, scroll stages, battery and charge. Reads decode the device's own bytes and match Synapse to the byte. Press the onboard dpi button or snap a side-plate onto a Naga and Neuron hears the mouse announce it live, on a separate channel, without polling for it.

 
03 / LIGHTING

lighting that means something.

You get everything Synapse's lighting does (the native static, breathing, spectrum, wave, reactive and starlight effects, invoked by their real firmware ids), and then the actual point: an open theme engine sitting on top. An effect is two halves that compose, a pattern that decides where light lands and how bright, and a spectrum that decides what colour and when. Since a frame is just data, a live readout (battery, cpu, your mic peak) drops in as its own layer over a running effect, and painting the fire sim with an ocean gradient gives you cold fire with zero code. Changes apply live.

Three I built for the fun of it, so you can see what the engine gives you past the stock set:

typing heat every keypress deposits heat locally around the key, requiring passive time to let cool
comet shooting streaks with real head-to-tail gradients; type the key a comet head sits on to break it
ambient the whole board as an ambilight, mirroring whatever's onscreen

Alongside more. Because a preset is only a pattern plus a spectrum, more will come as development goes, and adding your own is a bit of data.

 
04 / SPELLWEAVING

hold, draw, cast.

Hold a trigger, weave a stroke, release, and it fires an action live as a real keybind. Glyphs aren't matched pixel against pixel. Each stroke is fit to a small dynamical model and identified by its eigenmotion, its natural frequency and decay, which is what makes it hold up no matter where on the screen you drew it, how big, or how fast, and lets clockwise and counter-clockwise fall out as genuinely different shapes. There's a fair amount of signal-processing work under that; the method is written up in a short paper (coming soon after release).

Because a resolved gesture is just another trigger, one capture drives a whole family of instruments: teleport pops a live minimap of your monitors you fling the cursor across, glance pulls every matching window into a magnetic collage, a dial turns the next hold into an analog slide where speed is sensitivity, and knockback is a little rhythm game your mouse plays back at you while you wait in queue.

 
05 / MACROS

macros are real python.

A macro is a python file with a def macro(ctx). Neuron runs it in a bundled interpreter that stays warm in the background, so firing one is basically a function call, comfortably under a frame. Unsandboxed (on purpose): ctypes, subprocess, sockets, files, anything a program can do your macro can do. In its own process, so no macro can take Neuron down... unless it explicitly takes Neuron down.

# lift.py — double-tap ctrl to boost mic gain while you talk
from neuron import on, mic, keys
 
@on(keys.double_tap("ctrl"))
def lift(ctx):
with mic.gain(+4):
keys.wait_release("ctrl")

Every run gets a snapshot of where you were when you fired it, frozen at trigger time, so the whole thing reasons about one consistent moment. And if you'd rather not write python, the GUI has a block builder that writes the source for you, losslessly both ways :)

 
06 / HYPERSHIFT

hold a key, get a second keyboard.

Razer ships hypershift as hold-only. Neuron makes the layer first-class and gives it four stances, then makes sure releasing one layer only drops that layer, so two held layers never stomp each other.

hold active only while you hold it down
toggle one press: on, another press: off
smart holds immediately, then decides tap vs hold for you on release
one-shot arms for exactly the next trigger, then drops
 
07 / WON'T SURPRISE YOU

it changes what you ask, and nothing else.

This is a tool whose whole job is injecting input and writing to your hardware, so the safety has to be real. Every synthesised keystroke runs through one switch that starts disarmed, and only the running app ever flips it on. Every write backs the device up first, takes effect in volatile memory before anything gets flashed, then reads itself back to confirm the bytes actually landed. A mismatch is a hard error, never a silent success, and where there's no opcode Neuron trusts, it simply refuses.

Nothing changes quietly, either. Every committed change pops a small card on screen after it lands, and you drag a little mock-monitor to say where those cards appear. Think of it as the OSD Synapse throws at you, minus the part where you can't turn it off.

 
08 / LIFE AFTER SYNAPSE

bring your settings, then purge synapse.

Synapse's export files are just zips of plaintext xml, so Neuron reads one directly, keeps only the binds you actually changed, and throws away the hundred keys still sitting on their defaults. Run it dry and it shows you exactly what it would import and what it dropped, before anything is committed.

When you're ready to be rid of it, Neuron can figure out which services are Razer's by asking who installed them, stops them respawning, and ends the whole tree. 

 
09 / GET IT

run and done.

A few megabytes, source-available, Windows today with Linux and macOS kept behind seams for laterTM. Your config is plain TOML you own, and deleting the binary leaves nothing running and nothing behind. Fair warning: this is public beta mk1, from one dev on one desk. It runs on mine every day, but it honestly hasn't been tested on yours... yet ;)

TELL ME WHEN no cloud, account, telemetry · just one binary