Visual overview of your Claude sessions
██████████ ██ ██████████ ██ ██ ████████ ██████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████████ ██ ██ ██ ██ ██████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████████ ██████████ ██ ██ ██████████ ████████ ██████████
██ ██ ██████████ ████████ ██████████ ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████████ ████████ ██████████
██████████ ██ ██ ██████████ ██████████ ██████████ ██████████ ████████ ▄▄▄▄▄▄▄▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████████ ██ ██████████ ████████ ██████████ ██ ██████████ ██ ██ ██ ██ ██ ██ █▀█▀▀█▀█ ██ ████ ████ ██████████ ██████████ ██ ██████████ ██ ██ ▀ ▀ ▀ ▀
Visual overview of your Claude sessions
A daemon that shows every running Claude Code session on a DJTT Midi Fighter Twister, one encoder per session. The color is the session's state, the LED ring is how long the current turn has run, and pressing an encoder brings that session's terminal tab to the front.
running scenarios automatically — interact to take over
scenarios
What the colors mean
Ten states, one color each. Hover a row to play that state alone. The colors, animation rates and ring rules below come from the same tables the daemon uses — `mft/config.py`, ported line for line.
Installing
THE HARDWARE DJ TechTools — Midi Fighter Twister → 16 RGB-lit rotary encoders with LED rings, 4 banks, USB class-compliant. The device this daemon drives. THE SOFTWARE github.com/dylanfisher/claude-midi-twister → Python 3.14, stdlib only except mido + python-rtmidi. The README is the design document.
install. it backs up your settings first and tags its own entries,
so --uninstall removes exactly what it added
$ python3 -m venv .venv && .venv/bin/pip install -r requirements.txt $ .venv/bin/python install_hooks.py --print # look at what it will add $ .venv/bin/python install_hooks.py # merge into ~/.claude/settings.jsonrun it and leave it running. any Claude Code session claims an encoder.
$ .venv/bin/python -m mft.daemonor build the app bundle, which starts and stops the daemon
$ .venv/bin/python app/make_app.py # -> ~/Applications/Claude Twister.appwithout hardware, everything except the wire still runs
$ .venv/bin/python -m mft.daemon --no-device $ .venv/bin/python -m mft.simulate --sessions 6One more step: in the Midi Fighter Utility, set the encoders to accept host LED control. Otherwise the device drives its own LEDs and ignores everything the daemon sends.
