Event-Sourced Associative Recall for Agent Memory
An agent memory built on a typed graph and an append-only event log instead of a vector store, so recall reinforces across sessions. Measured lift: +7.4% MRR, +16.1% R@10.
Read MoreSharing our thoughts on technology, design, and product development
An agent memory built on a typed graph and an append-only event log instead of a vector store, so recall reinforces across sessions. Measured lift: +7.4% MRR, +16.1% R@10.
Read MoreOur remote config was YAML with no build-time semantics: a product could configure a ghost key, pick a value out of range, or split experiment weights that didn't sum to 100. Splitting mechanism from policy into two .rc dialects let the compiler reject all of that before runtime.
Read MoreWe dropped Sentry and rebuilt the iOS crash path in-house: a release stage that reports dSYMs to MinIO, getsentry/symbolicator for symbolication, and an agent that triages issues through mainline-cli.
Read MoreA performance metric pipeline shipped, compiled, and registered cleanly, yet recorded zero rows for months. Four serial gaps, each one passing every green light.
Read MoreWe sample telemetry to control cost. Ratios and percentiles survive sampling for free — but business totals don't, and dividing by the sampling rate quietly lies to you. Here's the distinction that saved our dashboards.
Read MoreTwo small DSLs in our monorepo each project a single spec into Swift, Go, TypeScript, Proto and ClickHouse DDL. The shape is the same both times: one Rust binary, several subcommands, one genrule per output.
Read MoreOne analytics binary did ingest, enrich, query, and admin. We split it into collector/worker/datahouse, replaced HTTP+JSON+HMAC with Connect-RPC, and made test data physically incapable of reaching prod dashboards.
Read MoreA single shared River queue let a daily 100-deep apprank burst starve sub-second cron jobs. We split jobs into nine kind-scoped queues with independent worker budgets, then instrumented each worker — after decoupling OTel metric emission from trace export so dashboards stop waiting on a collector.
Read MoreA three-path i18n-audit toolchain (static CSV check, Swift source scan, pseudo-localization OCR) that took one app from 247 hardcoded leaks to 0, with full-locale CSV coverage above 95 percent.
Read MoreOur agent runtime hung for 30s on startup because one process sent IPC before the other was reading. The fix was not a sleep — it was making the bad ordering a compile error via a typestate bootstrap chain plus an explicit IPC budget.
Read MoreHow we folded the Mainline CI/CD platform and a five-stage analytics pipeline into the iOS monorepo: where the boundaries go, how Go and pnpm dependencies get shared, and a hash-based port scheme that keeps worktrees from colliding.
Read MoreA runner leaked one defunct process per pod create-destroy cycle because Release() does not reparent. The fix routes every long-lived child through one process manager with a real double-fork.
Read MoreA dotted Google email flowed unchanged into a username, got templated into an org slug, and the API rejected it with 422. The fix wasn't one validation call — it was six layers that each fail closed.
Read MoreLoopal's agent had identity and task procedures but no tiebreaker when guidelines conflicted. We added six Prime Axioms in a priority-110 prompt fragment — here is what each one fixes and why it sits above explicit user instructions.
Read MoreEach agent tool carried a hand-written JSON schema and a separate hand-written parser. The two drifted. A Rust trait made the parameter struct the single source for both.
Read MoreOur agent sandbox blocked legitimate ops work with hard errors the user had no way to override. The fix was to stop treating path violations as fatal and route them through the permission system instead.
Read MoreA single deep-research request spawned 38 agents; one earlier task spawned 129. Three mechanisms — depth-degraded tools, an atomic hub budget, and forked context — bound the agent tree without a hard recursion cap.
Read MoreHow AgentsMesh moved channels from a global single-channel store to a per-channel cache with IM-standard scroll, and wired @mention to forward a prompt straight into a pod's PTY.
Read MoreOur pod daemon spoke to its manager over Unix sockets on macOS/Linux and named pipes on Windows. Two transports, two test paths, and a 104-byte path limit. We collapsed all of it onto TCP loopback with a per-session auth token.
Read MoreTerminal image paste returned 502 in US deployments: the 15s backend timeout was shorter than a proxy-to-S3 round trip. Moving to presigned PUT/GET removed the backend from the data path and deleted ~900 lines.
Read MoreFrom the initial idea to the final product, we spent an entire year polishing Craft Widgets. This post shares our journey, design decisions, and why we believe widget customization is a direction worth pursuing.
Read MoreSwift 6's strict concurrency checks brought us plenty of challenges, but also elevated our code quality to a new level. This post shares the problems we encountered during migration and our final solutions.
Read MoreCreating widgets that are both beautiful and functional in limited screen space is no easy task. This guide shares the design principles and best practices we've learned while developing Craft Widgets.
Read MoreWhy AgentsMesh? From the initial vision to becoming a tech team focused on the iOS ecosystem, this article tells our origin story.
Read More