A Docker image that runs Klippain Shaketune locally and exposes a browser-based UI for generating input shaper graphs — no running Klipper printer required.
Upload your raw accelerometer data (.csv) through the web UI, select a graph type, configure parameters, and get a ShakeTune PNG graph back in the browser.
Powered by:
- Klippain Shaketune for graph generation
- Klipper (cloned at build time, used as a dependency)
- Gradio for the pure-Python web UI
| Graph type | Description |
|---|---|
input_shaper |
Calibrate input shaper settings |
belts |
Compare belt tension (CoreXY / CoreXZ) |
Use Klipper's TEST_RESONANCES command with OUTPUT=raw_data to capture raw accelerometer data. The resulting .csv files are what you upload to this tool.
Important: Always add
OUTPUT=raw_data. Without it, Klipper writes a processed PSD file (resonances_x_*.csvwith afreq,psd_x,...header) that shaketune cannot use as input.SHAPER_CALIBRATEalso produces unusable output (calibration_data_*.csv).
Run one command per axis. Upload one or both files together.
TEST_RESONANCES AXIS=X OUTPUT=raw_data
TEST_RESONANCES AXIS=Y OUTPUT=raw_data
Files are saved to /tmp/ as resonances_x_YYYYMMDD_HHMMSS.csv and resonances_y_YYYYMMDD_HHMMSS.csv.
Run both diagonal directions. Upload both files together.
TEST_RESONANCES AXIS=1,-1 OUTPUT=raw_data
TEST_RESONANCES AXIS=-1,1 OUTPUT=raw_data
Files are saved to /tmp/ as resonances_1_-1_YYYYMMDD_HHMMSS.csv and resonances_-1_1_YYYYMMDD_HHMMSS.csv.
docker-compose up -dOpen http://localhost:7860 in your browser.
docker-compose downEdit docker-compose.yml and modify SHAKETUNE_TIMEOUT:
environment:
- SHAKETUNE_TIMEOUT=180docker-compose up -d --buildNote: The first build takes several minutes because numpy is compiled from source against OpenBLAS on Alpine Linux.
The image is built and published automatically via GitHub Actions on every push to main (tagged latest) and on version tags like v1.0.0.
Image registry: ghcr.io/beattune-core/shaketune-cli-docker
This repository is MIT licensed. Shaketune and Klipper are subject to their own respective licenses.