
The desk buddy running a focus timer. The screen is 172 by 640 pixels.
This is a different thing from the Arvel coding agent. It shares the name, but it lives on a small board on my desk.
What it is
Arvel is a desk companion for the Waveshare ESP32-S3-Touch-LCD-3.49. That board has a long, thin touchscreen. Arvel puts a small scene on it, a status card and a few quick actions.
What runs on the board
The firmware is built with ESP-IDF. The board also runs a Rust agent runtime, unravel-agent-runtime, which runs the agent loop and the device tools. A C++ binding calls into the Rust code, and C++ supplies the model transport and the tool callbacks.
How the pieces talk
The board serves a SvelteKit web app to its owner. It shows the device screen live, keeps your conversation history, and is where you save provider keys and pick a conversation mode. It runs over plain HTTP, so it belongs on a trusted home network only.
What it does
You can type or talk to it. It sets timers and Pomodoro rounds, keeps notes, checks the weather and searches the web. Cloud models handle the conversation. The board runs the tool calls itself. Timers, notes, calculations and unit conversions stay fully local. Weather comes from Open-Meteo, and web search needs its own key and starts switched off.
What is not done
There is also a native speech mode built for an NVIDIA voice model. That deployment has not been GPU-tested. The firmware has host tests and build coverage, but its display, audio and SD card fault handling have not been checked on physical hardware. Local speech is a simple English formant voice, not neural TTS.
The code, build steps and the full list of limitations are on GitHub: hananinas/arvel.