KnEnd

Open-source · ESP32-S3 · Linux, macOS, Windows

Keys that follow you.

Kn°End turns an inexpensive touchscreen board into a shortcut keypad whose keys change with the app, website or terminal program in front of you. Over Wi-Fi or Bluetooth it becomes a pager: answer a coding agent from another room, or read your speaker notes while you present.

Said “no end”: silent K, as in know. Or நோண்டு.

Fig. 1 VS Code live layout

On the desk

The Kn°End board in its black printed case on a desk in front of a monitor showing a slide. The board's screen shows the slide's speaker notes with Prev, End, Next, First, Black and White keys.
Fig. 2 Presenting: the slide's speaker notes on the board

The name

நோண்டு

nōṇḍu · Tamil · literally “dig”, “poke at”

Say Kn°End aloud and it is close to the Tamil நோண்டு. In everyday speech it means to tinker: to poke at a thing until you see how it works, then make it do something new.

That is the project: a cheap touch board, poked at until it does more, with no end to what it can be set up for.

Why it exists

Keypads are closed

Commercial keypads run through vendor software on Windows and macOS, and skip Linux.

Every app needs setup

A keypad is only useful where someone built a profile. Here an AI drafts the keys and you review them.

Extensions are code

Layouts are data, checked by one validator, so a shared layout is safe to accept from a stranger.

The hardware is cheap

A $20–40 ESP32-S3 touch board you may already own becomes the keypad.

How it works

  1. A
    The board works alone. Paired over Bluetooth it is an ordinary keyboard on any computer, with nothing installed.
  2. B
    The companion adds the smarts. A small Rust service watches the focused app, website or terminal program, picks the matching layout and pushes it to every connected board over Wi-Fi, USB or Bluetooth.
  3. C
    Layouts are data. A TOML file per app or site: built in, shared, your own, or drafted by AI for an app nobody has set up yet.
  4. D
    A web app sets it all up. Identify the board, install firmware, pair, add Wi-Fi, draft keys for your apps, with a setup assistant that sees what the service sees.
# a site recipe: keys for Amazon
[pack]
name = "Amazon"
source = "community"   # builtin | community | ai | user

[match]
web = ["amazon.ca", "amazon.com", "amazon.*"]

[[key]]
label = "Orders"
action = { kind = "open", url = "/gp/your-account/order-history" }

What it does today v0.2.3

Follows you

App, site and terminal aware

Layouts follow the focused app (Linux X11, macOS, Windows), the website (Chrome, Edge, Firefox extension) and the program in a terminal tab.

AI

Keys drafted for your apps

The service lists installed apps and an AI drafts keys, marked unreviewed until you check them. Gemini, OpenAI, Anthropic, OpenRouter, local Ollama, or a signed-in Claude Code / Codex CLI.

Pager

Answer coding agents

Claude Code permission requests and questions appear on the board: Allow, Always, Deny, Stop, from across the house.

Present

Speaker notes on the board

In a PowerPoint slide show the board shows the slide’s notes, paged to fit, with Prev, Next, First, End, Black and White.

Setup

A setup assistant

Grounded in the project’s knowledge base, it runs checks, explains failures and offers one-click fixes. It speaks up on its own when the service notices a fault.

Music

It listens

Boards with a microphone hear a sung or played note and send it to MuseScore or any music app as MIDI.

Safe by design

Supported boards

One universal firmware image. A small JSON definition per board describes its display, touch, pins and buttons, so a new board is usually a definition, not new code.

BoardStatusDisplayExtras
ONX2432G028tested2.8" 320×240 ST7789microphone
Freenove FNK0104Btested2.8" 320×240 ILI9341native USB
Waveshare ESP32-S3-Touch-AMOLED-2.06run on board2.06" 410×502 AMOLEDburn-in care, buttons
Espressif ESP32-S3-BOX-3unverified2.4" 320×240 ILI9342C
Waveshare ESP32-S3-Touch-LCD-2unverified2" 240×320 ST7789T3

Get started about five minutes

  1. Download the service from the latest release: the Windows installer, or knoend for Linux or macOS.
  2. Plug in the board by USB.
  3. Run ./knoend serve (on Windows, KnoEnd from the Start menu). The web app opens at http://127.0.0.1:7342.
  4. Follow Set up a board: it identifies the board, backs it up, installs firmware, pairs, and drafts keys for your apps. Ask the assistant when something is unclear.

Knowledge base

The same documents the setup assistant reads. Every failure we have seen, with its cause and fix.

Questions

Do I need the companion service at all?

No. Paired over Bluetooth the board is a keyboard on any computer with nothing installed. The service adds keys that follow the app, the pager, AI drafting and setup.

Does my data go to an AI?

Only when you ask it to draft keys, and then only the app ID, domain and page structure (for a terminal program, its name and one-line manual description). You can use a local model or a CLI you are already signed in to.

My board is not on the list.

Plug it in anyway: the service identifies it from the firmware it carries and says plainly if it does not know it. Back the flash up before trying anything; most ESP32-S3 boards with a supported display and touch chip need only a JSON definition.

Wayland?

Not yet. On Linux the focus watcher uses X11; macOS and Windows are supported.

Video gallery

Built for Build North October 2026

Kn°End was built during Build North: Ship Something Real by Sundararajan Mohan and Tom Grabowski, with help from AI coding agents (Claude Code, Codex, Antigravity). The enclosure was designed by Skanda. Every change is in the running log, with what was tested and on which hardware.

What existed before the week, and what was built during it, is listed in the README.