Blog
I asked Jarvis for a single graph of the things I have talked about with machines. Jarvis is the assistant I used to call my Grok Bot. I wanted one picture, not five partial ones, and I wanted it in a format I could keep.
497
nodes
7,724
triples
1,631
links
5
platforms, each with a filter
The first request was for ONNX. I got as far as describing the shape I wanted before I remembered what ONNX actually is. A format for machine-learning models. Not a container for the conversation I had about a pull request. I had reached for a file extension because it sounded technical.
RDF was the plainer fit. Triples, links, and vocabularies other people already publish.
Jarvis started with the material already in reach: bot conversations, Cursor cloud-agent work, and GitHub pull requests. That cut was 145 nodes and 2,360 triples, written as RDF Turtle and as JSON-LD. schema.org for the things, PROV-O for where a claim came from, DCTERMS for the dates and titles. I did not need a new ontology to describe my own week.
Then I exported the memory graphs from Claude, Gemini and ChatGPT. Same person. Three vocabularies, and three shapes.
Claude had stored assertions and principles. Gemini had built a schema.org Person. ChatGPT had sorted the lot into topics. Useful, each of them, and none of them willing to line up with the others without a translation.
One of the pastes arrived cut off in the middle of an IRI. It still parsed. That is the awkward kind of failure. A broken identifier looks like a new thing, and the graph will happily grow a twin. I have a rule now, learned the ordinary way. Attach the file. Don't paste it into a chat and hope the scrollback survives.
demon.monster was in there more than once. So were Three Zodiacs, Groq, GitHub, and me. Different labels, different graphs, obviously the same entities if you were the person who had lived the month. They became single nodes, tied with owl:sameAs.
I left the looser matches loose. Rugby league and NRL analysis belong near each other. They are not the same node. Tasmania and Hobart share a coastline and not an identity. Those links are skos:related, which is the vocabulary's way of saying don't collapse this. I used it.
The last source was local Cursor IDE history. I read it. I did not take it. Summaries went into the graph. The raw text stayed where it was.
There is a difference between a map of what I worked on and a second archive of every line I typed. I wanted the map. A daily refresh keeps the live side current. A monthly reminder tells me to go and collect whatever Claude, Gemini and ChatGPT will export that month. They do not offer a feed I trust, and I don't want one I have not read.
497 nodes. 7,724 triples. 1,631 links. Five platforms, and a filter for each. The drawing below is a structural sketch of that graph: position, platform and type. I have labelled a handful of public projects and services. Everything else is only a dot.
Animated sketch of the same graph. About five hundred nodes appear one platform at a time: Cursor and the Grok bot, then Claude, Gemini, ChatGPT, and the local Cursor editor. Copies of the same entity then draw together. Teal rings mark an entity that was remembered on more than one platform. Colour is the kind of node. Labels are limited to those public projects and services.
Fill is the kind of thing. The ring is the platform it came from. A teal ring means the same entity turned up in more than one export.
This is the part I keep thinking about, more than the triples.
Each assistant had stored personal detail I do not remember offering, and would not have put in a document I meant to keep. Health. The suburb I live in. Family. My exact birthdate. I am not going to write any of it down here. The categories are the point.
Split across products, that kind of memory is easy to shrug off. You never see it in one place. Merged, it concentrates. The graph was no longer a catalogue of projects. It was a portrait, and it was more specific than I was comfortable holding in a single file.
So I redacted. Hundreds of times. The first regular expression was double-escaped, which meant it matched nothing, and it failed without saying so. A leak check caught the miss. An earlier bundle had also slipped through with the raw exports still inside. Caught as well, before it left the room. I would like to say the checks were there from the beginning. They were there from the second attempt.
The daily refresh can add a node. It does not get to promote a private fact into the structure. That decision stays with me, which is slower, and is the point.
Memory is splitting across tools. I have five products with five partial, confident ideas of me, and they are under no obligation to agree. They disagree because remembering you is a feature in each product, and handing you the memory in a form you can leave with is not.
I also don't think it's settled who owns that context. If a model remembers a project, a preference, a week, closing the account should not be the moment I find out whether I can take any of it with me. Some of this I can export. Not all of it. The graph is my copy of the part I could reach.
The volume is its own problem. Every assistant offers to remember more. Very few offer an afternoon in which you can see what they already hold. The firehose feels like productivity until you try to audit it. Then it feels like homework you didn't assign yourself.
Open standards are the unglamorous way through. RDF, schema.org, PROV-O, DCTERMS. I can diff them, redact them, and open them in something that is not the vendor's app. I have been locked out of my own notes before. I am trying not to collect a second set.
There is a strain under all of this that I hear from other people who build with these tools. The work moves fast enough that keeping up has become a second job, done in the margins of the first one. A graph does not retire that feeling. It does make the second job visible, which is the only condition I know for deciding what to ignore.
I'll keep the refresh. I'll keep the redaction list. Once a month I'll ask the other tools what they think they know, and I'll read the export before it joins the graph.
The other long piece on here is what I learned shipping Demon Monster: a demo, a pipeline, and a checkout.