SSH Into a Tarot Reading
Open your terminal and type:
ssh tarot.rolandsharp.com
That's it. No install, no signup, no browser. You'll get a three-card spread with pixel art cards, a shuffling animation, and an AI-generated reading โ all rendered in your terminal with 24-bit color.
What is this?
It's a tarot reading app built entirely in Go, served over SSH using the Charm stack. When you connect, you get a full terminal UI: a text input for your question, a card shuffle animation, and three cards drawn from a 78-card deck with original pixel art.
The cards are 24x40 pixel images generated with Stable Diffusion, stored as hex color values, and rendered using Unicode half-block characters (โโ) with true color ANSI escapes. Each card has a hand-tuned border, and the deck comes with its own procedural ambient soundtrack โ though you'll only hear that if you run it locally.
How it works
The app is built on Bubble Tea for the TUI and Wish for the SSH server. Each SSH connection gets its own independent session with its own shuffled deck and reading.
The card art was generated with SDXL-Turbo at 512x768 and downscaled to 24x40 pixels. At that resolution, you need a style that reads well as blocky pixel art โ we landed on a neon aesthetic with electric cyan, magenta, and green on pure black. High contrast and bold shapes survive the downscale better than anything painterly.
The readings are generated by a local LLM (Qwen 0.6B via Ollama), streamed word-by-word with a typewriter effect. Each deck has its own personality prompt โ the neon deck reads like "a midnight oracle in a retro arcade, speaking in sharp neon flashes of insight."
The fingerprint check
The first time you connect, your terminal will show something like this:
The authenticity of host 'tarot.rolandsharp.com' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)?
This is SSH doing what it does best. The server has an ED25519 keypair โ a private key that never leaves my machine, and a public key it presents to every connection. Your SSH client is asking: do you trust this server?
Type yes and your client stores the fingerprint. Next time you connect, it checks silently. If the fingerprint ever changes โ someone intercepting the connection, a different machine pretending to be the server โ SSH will refuse to connect and warn you loudly. That's the whole point.
Zero user management
Here's the beautiful thing about serving an app over SSH: there are no accounts. No passwords. No database of users. No OAuth flow. No cookies.
Every person who connects already has an SSH keypair on their machine. The cryptographic handshake happens automatically โ the server and client authenticate each other using public key cryptography, establish an encrypted channel, and you're in. The server doesn't need to know who you are. It just needs to serve you some tarot cards.
If I ever wanted to restrict access, I could collect public keys and only allow those in. Adding a user means appending one line to a file. Removing a user means deleting that line. No password resets, no email verification, no session tokens. SSH key management is user management, and it's been battle-tested for decades.
For a tarot reading app that anyone should be able to try, I leave the door open โ any valid SSH connection gets a reading.
Try it
ssh tarot.rolandsharp.com
Your terminal needs to support 24-bit color (most modern terminals do). The source is on GitHub.