Today’s been about getting this thing set up properly. I’m not a developer by trade, but I’ve always been a coder. That being said, I consider myself a prototype developer, so my projects tend to be loosely managed. I wanted to grow this project up a bit, so I took a step back to think about how it’s going to work and decided that I wanted to focus on an extensible API first.
The Machine
I actually my AI server via Ollama API, Open WebUI and Flowise. That means I don’t want to do my service development on it. I had a beelink miniPC server that I wasn’t using, so I stood it up with Ubuntu like my other machines. It’s got a quad core intel CPU, 16GB of memory and a 500GB nvme drive, so it should be more than serviceable enough as a dev environment. I could use WSL or a VM, but where is the fun in that?
Fast API
I decided FastAPI was the right library to use for building my core service. It’s well supported, easy to use, and has an extensible model out of the box. I set up a basic “ask” endpoint. It takes a question, sends it to my Ollama server and returns the answer. I need to sort out a quality TTS server to give this thing a voice. Once that’s in place, I’ll put together an end to end: edge device takes wake word and passes question, service messages edge device and plays response.
Housekeeping
In addition to standing up my version of Hello World, I spent a bit of time on some housekeeping tasks. I set up SSH keys to my various servers and GitHub so I don’t need to deal with passwords all of the time.
I also set up my source on GitHub in a private repo, and have Visual Studio code on my Windows PC modifying code on an Ubuntu server that’s under source control. That makes managing code a bit easier.
What’s Next
Once I have my end to end happy path going, I’ll start working on the next service module, Home Assistant. I’ve already got a preselected set of entities in a json file I can re-use to connect friendly names to HA entities.
After that I’d like to start working on my notes. I am an extensive note taker. I use Obsidian notes because it stores plain text in markdown format, which is great for ingesting for machine learning. I’ve already put together some code to encode text notes into a Qdrant vector database. The idea is RAG + Project Management + targeted note addition. Think a simplified version of Iron Man telling Jarvis to start a new project and log some details, just via this system and Obsidian notes.
