Physical and virtual pad control surfaces for AI agents.
Project description
Pad-Lattice
🎛️ Try the virtual pad: https://mrueda.github.io/pad-lattice/play/
📘 Documentation: https://mrueda.github.io/pad-lattice/
🚀 Quick Start: https://mrueda.github.io/pad-lattice/docs/usage/quickstart
Pad-Lattice gives people a tactile, glanceable way to monitor and control AI agents. It repurposes MIDI pad controllers as that physical interface: their RGB grids can display agent state and accept deliberate actions. The same visual language also runs as a Virtual Pad in the browser, so anyone can use it from a phone, tablet, or computer, with or without MIDI hardware.
Pad-Lattice grew from mrueda's personal need to interact more directly with Codex CLI. As a musician and member of the duo The New Assembly, he had used a Launchpad Pro with Ableton Live and recognized that its mature grid interface could become a visual surface for agents. Read the origin story.
One local daemon maintains multi-agent state and routes currently available actions only to the selected agent. Visual Protocol 1 gives physical MIDI profiles and the Virtual Pad the same identity accents, state glyphs, selection, actions, and overflow behavior.
The first integration is Codex CLI. Pad-Lattice displays lifecycle state and can return targeted Approve, Reject, Retry, and Stop actions while prompts and terminal output remain in Codex.
Pad-Lattice is alpha software.
Choose a Surface
| Surface | Command | Result |
|---|---|---|
| Public browser | Open /play/ |
Demo, protocol sandbox, and audiovisual Show; no installation. |
| Local browser | pad-lattice web |
Real Codex control on the same computer. |
| Phone or tablet | pad-lattice web --lan |
Real Codex control after one-time pairing on a trusted local network. |
| Launchpad | pad-lattice daemon |
Physical MIDI input and RGB state feedback. |
| Launchpad plus browsers | pad-lattice daemon --web |
Synchronized physical and virtual surfaces on one control plane. |
The public demo is intentionally simulated. Real control always requires the local Pad-Lattice process and Codex hooks.
Install and Start
Install the package in an isolated environment:
pipx install pad-lattice
This installs the release from PyPI without modifying the system Python.
Start the browser controller without MIDI hardware:
pad-lattice web
Then launch an integrated Codex session from another terminal:
pad-lattice codex --label implementation
To add a physical controller and optional synchronized browsers:
pad-lattice daemon --web --audio-feedback
The Quick Start covers hook review, MIDI setup, LAN pairing, and multiple sessions.
Supported Hardware
| Device | Profile ID | Status |
|---|---|---|
| Novation Launchpad Pro Mk1 | novation/launchpad/pro-mk1 |
Supported and physically tested |
| Novation Launchpad Mini Mk3 | novation/launchpad/mini-mk3 |
Experimental; testers wanted |
| Novation Launchpad Pro Mk3 | novation/launchpad/pro-mk3 |
Experimental; testers wanted |
Declarative JSON profiles map Visual Protocol 1 to MIDI ports, programmer mode, note layouts, palettes, actions, selectors, and status indicators. New controllers do not require changes to Codex integrations.
Documentation
| Topic | Guide |
|---|---|
| Install and connect Codex | Quick Start |
| Learn the colors, glyphs, actions, and 8x8 layout | Visual Protocol |
| Connect phones, tablets, and laptops | Browser Setup |
| Run the guided Demo or audiovisual Show | Visual Show |
| Add or test a MIDI controller | Device Profiles |
| Understand or extend the implementation | Technical Guide |
| Review the trust boundary | Security Model |
Release history is recorded in CHANGELOG.md.
Development Approach
Pad-Lattice is an independent hobby project developed by mrueda in his free time. It is developed through an architecture-led, human-in-the-loop collaboration with Codex CLI (OpenAI, GPT-5.6), automated testing, and evaluation on physical and virtual surfaces. The origin and development page documents the process.
Citation
Machine-readable citation metadata is available in CITATION.cff. No formal publication is available yet. For now, cite:
Pad-Lattice: A Visual Protocol for AI Agent Control on MIDI and Virtual Pad Surfaces. https://github.com/mrueda/pad-lattice
Author
Created and maintained by mrueda.
Copyright and License
Copyright (C) 2026 Manuel Rueda.
Distributed under the Apache License 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pad_lattice-0.1.0.tar.gz.
File metadata
- Download URL: pad_lattice-0.1.0.tar.gz
- Upload date:
- Size: 5.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ece5a917a4af57f6cfaaada2b789b5fbc26d74c0517a85ec64bf692f487a4cfb
|
|
| MD5 |
5e421056d2fbb9f5dc62c98599bb1076
|
|
| BLAKE2b-256 |
0c0506e6611ffcb71dca5c3ffb674eaa68cb801bf962db7a53519b3f8e18c63b
|
Provenance
The following attestation bundles were made for pad_lattice-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on mrueda/pad-lattice
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pad_lattice-0.1.0.tar.gz -
Subject digest:
ece5a917a4af57f6cfaaada2b789b5fbc26d74c0517a85ec64bf692f487a4cfb - Sigstore transparency entry: 2207191113
- Sigstore integration time:
-
Permalink:
mrueda/pad-lattice@52f474f917cde20222730106897c7e7efe3ea827 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mrueda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@52f474f917cde20222730106897c7e7efe3ea827 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pad_lattice-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pad_lattice-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6a49b4f55b10b67e0174d7557a46d0d64368f678cb0f354655fd0ffd47310e0
|
|
| MD5 |
a433445220058315df0a98f03b63e822
|
|
| BLAKE2b-256 |
b05b36597fc9947016fccdb163c5e8cadb04ab98991d6b0f961842c881041c71
|
Provenance
The following attestation bundles were made for pad_lattice-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on mrueda/pad-lattice
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pad_lattice-0.1.0-py3-none-any.whl -
Subject digest:
f6a49b4f55b10b67e0174d7557a46d0d64368f678cb0f354655fd0ffd47310e0 - Sigstore transparency entry: 2207191123
- Sigstore integration time:
-
Permalink:
mrueda/pad-lattice@52f474f917cde20222730106897c7e7efe3ea827 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mrueda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@52f474f917cde20222730106897c7e7efe3ea827 -
Trigger Event:
push
-
Statement type: