crankers

Oh, the Wookiees aren’t going to like this! Just what Kashyyyk needs, a bunch of noisy clankers moving into the neighborhood.

Crankers is a speech terminal for the Playdate console. Inspired by time sharing terminals, Crankers turns your Playdate into a portal to a more powerful computer. It consists of:

Everything works on machines you own using open weight models, without sending any data to online services. Crankers respects your freedom. It’s also free in the sense that you don’t need to pay anyone to use Crankers. Freedom takes work, though. Setting things up is a bit more complicated than installing an app, but I’ve tried very hard to keep things simple.

This is also an experiment rather than a polished product. There are some limitations:

I actually did get remote connection to work with Cloudflare tunnels, but the setup was too convoluted and I have no idea how secure it was. Local-only connection also means your data never leaves your home. You can also compile two different instances of the client, one for use with your home server, and one for your office server. A simple way to think about how secure this is is that anyone who can connect to your WiFi can read, modify, and delete all data on your computer.

I haven’t tried very hard to improve the latency, and I honestly don’t mind it. Talking to a seemingly not very bright robot is a nice break from the overstimulating experience of modern internet.

Small local models can be pretty dumb though, especially if you’re used to full size models like Claude and GPT. For example, they can only execute the simplest unix commands, and hallucinate frequently. To help them out, you can save some useful scripts in the server diretory. For example, server/checkmail.sh lists the 5 most recent unread emails with notmuch and jq (btw, I found mutt wizard to be very helpful for setting up notmuch + mbsync). Remember to make the script executable with e.g. chmod +x checkmail.sh.

Prerequisites

  1. Playdate SDK
  2. Python 3.9+
  3. Ollama

You should also get a static local IP address for the computer you will use as the server. There are different way to achieve that, and you can ask your favorite AI model for guidance.

After installing ollama, download a model with either ollama pull gemma3:4b or by chatting with the model in the desktop app. If you pull a different model, make sure to set OLLAMA_MODEL in server/.env.

Quick Setup

Clone the repository and follow the steps below.

1. Set Up and Start the Server

cd server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

python app.py

2. Configure and Build the Playdate Client

cd client
cp config.example.lua config.lua

# Edit `config.lua` and enter the local IP of your server

pdc client crankers.pdx
open crankers.pdx

Once you’ve tested in the simulator, you can sideload crankers.pdx to your Playdate console.