DeskHog is an open-source, 3D printed, palm-sized developer toy.
It's a toy to tinker with, adapt, and to get curious with. We'll be folding in a library of simple example games and apps, including a pomodoro timer and versions of Pong, Rogue, Flappy Bird. You can see PRs for these in this repo now for inspiration!
We think that sounds like fun and, if you do too, then DeskHog is for you.
DeskHog packs an Adafruit ESP32-S3 Reverse TFT Feather in a custom-made 3D printed case. It comes complete with a 240x135 color TFT display, a 10-hour battery life, WiFi, and a cute little LED so you can find it in the dark.
A plug-and-play DeskHog hardware kit is coming soon (so you can get everything in one box). In the meantime, here’s what you’ll need if you want to make DeskHog yourself right now.
- ESP32-S3 Reverse TFT Feather –
Adafruit 5691
– buy: Adafruit, DigiKey, Mouser, Botland (EU), Cool Components (UK), Electromaker, BerryBase (EU) - Optional: PKCell 552035 350mAh 3.7V LiPoly battery – buy: Adafruit, Tinytronics (EU), BerryBase (EU)
- 3D printed enclosure – print: 3mf file
DeskHog can do a couple of things by default, but the real joy lies in expanding the capabilities by adding them yourself.
A couple of basic cards (screens) are included on the firmware and were built by Danilo Campos.
- ProvisioningCard: Displays a QR code to connect to the device and shows connection stats.
- InsightCard: Visualizes PostHog data. Still a bit of a WIP, so contributions welcome!
- FriendCard: Lets Max the hedgehog visit with you and provide encouragement.
We're working on adding some of the following games to an /examples
folder which will include a selection of games and apps for you to play with. If you can't see them in the /examples
folder it's probably because they exist as unapproved PRs while we work on them. No problem, just checkout the branch!
Example games include:
- Pog: A Pong clone by Leon Daly
- IdleHog: An idle clicker by Chris McNeill
- One Button Dungeon: An idle Roguelike by Joe Martin
- Dictator or Techbro: DeskHog Edition: A quiz game by Chris McNeill
- Notchagotchi: A virtual pet by Sophie Payne
- Flappy Hog: A Flappy Bird clone by Joe Martin
- Hog Speed: A reaction game by Chris McNeill
- Pineapple Reflex: A pizza-based game by Sophie Payne
- Three Button Dungeon: An Ultima-like by Joe Martin
Example apps include:
- Awkwardness Avoider: A smalltalk prompter by Annika Schmid
- Pomodoro: A productivity timer by Annika Schmid
All of the example apps were built in 24 hours at a PostHog hackathon by people who hadn't coded before at all. These example cards are a testament to what's possible when vibe coding on DeskHog, but some lack polish - so make sure you know how to reset DeskHog. Just in case.
Review tech-details.md for info on architecture, libraries and key components used in this project.
We're actually cutting the storage space in half so that over the air updates can be loaded to the unused half of storage. You can end up in a place where the board just won't boot to the correct partition.
To fix this, choose Erase Flash and Upload from the PlatformIO Project Tasks menu.
We couldn't have built DeskHog without Cursor's help, and we encourage agent-driven development with a few caveats.
LLMs often struggle with multi-threaded embedded systems. DeskHog’s firmware has strict rules for core/task roles; AI might overlook them unless you guide it.
If you're looking to get started, we recommend using Cursor with the PlatformIO extension. They work well together and you can use Cursor's chat function to start building all sorts of things with natural language.
Use tech-details.md
to give your agent broad context on the device. Still, even with that you should bear in mind the following advice:
- You should encourage AI to follow existing patterns: use
EventQueue
for cross-core messaging and update the UI only on the UI task. - Flag any AI suggestions that touch the UI from the wrong core.
- Review and test thoroughly—watch for “LLM slop” (unused vars, odd delays) and clean it up.
Think of your AI as a speedy junior dev: brilliant but prone to mistakes. You’re the senior dev keeping it on track. With that balance, AI can boost productivity while keeping DeskHog reliable.
If you want to turn the device off, hold ● + ▼ for two seconds. The device will enter deep sleep mode.
To wake the device, press the reset tab on the left.
- Status card: working
- WiFi provisioning card with QR Code: working
- Friend card to give you (mild) reassurance: working
- Numeric card for Big Number insights: working
- Funnel card: needs a redesign; probably should be horizontal layout instead, won't display more than three steps right now
- Line graph card: broken, not properly scaling larger data sets, probably fine if you have an insight scoped between 7-30 days
- Other insights: not yet supported
The following PRs would be interesting, and may earn you a free DeskHog kit or other merch:
- Additional insight parsing and visualizations for Insight Card
- More games and apps! We think limiting things to one available button prompts creativity
- Support for other boards and displays
- Enhance the web UI and
ConfigManger
to allow re-ordering of insights, set custom titles per-insight - LLM slop mitigation: if you see anything obviously stupid in this code that hasn't yet been caught and cleaned up
- DX improvements around task isolation: if your experience with embedded code says there's a better way to architect this, happy to follow your lead
- Improved C++: not my preferred language, feel free to suggest idiomatic and architectural improvements
- Desk utilities, like a pomodoro timer; also constrained: center button only. Be creative!
- PlatformIO config improvements: flashing builds causes a reboot that seems unnecessary, maybe you know a better configuration
- OTA update mechanisms
PRs over issues, but if you've got any trouble, feel free to open an issue. You can also contact the maintainer, danilo@posthog.com.