Set up your Angry Miao keyboard — keymaps, macros, and lighting — from one app on your own computer.
Get the installer for your computer from the latest release:
| Your computer | File to download |
|---|---|
| macOS, Apple silicon | AM-Configurator-<version>-macOS-arm64.dmg |
| Windows 11 x64 | AM-Configurator-<version>-Windows-x64-Setup.exe |
| Linux x86-64 | AM-Configurator-<version>-Linux-x86_64.AppImage |
The GitHub Releases page is the only public installer source. Workflow artifacts are temporary candidates for maintainers, not downloads.
The macOS application is signed with an Apple Developer ID certificate and notarized by Apple, and the Windows executable and installer are signed through Azure Trusted Signing. Windows SmartScreen weighs how widely a signing certificate has been seen as well as whether it is valid, so it may still show a caution prompt while this certificate is new. The Linux AppImage is unsigned. Installing AM Configurator has the per-system steps; never turn off an operating system's security checks globally.
Release notes are published with each GitHub Release.
| Keyboard | Identifier | Layers and macros | Lighting |
|---|---|---|---|
| CyberBoard | CB… |
Up to 7 layers and 32 macros | Switch LEDs plus the 40×5 top display |
| AM Relic 80 | USB AM21, profile 80 |
Up to 7 layers and 32 macros | Per-key lights plus seven edge lights |
| AM AFA / AFA 2 | ALICE |
Up to 7 layers and 32 macros | Alice key lights and centre body lights |
| AM Neon 80 | NEON80 |
87-key physical layout, four keymap layers, and 16 macros | 89 axial LEDs, a 46×5 head matrix, and side lights derived from it |
Each board draws on its own physical layout in the Keymap screen:
CyberBoard![]() |
AM Relic 80![]() |
AM AFA![]() |
AM Neon 80![]() |
The app runs on macOS (Apple silicon), Windows 11 x64, and Linux x86-64. On Linux the AM Neon 80 also needs a one-time permission rule — see AM Neon 80 on Linux.
Firmware revisions differ between boards. Keep a complete portable JSON profile, or the original media needed to rebuild it, before your first write to a board or a firmware version you have not used before.
- Install the file for your computer and open AM Configurator.
- Plug in one keyboard over USB. Close AM Master, Vial, VIA, QMK Toolbox, and anything else that might be holding the board.
- Choose Connect a keyboard, pick your board under Devices, then choose Read keymap & macros. Reading never writes to the keyboard. Already have a profile saved? Choose Open a JSON profile instead.
- Make a change. On Keymap, select a physical key and give it a new assignment. On Lighting, paint a frame and watch it in the Studio.
- Save JSON to keep a portable backup of everything you just did.
- Choose Write to keyboard — it names your board once one is connected, for example Write to NEON80. Type the device ID the dialog shows you, then choose Write full configuration. An AM Neon 80 also needs its physical Esc+F2 unlock.
Keymap — select a physical key, then choose what it should send.
Lighting — edit a slot directly, or preview a media or effect result before applying it to the open profile.
Macros — type the text you want, or record the keys you press.
Select a physical key on a keyboard-shaped layout, then assign a normal QWERTY key, one of your macros, or an Angry Miao control such as under-key and top display lighting. Every layer in the profile stays available, and each supported model keeps its real shape rather than a grid of matrix numbers. If you need the firmware-level value, Advanced keycode and Show technical labels are one click away and round-trip whatever the keyboard reported.
Text entry turns typed text into the exact keystrokes the keyboard replays, with one timing choice: Fast, Slow, or Natural — a WPM target or your own captured cadence. Flow edits the macro event by event — key, down/up, and pause in place — and combos such as Ctrl+Alt+Del are built or recorded as ordinary rows. Repeat appends a repeated key press and quotes the capacity cost before anything changes. Record keys captures a sequence as you press it. The editor shows the selected keyboard's own macro capacity instead of assuming one budget for every model.
The Lighting Studio has three manual tools. Paint colours individual lights directly on the physical LED output, with one shared horizontal timeline. Import media brings in GIF, PNG, BMP, and JPEG files and keeps the source frame and what the keyboard will show together while you pan, zoom, or stretch. Effects shows Pulse, Hue cycle, Sweep, Shimmer, and Move & zoom as a live draft. Imported media and effects change the open profile only when you choose Apply; Save to Library remains separate. Timing choices are limited to values the destination firmware can actually play.
Save to Library keeps a reusable copy of a keymap, a macro set, imported media, or a lighting slot. Applying something changes only the document you have open; saving to Library is always its own labelled action, so nothing is stored behind your back. Removal is reversible. When you open a profile, keymap, macro, and lighting compatibility are shown separately, so you can take only the parts the destination keyboard can safely accept — and if a Relic export arrived as a separate key file and LED file, Merge brings the second one in.
AI is off by default. While it is off, the AI controls and setup fields are hidden, there is no automatic Ollama discovery, and every manual Lighting and Library tool still works. Turn it on in Settings and choose one of two backends: Ollama, which talks to an Ollama server you already run on this computer or on your network, or Direct API, which sends your request to an AI service you configure (xAI, Anthropic, OpenAI, Gemini, Kimi/Moonshot, or DeepSeek). AM Configurator never downloads or installs a model for you.
A Direct API request can cost money under your own provider account. Only your prompt and the selected keyboard's size are sent — imported media, keymaps, macros, device identifiers, and Library files stay on your computer. Anything generated lands in the same Library as your manual and imported work.
With a backend ready, the Lighting Studio's AI tab opens a prompt. Describe the effect you want and Generate lighting turns it into lighting frames rendered on your own computer — one request per click, never retried on its own. The result previews on the keyboard canvas like any other lighting, and nothing changes the open profile until you apply it yourself.
Selecting a keyboard, or reading one, never changes it. Writing does.
- A confirmed full write replaces keymaps, macros, and LED data on the board, so the app asks you to type the device ID before it starts. Keep the USB cable connected until verification finishes. Firmware itself is never modified.
- After a write, the keymap and macros are read back and checked. Lighting is verified by eye on boards whose firmware cannot report its lights.
- Some keyboards cannot read their lighting back at all. Neon firmware does not expose LED read-back, so a device read is not a lighting backup. Use Save JSON and keep a complete profile — plus the original media if you imported any — before the first write, and take that file with you when you move to another computer.
Every release publishes SHA256SUMS.txt and a release-manifest.json beside
the installers, and the macOS and Windows downloads carry a publisher signature
you can check yourself. Installing AM Configurator walks
through the SHA-256 digest, the signature, and opening the app on each operating
system. Signed release files carry no GitHub build attestation, so
gh attestation verify reports none for them.
Run from source, build installers, and verify
Python 3.11 or newer and uv are required:
uv sync --extra desktop
uv run --extra desktop am-configuratorFiles named on the command line are opened, and merged, at launch. Relic key and LED exports are often separate:
uv run --extra desktop am-configurator AM-80Relic.json AM-80Relic-KEY.jsonThe interface runs in a native window backed by a token-authenticated loopback server.
PyInstaller must run on the target operating system; it is not a cross-compiler. From the repository root, build and smoke-test the installer for the current operating system with:
python build.pyAdd --skip-sync when the environment is already prepared. The script builds
the canonical application version and writes the finished artifact to dist/: a
versioned DMG on macOS, an Inno Setup installer on Windows, or an AppImage on
Linux. Local and GitHub builds use the same product version; workflow run
numbers and commit IDs are diagnostic metadata only.
Windows installer packaging requires Inno Setup 6. It does not require Visual Studio Build Tools, a C/C++ compiler, or a separate native media toolchain.
The automated verification entry point is:
uv run --frozen python -m unittest discover -s tests -v
uv run --frozen python -m compileall -q am_configurator packaging build_tools
node --test tests/web/*.test.js
node --check am_configurator/web/lighting_state.js
node --check am_configurator/web/lighting_workspace.js
node --check am_configurator/web/lighting_review.js
node --check am_configurator/web/lighting_targets.js
node --check am_configurator/web/lighting_composer.js
node --check am_configurator/web/library_state.js
node --check am_configurator/web/app.js
uv buildThis matches the CI workflow. uv sync --locked installs no extras, so a change
touching optional-dependency code should also be checked in an environment built
without --extra desktop.
AM Configurator is independent community software and is not affiliated with or
endorsed by Angry Miao. Its CyberBoard keymap and LED frame protocol handling was
derived from the MIT-licensed
GeneralD/cyberboard-cli project;
GeneralD's copyright and license are preserved in
licenses/cyberboard-cli-LICENSE.txt, and
all bundled third-party notices are listed in
THIRD_PARTY_NOTICES.
If AM Configurator is useful to you, you can support it on GitHub Sponsors or Ko-fi.









