Adding a User Interface to ChatGPT with BeeWare — Part 1

David Such
8 min readJan 16, 2024

Attempting to massage user inputs and output in ChatGPT is painful. We spent hours trying to print some coloured text using LaTeX, sometimes it works and sometimes it doesn’t. So much for no code development, we have capitulated and resorted to pulling at the Python Interpreter. Trying something new, we have wrapped our GPT-4 engine in BeeWare, which promises write once run everywhere functionality. This will also allow us to compare the OpenAI API vs browser GPT responses.

Figure 1. ChatGPT’s vision of a UI [Image Credit: DALL-E]


BeeWare is a suite of tools and libraries for writing Python applications and using the native user interface. Its primary goal is to allow developers to write their apps in Python and release them on various platforms like iOS, Android, Windows, macOS, Linux, Web, and tvOS without rewriting in multiple languages. We like it because it is FREE, open source, and was started by an Australian (albeit from Perth).

Figure 2. Brutus the Bee — Manga Style [Image Credit: DALL-E]

Setup Notes for Mac Users

We wont reproduce the tutorial on setting up BeeWare, it is well explained on their site and straightforward. We will provide some supplementary notes for Mac Users, and highlight things that were not immediately obvious.

1. Adding the BeeWare Directory to your Path

You will probably want to access BeeWare from anywhere on your system. For this to happen, the location of BeeWare needs to be added to your PATH. To ensure the change persists, you need to add the new path into one of your config files like ~/.profile, .zshrc, or ~/.bash_profile, depending on which shell you use.

To determine which shell your system is using, type the following in Terminal:

echo $SHELL

This will probably return, /bin/zsh, on recent Macs (i.e., Z shell). Edit the relevant profile (e.g., for zsh: nano ~/.zshrc), and add the directory where you installed BeeWare:

export PATH=~/BeeWare:$PATH

Save the file, and then start a new terminal session. To test if it worked:



David Such

Reefwing Software · Embedded Systems Engineer · iOS & AI Development · Robotics · Drones · Arduino · Raspberry Pi · Flight Control