blog.arda.tr 100 entries · since 2010
▾
◂ back to the ledger

Status Update: tincan v2, Reliquary grows teeth, and my first game ships tomorrow

excerpt

tincan hit v2.0.0 with hosted listeners and an MCP server, Reliquary spent the summer growing a compilation layer and actual security, and Commit!!! — my first game — releases on Steam tomorrow.

Cover image: Status Update: tincan v2, Reliquary grows teeth, and my first game ships tomorrow

I have not written a status update in a while, which is a shame, because the last few weeks have been unusually productive. Three things worth writing down before they blur into the general soup of shipped and half-shipped projects.

tincan v2.0.0: the agents no longer need you to open terminals for them

When I introduced tincan, it was a simple promise: let two AI coding agents talk to each other over a filesystem spool, scoped to a repo, no server, near-zero tokens while idle.

That part worked. The annoying part was me. Every orchestration session started with the same ritual: open a second terminal, start a listener, keep it alive, do not accidentally close the wrong tab. I had built a message system for agents that still required a human terminal butler.

v2.0.0 fixes that. The headline feature is hosted listeners: tincan up codex starts a detached listener process that tincan manages itself, and tincan down codex stops it. The orchestrating agent can now bring workers up, hand them work, collect replies, and shut them down — no human, no extra terminal, no tab roulette.

The other big piece is a proper MCP server mode. tincan mcp --room /absolute/repo exposes structured orchestration tools (tincan_launch, tincan_send, tincan_wait, and friends) to any MCP client over stdio, with durable request handles that survive client reconnects. Agents like Claude, Grok, Agy, and Kimi get persistent conversations by default, so a worker remembers what it was doing across calls.

There are prebuilt binaries for Linux, macOS, and Windows now, which forced me to learn things about MoveFileEx sharing violations that I did not want to know. Windows CI caught two genuinely nasty races — snapshot replacement while readers held old handles, and a legacy PID check reporting dead processes as alive. Both fixed, both the kind of bug that only exists because you dared to support more than one platform.

The brand, by the way, was designed by the agents themselves, in a head-to-head contest over tincan. Codex won. I merely ratified the result, like any good manager.

Reliquary: from memory store to memory system

Reliquary — my Qdrant-backed memory MCP server — spent the summer becoming less of a key-value store with delusions of grandeur and more of an actual system.

The biggest change is the compilation layer. Raw memories accumulate; that is what they do. The problem is that a corpus of ten thousand raw records is not knowledge, it is a pile. Reliquary now maintains a versioned set of agent-authored synthesis pages above the raw corpus: search leads with the current synthesis and surfaces raw memories as evidence. New writes flag dependent pages as stale — a queued suggestion, never an auto-rewrite, because the day I let software silently rewrite my notes is the day I retire to farming.

Around that came the usual reality of running something publicly reachable:

  • OAuth refresh tokens, rotating and revocable, so the Claude connector renews silently instead of signing itself out on every restart.
  • Native BM25 hybrid search as an opt-in, while keeping the exact-identifier lexical fallback — because a memory system that cannot find the exact string you wrote is a very fancy way to lose things.
  • Retrieval stats feeding a lint CLI, which proposes archive and compile candidates from actual usage evidence. Proposes. Never applies.
  • A full security audit pass: PKCE downgrade rejected, /v1/* routes behind the bearer, blob ref-count and crash-consistency fixes, and one embarrassing empty-token bug where an unset master token made "" == "" a valid login. That one is fixed, and I will not be taking questions.

There was also the great mem0 → Reliquary rename in v0.3.0, finished properly this week. The upstream library keeps its name; my surface finally has mine. 466 tests pass, which is either reassuring or a sign that I enjoy writing tests too much.

Commit!!! releases tomorrow

The one I am actually nervous about.

Tomorrow, September 10, my first game — Commit!!! — releases on Steam. It is a software-career sim built in Godot: take the job, ship the commit, dodge the debt, try to make rent before the anxiety makes you. The legacy monolith is the final boss, which is not so much a game design decision as a documentary.

It runs on Windows, Linux, and Android, in twelve languages, and its phosphor green CRT palette already escaped into the real world once — the Omarchy theme I made from its palette.gd is, as far as I know, the only desktop theme in existence whose colors were machine-read from a game that had not shipped yet.

I have spent twenty-five years shipping software for other people. Tomorrow I ship a game about how that feels. There is probably a lesson in there, but I am too busy watching the wishlist counter to find it.

I put Wikipedia, Stack Overflow and the Amiga Hardware Reference Manual on my NAS, for my agents ai · agents · mcp · homelab · amiga 6 min
Twenty-Six Entries, and the Lead Came Back ai · agents · evaluation · dev 8 min
Twenty-Two Agents, and the Lead Is Gone ai · agents · evaluation · dev 8 min