HN user

martylamb

49 karma

https://martylamb.com

Posts1
Comments28
View on HN

Yes. I found this quickly after wrapping codex in a launcher that uses bubblewrap to exclude certain files and directories based on a config file at the project root. My best solution so far is to also include instructions for the agent that explain that it is not allowed to see certain files, and that their inaccessibility is not an error, and that it must not attempt to access them through other means (e.g. via git history, etc.).

This has been a major improvement, but it's not foolproof.

I'm continuing to work on ChatKeeper, a desktop app (Windows, macOS, Linux) that turns official ChatGPT exports into local Markdown and image files for use in Obsidian or other local PKM tools.

One thing that sets it apart from the (many!) ChatGPT-export browser plugins out there is that it can update your local archive in-place with later exports, even if you've moved or renamed any of those files locally, or added your own front matter to the markdown.

It's not a use case for everyone, but it's very useful for people who want their ChatGPT conversations in the same place as their notes, research, project history, and other local work.

https://martiansoftware.com/chatkeeper/

Hi, blog author here. Didn't expect to see it on HN (but note to self: write titles that HN won't mangle...)

I usually do look for feedback if I'm not just writing a library for myself. Often pretty early on re: concept, naming, and general calling model. I wouldn't say it's formal product development feedback though. Mainly brainstorming with trusted friends and colleagues.

These days I'll sometimes use an LLM as an objective third party for brainstorming purposes too. I don't think I've ever been steered by an LLM into anything awesome, but I've definitely been steered away by them from my own bad ideas. :)

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.

[0] https://martiansoftware.com/nailgun

[1] https://martiansoftware.com/jsap/

[2] https://github.com/charmbracelet

https://martiansoftware.com/chatkeeper/

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.

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.

Info, screenshots, & download all at https://martiansoftware.com/chatkeeper for the curious.

(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.)

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.