# Building an OpenCode Companion with ESP-BLE-UART and ESP-VoCat

DevFeed: [Building an OpenCode Companion with ESP-BLE-UART and ESP-VoCat](<https://devfeed.tech/articles/building-an-opencode-companion-with-esp-ble-uart-and-esp-vocat-13781.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2026/07/esp-ble-uart-opencode-companion/>)

Author: John Lee

Published: 2026-07-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [ESP32](<https://devfeed.tech/topics/esp32.md>), [ESP32-S3](<https://devfeed.tech/topics/esp32-s3.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bluetooth](<https://devfeed.tech/tags/bluetooth.md>), [bluetooth-le](<https://devfeed.tech/tags/bluetooth-le.md>), [console](<https://devfeed.tech/tags/console.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp-iot-solution](<https://devfeed.tech/tags/esp-iot-solution.md>), [esp-vocat](<https://devfeed.tech/tags/esp-vocat.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [opencode](<https://devfeed.tech/tags/opencode.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

## AI overview

This tutorial explains how to build a physical OpenCode companion with ESP-VoCat. It uses ESP-BLE-UART to send session status and permission prompts to an ESP32-S3 device, whose screen and button support status display and approval or rejection decisions.

## Source excerpt

This article shows how to build a physical OpenCode companion with ESP-VoCat. The device displays session status and permission prompts, then sends one-button approval or rejection decisions over BLE UART.