Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔥 Hermes Wristband

A Hermes terminal you wear on your wrist.

Picture it: you're in the garden, hands in the soil, and an idea strikes. You glance down, tap a few keys on the little band wrapped around your wrist, and Hermes answers — right there on a screen the size of a postage stamp. No phone. No laptop. Just you, your thoughts, and a warm thread of WiFi connecting you to the Jetson humming away on your desk.

That's the dream this project chases, and it chases it with joy.


What is this?

Hermes Wristband is a thin client: the band itself is an ultralight, WiFi-enabled microcontroller (an ESP32-S3-class part, a few grams, a few dollars) that does exactly three things — render text, send keystrokes, and hold a WebSocket open to the Jetson on your local network. All the heavy thinking, all the Hermes magic, happens on the Jetson where it belongs.

This repository is the Jetson-side reference implementation: a Python package that models the wristband's terminal, serves the WebSocket the band connects to, manages a Hermes subprocess per band, and exposes a tiny health endpoint the band can poll. Build the firmware, point it at this server, and you're wearing Hermes.

Why a wristband?

Because the best interface is the one that's already with you. Because a terminal you can't lose in a couch cushion is a terminal you'll actually use. Because there is something quietly wonderful about whispering to your AI companion from the produce aisle.

The hardware vision

Twenty testable prompts live in prompts/hardware_prompts.md, each one a hypothesis you can take to a workbench:

  • The brain — ESP32-S3R8 for balance, ESP32-C6 for battery life, or a zero-solder LilyGo T-Display-S3 to get started this weekend.
  • The screen — a crisp 1.69" IPS for daily wear, a sunlight-readable SHARP memory LCD for always-on glances, or a flexible e-ink panel that curves around your wrist for the full sci-fi effect.
  • The keyboard — a 32-pad capacitive matrix for thinness, a 30-key snap-dome array for real tactile clicks, a stripped Rii i8+ for the impatient, or pure on-screen T9 for the minimalist.
  • The power — a 400mAh pouch cell, a polite 100mA charger that won't warm your skin, and antenna placement that respects your metal watchband.

Every prompt is measurable: price, weight, milliamps, words-per-minute, milliseconds of latency. Bring a multimeter and a curious heart.

The software: ten modules, one happy family

Each module is small, tested, and does one thing well:

Module What it does
config Display profiles (40×12 IPS, 49×8 flex e-ink, …) and every tunable in one dataclass
terminal_model A tiny scrollable cell buffer with proper VT-style wrap semantics
display_driver Virtual framebuffer with damage-region tracking, so the band only redraws what changed
keyboard_mapper Three physical layouts (matrix32 / dome30 / t9), layers, multi-tap
message_router Key events → bytes: VT100 arrows, Ctrl-C, the works
wifi_link mDNS advertise + discover, so the band finds hermes-wristband.local with no hardcoded IP
transport One-band-at-a-time WebSocket server + test client
session_manager Spawns a Hermes CLI per band in a real pty, sized to the band's screen
power_manager Battery model: deep-sleep to active draw, dim-as-it-fades policy
health_server GET /health and GET /config so the band can sync on connect
wristband_orchestrator The conductor — wires them all together into one runnable server

Quick start

git clone https://github.com/drwjkirkpatrick-web/hermes-wristband.git
cd hermes-wristband
python3 -m pip install -e '.[net,dev]'
pytest -q          # 83 tests, all green

Run the server on your Jetson:

import asyncio
from hermes_wristband import wristband_orchestrator

async def main():
    orch = wristband_orchestrator.WristbandOrchestrator()
    await orch.start(advertise_mdns=True)   # band finds us as hermes-wristband.local
    await orch.run_forever()

asyncio.run(main())

The WebSocket listens on :9296, health on :9297. Point your band's firmware at ws://hermes-wristband.local:9296, send {"cmd":"new_session","argv":["hermes"]}, and start typing.

Status

Early days, bright eyes. The Jetson side is real and tested (83 passing tests, a genuine pty round-trip through /bin/cat standing in for Hermes). The firmware and the 3D-printed case are the next adventure — and the hardware prompts are the map.

Come build it with us. The wrist is warm, the WiFi is strong, and Hermes is waiting to say hello. 🔥


Built with the Phosphorus personality — The Charismatic Communicator.

About

A Hermes terminal you wear on your wrist — WiFi-enabled band with a postage-stamp screen for garden-to-kitchen AI access on Jetson.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages