neomantra
Joined 13 years ago
Joined 13 years ago
https://github.com/NimbleMarkets/ds4go-apps#svgpad
We have a bunch of interactive Kitty Graphics demos, which run embedded in browser or from terminal. This weekend I was working on watercraft simulation:
Just took our TinyBubbles framework (TinyGo + BubbleTea) and added TinyGhostty [1]. We had all the parts in place.
The web demos use Booba [2] and our ghostty-web fork, so that's libghostty embedding another libghostty. The source cells are composited into our TinyHAL device abstraction. The UX is presented using "Booba Actions" which abuses OSC 7501.
This describes the differences between TinyGhostty and go-libghostty [3]. I've run other demos on embedded devices, but not this one yet. The fonts could use some love.
[1] https://nimbleterminal.github.io/TinyBubbles/?demo=tinyghost...
[2] https://github.com/NimbleMarkets/go-booba
[3] https://github.com/NimbleTerminal/TinyBubbles/tree/main/tiny...
Much of the work uses SVG as an intermediary so this Pele pattern works great. OP is a TypeScript project, seems great for that ecosystem.
Searching found this go-mermaid library [1] that operates similarly with SVG its target. We have a Golang TUI picture/SVG widget and a Golang WASM/browser embedder, so I just forked it and had an LLM add a live Mermaid/SVG demo using them [2]. The demo is intended for go-mermaid so it uses its rasterizer, composited to our widget.
(took <15 minutes since I had worked similarly just days ago and had the components at the ready, plus could point at Pele; these LLMs are ridiculous at forging from patterns)
Cool thing is that same visual experience can be had in a terminal if it supports Kitty graphics protocol.
Here's demo of it enabled in booba, which is our Golang TUI remoting tool: https://nimblemarkets.github.io/go-booba/demos/actions/
The browser UX comes as a JSON spec over OSC 7501, that spec generated from the BubbleTea Help model.
[1] an overhaul of the original which uses libghostty-vt bindings instead of a patchset, fixes Bidi fonts, and adds WebGPU/WebGL renderer, but really a placeholder for whatever Ghostty/Superlogical cooks up.
This OSC 7501 pushes state from Program to Terminal; with an explicit running/idle/fubar "state" field but also K/V data. Then Terminal can provide interactions thereof, such as display it.
What I want is for the Program to push the terminal some map of "key:command" which is available for the terminal to provide interactions thereof. Maybe that can come through just as a key in this?
Here's the motivation: when using a TUI on a phone or tablet, the keyboarding experience is horrible (unless you have a physical keyboard). It takes up too much real estate and most of the time there's only three keys action you want to hit.
An obvious solution is to put up HTML buttons and other chrome for users to tap. Personally, I've handled that bespoke at the library+application level, where the Golang and HTML+JS container work together. There's some reusability because it can just take a BubbleTea Help Model (holds keybindings), but it is limited.
In the last few weeks, I've started seeing Claude do this unasked for me (creating parallel Web/TUI interfaces), but it was actually building more complicated Web scaffolding, rather than it being deterministically rendered from a specification by the harness.
Shout out to TUIOS [2] that is in the article; author has a lot of neat libraries and his `sip` protocol is the basis of that remoting work.
While upstream ds4 only supports Strix, this also handles other AMD GPU architectures (because my cloud MI325X wasn't working at first).
[1] https://github.com/NimbleMarkets/ds4go/blob/main/CHANGELOG.m...
[2] https://github.com/NimbleMarkets/ds4go-apps#running-the-apps
https://gist.github.com/neomantra/d49df05d6b137b9e6844186499...
I started playing with local LLM+MCP in April 2025... I had to beg Qwen to look at the tool list and try anything.
These ds4 models, will happily call tools and all those harnesses I've made are composed of custom tools.
Once the HuggingFace+OpenAI showed how powerful notes are, I added a scratchpad tool to ds4go to improve self-improvement.
While you can do 64G/96G with the Qwen3.8 model, realistically you need 128G. Also, despite tons of playing with local models, the cloud-hosted models on bigger iron are smarter and faster. I don't truly code with my local models and don't recommend this path right now to replace something like Opus/Astra or full-brain DeepSeek4.
The "frontier-ness" of ds4 is great though! It has vast knowledge and thinking capability. Look at that steering video especially. I'm now exploring using ds4 for high-level thinking to create prompts for denser coding models.
In addition to the library bindings, we have a small library of tools (workspace for view/edit, scratchpad for persistence) and making your own is registering a Go function. And in recent weeks, I added the Vision and Qwen support, as ds4 added them.
Even if you don't use the Go library, the ds4go binary makes it really easy to download the libraries off of HuggingFace with a TUI available vie Homebrew.
Here's some TUI toy screenshots, sorry I still haven't released that code; it's of different quality than the others. [3]
EDIT: add ds4go TUI screenshot gist [4]
[1] https://github.com/NimbleMarkets/ds4/releases/tag/v0.8.20260...
[2] https://github.com/nimblemarkets/ds4go#install
[3] https://gist.github.com/neomantra/ae47422c8daf7a458212c93992...
[4] https://gist.github.com/neomantra/40180ade13df93290250ce8c6d...
It’s been really productive and I’ve been asking my agents to communicate using it more and more. I believe it’s relieved my cognitive load a bit while working with them.