
Vulkan rendering OSRS on the raspberry pi! (ARM)
At a respectable 55 FPS even, this is a RPI 5 - 8GB

At a respectable 55 FPS even, this is a RPI 5 - 8GB
I switch between a few AI editors (Cursor on desktop, Claude Code on the laptop, Zed sometimes) and every time I'd swap machines I'd burn ten minutes re-explaining myself to a fresh agent. So I built ltm: a small CLI that lets you push the
state of a session from one tool and pull it back from another. Apache 2.0.
Most of it's Go. The CLI is one binary that also runs as an MCP server over stdio (so editors call it as tools) and as a self-hostable HTTP server backed by SQLite. I used modernc.org/sqlite so the whole thing builds with go build, no cgo, no makefile dance.
The MCP-over-stdio piece was actually fun. It's just newline-delimited JSON-RPC over stdin/stdout, so you end up with a bufio scanner and a switch on method name and that's basically the server. Maybe 400 lines.
Binary's 19MB and that bugs me. Roughly half of it is charmbracelet/huh, all for one device-auth wizard. Going to rip that out for plain readline.
If anyone's done something similar (single binary that's CLI + stdio + HTTP server, or pure-Go sqlite tradeoffs) I'm curious how it went.
Hey r/SideProject.
The itch: I bounce between three AI coding tools (Cursor, Claude Code, Zed) across two machines, and every switch meant ten minutes of "okay here's what I'm trying to do, here's what we already ruled out, here's where we left off." The briefing was getting worse than the actual work.
Built ltm over a couple of weekends to fix it. A "Core Memory Packet" is a small JSON blob with the structured state of a work session: goal, locked decisions, failed attempts and what they taught you, open questions, next step. Push it from one tool, pull it from another, resume.
It speaks MCP (Model Context Protocol, the new open thing for AI tools), so Cursor / Claude Code / Zed / Claude Desktop can call ltm verbs directly as tools. Setup is one line per editor.
You can also publish a packet to a public, gist-style URL anyone can view and copy as a prompt. No account needed to read one.
Stack:
- Go CLI, single binary, ~6 MB
- Rails 8 + Postgres for the managed backend (the spec is Apache 2.0, anyone can write their own compatible server)
- Deployed on a single Hetzner VPS with Kamal 2
Repo: https://github.com/dennisdevulder/ltm
Demo GIF in the README.
Pre-1.0, the spec might still change. Managed backend is free and staying free forever, no paywall ever, self-host any time.
Looking for honest feedback on:
- Does the packet shape make sense or am I missing obvious fields?
- Anyone else doing the multi-tool shuffle and feeling this pain, or is this just my brain?
- "publish" and "unpublish" for the public-URL feature, or should it be "share" since teammates think of it that way?
Roast it.