I spent a long time caring about JVM startup time and CLI suitability (and wrote nailgun [0] over 20 years ago and jsap [1] shortly after specifically because of it), so it's pretty wild to see how far things have come. Modern JVM startup speed and GraalVM native-image have eliminated most of the old excuses. jlink+jpackage help a lot with distribution, and JBang takes it to another level. I've used JBang before but still learned some new tricks from this post. Honestly, it feels like what JNLP/WebStart should have evolved into.
I'm not convinced that requiring users to already have JBang installed is the best adoption strategy. But a native package that pulls in JBang if needed and drops a shim launcher/desktop shortcut seems like a natural approach and maybe a fun project.
On the TUI side, java could really use something as approachable and pretty as go's Charmbracelet [2]. Once developers regularly see compelling java TUIs in the wild, it'll change their perception.
The tooling is here, or at least really close. At this point, it's mostly outdated opinions holding java back in the terminal.
I built ChatKeeper because I wanted to treat my ChatGPT history like a local knowledge base, with local-first access to my data.
It’s a command-line tool (GUI in progress) that takes a full ChatGPT .zip export and syncs it with local Markdown files. You can move and rename them freely and they will stay in sync on future runs.
It pairs well with tools like Obsidian and lets you link your own notes to specific conversations or even points within them.
Revenue is modest but growing month over month. It’s a one-time purchase, not a subscription.
Most users so far are researchers and other ChatGPT power users who already live in Markdown or want to do things like curate and compress the context of very long-running conversations.
Hey miller_joe! I actually just built this - Claude Vault! (Free)
Same philosophy as ChatKeeper - local-first markdown files that sync and work great with Obsidian. I had the exact same problem with my Claude conversations buried in JSON exports.
Just published to PyPI:
pip install claude-vault
claude-vault init
claude-vault sync conversations.json
----
Auto-generates tags using local Ollama (completely offline, no API costs) and detects relationships between conversations
Would love to collaborate or integrate with ChatKeeper down the line - seems like we're solving the same problem for different LLMs!
Yep, you're not the only one, and I want to add support for more formats/LLMs. Right now ChatKeeper's internals are very ChatGPT-specific, but I have a plan to change that and Claude (which I also use frequently) will be the first one I add support for.
I made something called ChatKeeper to deal with exactly this.
It syncs your entire ChatGPT history to local markdown files so you can organize, rename, or integrate them with other work however you like. I use it to keep my conversations alongside related notes in Obsidian, but since it's just markdown, you can use any system at all.
I also built it because ChatGPT is a cloud-based service which, as we all know, can vanish, change its UI, or alter its terms at any time, and I wanted control over my own data.
(full disclosure: I sell it, but it's cheap, not subscription-based, and has a free trial.)
(nerd disclosure: Reverse-engineering the ChatGPT export format is an ongoing game of whack-a-mole as they continually add new features. The software is currently a CLI but a GUI version is in the works.)
Cool but the update structure requiring a new license after a year would turn me away. Could I at least pay a reduced rate for later updates since I already bought the full license..?
That's completely reasonable. Honestly, ChatKeeper hasn't been around long enough for that to come up yet. My intention was to keep it priced so that's not an issue, but perhaps I did not succeed there.
I will seriously consider that - thanks for the suggestion!
I just finished adding support for ChatGPT's new GPT4o image generator to <https://martiansoftware.com/chatkeeper> and it's working great. Testing it over the next few days and then it'll be ready for release.
This is a tool meant for heavy users of ChatGPT who want to sync their *entire* conversation history to local markdown files. If that describes you, I invite you to check it out!
Very nice. It reminds me of a similar all-in-browser file transfer tool I built ages ago called nearshare. This was WAY before webrtc was a thing so my approach was to actually run a web server in the browser via a java applet. :)
It's not marketed as a markdown-to-pdf tool, but I've found that Obsidian (https://obsidian.md) does an excellent job. Just create a new "vault", paste your markdown into a new note, and export to PDF.
I love Obsidian too, however I found that internal links didn't work when exporting it. Do you know what format works? My internal links work in the Obsidian preview but not in the PDF export.
Do you mean internal links within the page, or within your vault? I can't say I've relied on either in a pdf export, but I would expect the former to work and the latter to fail. I suppose links to other notes in your vault could use the obsidian:// protocol but that would be weird to say the least.
How should the internal links work when converting into a PDF? They are obviously intended to enable a wiki-like structure in your notes, but I don't see a ways they could work upon export.
Some internal refactoring of ChatKeeper[1] to support a gui in addition to its cli. I could do this very quickly by just building a form that accepts all of its options but the point of the gui is to make it nicer to use for less technical folks.
Good summary. I've landed on all of the above with my own projects, from a mix of experience, reading, and reason. Hardest for me has been making time between family, work, and other activities that are important for me.
Unlike when I was younger I can't just stay up coding until 3AM anymore. In fact I find myself without the mental energy after work that I want to put into my projects, so evenings are out completely for me.
So instead I wake up at 5AM and put myself into it before work. It was a big adjustment, but all I needed to do while acclimating to that schedule was ask myself each morning which I wanted more: warm blankets or a successful project? Now it's a pretty energizing way to start the day.
> but all I needed to do while acclimating to that schedule was ask myself each morning which I wanted more: warm blankets or a successful project?
I choose warm blankets lying next to my warm wife where my heat and shelter is paid by exchanging my labor for money 40 hours a week, paid time off, paid health care, etc
I'm not convinced that requiring users to already have JBang installed is the best adoption strategy. But a native package that pulls in JBang if needed and drops a shim launcher/desktop shortcut seems like a natural approach and maybe a fun project.
On the TUI side, java could really use something as approachable and pretty as go's Charmbracelet [2]. Once developers regularly see compelling java TUIs in the wild, it'll change their perception.
The tooling is here, or at least really close. At this point, it's mostly outdated opinions holding java back in the terminal.
[0] https://martiansoftware.com/nailgun
[1] https://martiansoftware.com/jsap/
[2] https://github.com/charmbracelet
reply