Mohamed Ashraf Elsaed

Blog

Practical posts from real work: AI coding agents, MCP, Laravel, Node and Bun, and engineering decisions. Commands and numbers are included, and sources are dated.

benchmarks

A benchmark gate that catches small regressions

How a seeded 50,000-row corpus, a recall baseline and a p95 latency baseline turned a search benchmark into a pass or fail check that runs on every pull request.

· 2 min read

aletheia

What aletheia-mem gives you, and what it does not

The benefits of Aletheia with their numbers and sources: one local store for many tools, rules written once, private by default, measured retrieval, and the limits.

· 8 min read

benchmarks

Aletheia vs claude-mem: reproducible numbers

A retrieval benchmark of Aletheia against claude-mem 15.2.0 on LoCoMo, with the commands to repeat it, the limits of the comparison and where claude-mem is far ahead.

· 3 min read

ci

CI on Linux, macOS and Windows for a Bun project

What broke when I added a Windows runner to a Bun and SQLite project: temp-folder cleanup, path separators, shell assumptions and test timeouts, and how each was fixed.

· 2 min read

hooks

Hooks designed to fail open for AI coding agents

A failing hook must not stop your AI coding tool. How Aletheia hooks print nothing and exit 0 on error, spool to disk when the database is busy, and what the tests showed.

· 2 min read

system-design

Quality gate for AI-written Laravel: system design

How Claude Kit is built: one script behind the pre-commit and Stop hooks, the same tools in CI, a referenced runtime, and files you own that are not replaced unasked.

· 7 min read

system-design

Local-first memory for AI agents: system design

How Aletheia is built: hooks designed to fail open, redaction before storage, one SQLite file, a leased job queue and a bounded session-start block. Choices and trade-offs.

· 10 min read

system-design

Loupe system design: pins that survive redeploys

How Loupe is built: a comment's journey from a click to an agent, the anchor fingerprint and its scoring, and the lifecycle rule that only a person resolves.

· 8 min read

aletheia

How to use aletheia-mem: memory for AI agents

Install aletheia-mem, save and search memories, add a rule, see what a new session receives and preview the Claude Code installer. Run in a throwaway folder.

· 6 min read

loupe

How to use Loupe: pin feedback for Claude Code

Run Loupe locally, pin a comment on a live page, triage it on a board and let Claude Code read and answer it over MCP. Steps, screenshots and what I checked.

· 7 min read

ai-agents

Why AI coding agents forget between sessions

AI coding agents start every session blank. Here is how Aletheia captures sessions with hooks, stores them in SQLite and feeds context back, all on your machine.

· 2 min read