Recently, I came across an Interesting Prompt for ChatGPT.
Create an Image of how you perceive me based on our conversations so far.
The result of this prompt made me reflect on the importance of owning and managing our LLM interaction history. I realised that every LLM tool I use might have a slightly different perspective of me based on the data they have collected within their own ecosystems. None of these perspectives are complete, and I don't have control or access to this data.
At first I focussed on finding ways to export my interaction history from various LLM platforms. None have a an API for progrmmatic access. Using scripts and browser extensions was also not an option since maintaining them across multiple platforms would be a nightmare and they would break frequently as platforms received updates.
After exploring these two options for days and hitting dead ends, I realised that the only way to truly own my LLM interaction history was to take control of it from the moment I enter the prompt.
Owning the Interface: My OpenCode Setup
OpenCode is an open-source, local-first coding harness that doubles as a powerful LLM interface. It ships with a first-party web UI, a terminal mode, and a headless server AND every session is stored locally on my machine.
That changes everything. My interaction history lives as structured data on my own disk — not behind an export request in someone else's cloud, not siloed across platforms with undocumented APIs. Every prompt, every response, every tool call and file edit sits in a local database under ~/.local/share/opencode.
I keep a dedicated workspace at ~/Documents/chat where all my interactions pass through a single root. Research queries, code refactoring, late-night questions, trip planning, investment comparisons — everything lands in one place. The history compounds naturally because the interface isn't split across ChatGPT, Claude, Perplexity, and whatever else. One interface, one history file.
One thing that I was missing, was the deep research type reports that perplexity and gemini can do. Solvable. Just need a search engine and a new subagent.
The ownership story goes deeper. OpenCode supports a rich plugin system that allows me to hook into session events. I wrote a small plugin that records every interaction — prompt text, response content, tool invocations — into my own Postgres (Vector) database. That means my LLM history isn't just sitting in an opaque app database. It's queryable SQL and ready for direct use and periodic analysis.
It is not a consumer product. OpenCode is a developer harness, and using it as a daily conversational interface demands some comfort with configuration files and terminal sessions. You give up the polish of a purpose-built chat application and some features. In return, you get ownership of the data, control over the interface, and limitless customization.
My journey with this is not over yet. This was just about collecting the data. Next up, using it.