{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreibz7ijjtoqjx2f34d47xe6dedz5zthmprrcybmlxkekqxlitlz7le",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mp2orgwydlh2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreidu3m3lcvdffoqlxrj23p2supugffblzz2wxa7ucsjgkmo4qnxogm"
},
"mimeType": "image/webp",
"size": 100490
},
"path": "/jugeni/i-built-jugeni-two-weeks-ago-and-i-have-no-idea-what-it-does-anymore-3234",
"publishedAt": "2026-06-24T19:20:14.000Z",
"site": "https://dev.to",
"tags": [
"ai",
"agents",
"productivity",
"tooling"
],
"textContent": "# I built jugeni two weeks ago and I have no idea what it does anymore\n\nI sat down to write a feature post about jugeni.\n\nI have used it every day for two weeks. I cannot describe what it does anymore.\n\nThat sounds like a failure of positioning. It may be the point.\n\nEvery time I try to name a feature, I realize I have not consciously touched that layer in days. The recap is just there. The decision is already locked. The compact gate says no before I waste another context window. The note is saved before I remember I should save it.\n\nA tool you can describe is still asking for attention.\n\nA tool you forget may have become infrastructure.\n\n## What happened when I tried to write the feature list\n\nI opened my own notes. Half of them I do not remember writing.\n\nThe decisions ledger: I opened it yesterday to lock a decision, found out the decision was already locked, by me, three days ago. I do not remember locking it.\n\nThe vendor stack: I have not had to ask “where are we with the bank paperwork?” in four days. The reminder surfaces in the main thread, on its own, when the state changes. I type `jugeni recap` only when I want the wider view. The mental energy I used to spend reconstructing context is gone, and I did not notice when it left.\n\nThe compact gate: this afternoon I tried to run `/compact` and a hook blocked it.\n\n`5h burn 60%, compact would cost another 7%, denied.`\n\nThat line means the session had already burned 60% of its useful working context after five hours.\n\nI noticed the block after I read the hook log, not in the moment. The decision was made for me. I would have approved it if I had been asked. I was not asked.\n\nThat is the point.\n\n## The paradox\n\nA tool you can describe is a tool you still have to think about.\n\nThe act of writing a feature post is evidence that the feature is not yet smooth. The post you can write about your tool is the post about the layer that has not yet disappeared into the work.\n\nWhich makes this post structurally awkward, and also kind of the joke.\n\nI have been writing about this property for operators for a few weeks. The operators worth trusting are the ones whose operating disappears into the result. You do not see the work. You see the work landing. The smooth is the absence of the seam.\n\nI did not expect to land in the same property from the other side.\n\nTools that disappear into the operator’s work share that shape. The thing you can name is the thing you have not yet absorbed. The thing you cannot name is doing some of the work for you.\n\nWhich means the success metric for jugeni is hostile to writing a feature page. Every absorbed feature is one that resists description. Every describable feature is one I am still actively driving.\n\n## The honest gap\n\nI notice jugeni only when it breaks.\n\nA note that did not save. A recap that missed a thread. A hook that fired at the wrong moment. A decision that should have been surfaced and was not.\n\nFailure is the only feedback channel I have for the parts that work.\n\nThat is a problem worth saying out loud. I do not know what jugeni is silently failing at. Smooth is also where audit becomes hardest. The same property that makes infrastructure good at carrying work makes it bad at announcing its own gaps.\n\nThen the problem recurses. If the tool disappears, the audit layer also has to be quiet. But if the audit layer is quiet, I need a way to know when it failed.\n\nI do not have an answer for this yet.\n\nI have a habit of writing down what I noticed when something broke, and that habit is itself a thread in jugeni. So the tool catches some of its own failures by feeding them back into the same ledger.\n\nThat is not a proof.\n\nIt is a floor, and I will take it.\n\n## What it is, for now\n\nTwo weeks ago jugeni was a folder with three Markdown files and a shell alias.\n\nIt is now infrastructure for the way I work.\n\nPlain Markdown notes. Flat files. No database. A decisions ledger. Active threads. Hooks for budget and compaction. Recaps over vendor state and project state. Status fields that survive the session boundary. Enough boring scaffolding that I can stop reconstructing context from memory.\n\nThe strange part is not that any single feature is complicated.\n\nThe strange part is that the tool became less visible as the pieces started carrying each other.\n\nI did not feel the transition.\n\nI would not have noticed it if I had not tried to write the post.\n\n## Closing\n\nIf you built infrastructure that disappeared, you probably built something right.\n\nIf you can still feel it working, it is not done.\n\nI sat down to describe jugeni and mostly found the shape of what had stopped asking for my attention.\n\nI think that is the post.\n\n_jugeni is a CLI for operator-side discipline: notes, decisions, recaps, hooks, and session state that survive the chat window. Plain Markdown notes, flat files, no database. Two weeks old, currently at 250+ notes, around 30 locked decisions, and 12 active threads. Source release planned once the edges stop moving daily._",
"title": "I built jugeni two weeks ago and I have no idea what it does anymore"
}