Building Vault: A Dual-Display AI Terminal

AI Engineergo watch the original →

Vault is a handheld ESP32-S3 terminal that pairs a fast OLED for input with a bistable e-paper display for output, offloading heavy LLM inference to a local backend to enable agentic control and text-based RPGs.

Hardware Architecture and Display Strategy

Vault utilizes a dual-display design to balance responsiveness with power efficiency. The system pairs a fast, emissive OLED surface for real-time interaction and text input with a slow, bistable e-paper display for persistent content rendering. By using pre-allocated static buffers and rendering one-bit images directly from memory, the device avoids the overhead of a markdown engine or dynamic memory allocation on the ESP32-S3 microcontroller. This architecture ensures the device remains functional even if specific components fail, as the e-paper display remains readable without active power.

Backend and Agentic Integration

The device operates as a thin client, offloading compute-heavy tasks to a Python backend. This backend interfaces with OpenClaw agents and serves a 120-billion parameter model using NVIDIA TensorRT-LLM. To ensure compatibility across various open-source models, the system exposes an OpenAI-style API via a LiteLLM proxy. This setup allows the terminal to execute complex commands, such as generating and storing code snippets, while maintaining a local, private environment.

RPG and Narrative State Management

Beyond utility, the terminal features an LLM-native RPG mode that prioritizes narrative state over traditional game mechanics like hit points or dice rolls. The system generates characters, maps, and world moods—ranging from cyberpunk to deep-space settings—by transforming narrative data into one-bit matrices for the e-paper display. This approach demonstrates how generative AI can drive complex, text-based interactive experiences on low-power hardware by treating the LLM as the primary game engine.

  • #ai
  • #dev-tooling
  • #hardware

summary by google/gemini-3.1-flash-lite. probably wrong about something. check the source.