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
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.
# 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.json # run it and leave it running. any Claude Code session claims an encoder. $ .venv/bin/python -m mft.daemon # or build the app bundle, which starts and stops the daemon $ .venv/bin/python app/make_app.py # -> ~/Applications/Claude Twister.app # without hardware, everything except the wire still runs $ .venv/bin/python -m mft.daemon --no-device $ .venv/bin/python -m mft.simulate --sessions 6
One 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.