# Mohamed Ashraf Elsaed > Mohamed Ashraf Elsaed is a technical lead in Cairo who builds open-source tools for AI coding agents (Aletheia, Loupe, Claude Kit) and writes about Laravel and Node.js. Mohamed Ashraf Elsaed is the author of this site. Facts about him are on the press page. Every post has a plain Markdown copy at the same address ending in .md. Numbers on the packages page are read from the npm, Packagist and GitHub APIs and carry a fetch date. ## About - [About](https://mohamedashrafelsaed.com/about/): who he is and what he works on - [Press kit and facts](https://mohamedashrafelsaed.com/press/): biographies, name spelling, verified profiles - [Packages](https://mohamedashrafelsaed.com/packages/): npm and Packagist packages with live numbers - [For AI assistants and agents](https://mohamedashrafelsaed.com/for-agents/): how to read and cite this site - [Author as JSON](https://mohamedashrafelsaed.com/person.json): schema.org Person ## Projects - [Aletheia](https://mohamedashrafelsaed.com/projects/aletheia/): Aletheia (aletheia-mem) gives Claude Code, Codex, Cursor and Gemini CLI one local SQLite memory over MCP, REST and CLI, plus rules synced to CLAUDE.md and AGENTS.md. - [Claude Agent SDK for Laravel](https://mohamedashrafelsaed.com/projects/claude-agent-sdk-laravel/): An Anthropic Claude Agent SDK for PHP and Laravel: AI agents with tool use, sandboxing, MCP servers, subagents, hooks and structured output through the Claude Code CLI. - [Loupe](https://mohamedashrafelsaed.com/projects/loupe/): Loupe is an embeddable visual-feedback SDK: inspect an element, pin a comment, capture a screenshot, and send it to Claude Code through MCP. Comments survive redeploys. - [Claude Kit](https://mohamedashrafelsaed.com/projects/claude-kit/): Claude Kit sets up Claude Code and other AI coding agents on a Laravel project: rules, a PHPStan, Pint and Pest quality gate, skills, git hooks and frontend tooling. - [Prompt Vault](https://mohamedashrafelsaed.com/projects/prompt-vault/): Prompt Vault is a privacy-first Chrome extension (Manifest V3) that saves prompts from Claude, ChatGPT, Gemini and other AI chats so you can reuse them. ## Topics - [AI coding agents: tools and notes](https://mohamedashrafelsaed.com/topics/ai-coding-agents/): Tools I build around AI coding agents such as Claude Code: memory between sessions, shared rules, visual feedback from a live page and a Laravel quality gate. - [Model Context Protocol (MCP): tools I build](https://mohamedashrafelsaed.com/topics/mcp/): What the Model Context Protocol is, and the MCP servers I maintain: Loupe hands pinned page comments to Claude Code, Aletheia serves memory over MCP, REST and CLI. - [Laravel and AI agents: packages and notes](https://mohamedashrafelsaed.com/topics/laravel-ai/): Packages for building and running AI agents in Laravel and PHP: the Claude Agent SDK for Laravel, Claude Kit for project setup and the Loupe Laravel package. - [Node.js and Bun tooling: projects and notes](https://mohamedashrafelsaed.com/topics/node-bun/): Developer tools I build with Node.js, Bun, TypeScript and SQLite: Aletheia (memory and rules hub) and Loupe (feedback SDK and MCP server). ## Glossary - [Agent memory](https://mohamedashrafelsaed.com/glossary/agent-memory/): Agent memory is information that an AI coding agent keeps between sessions, so that it does not start every session blank. - [MCP (Model Context Protocol)](https://mohamedashrafelsaed.com/glossary/mcp/): MCP (Model Context Protocol) is an open-source standard for connecting AI applications to external systems. - [AGENTS.md](https://mohamedashrafelsaed.com/glossary/agents-md/): AGENTS.md is a simple, open format for guiding coding agents: a standard Markdown file at the root of a repository that holds the context and instructions agents need. ## Tools - [CLAUDE.md and AGENTS.md checker](https://mohamedashrafelsaed.com/tools/claude-md-agents-md-checker/): paste both files to see which one Claude Code reads ## Posts - [A benchmark gate that catches small regressions](https://mohamedashrafelsaed.com/blog/a-benchmark-gate-that-catches-small-regressions.md): 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. - [What aletheia-mem gives you, and what it does not](https://mohamedashrafelsaed.com/blog/aletheia-mem-benefits-and-limits.md): 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. - [Aletheia vs claude-mem: reproducible numbers](https://mohamedashrafelsaed.com/blog/aletheia-vs-claude-mem-numbers.md): 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. - [CI on Linux, macOS and Windows for a Bun project](https://mohamedashrafelsaed.com/blog/cross-platform-ci-for-a-bun-project.md): 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. - [Hooks designed to fail open for AI coding agents](https://mohamedashrafelsaed.com/blog/hooks-that-never-block-your-agent.md): 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. - [Quality gate for AI-written Laravel: system design](https://mohamedashrafelsaed.com/blog/system-design-claude-code-quality-gate.md): 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. - [Local-first memory for AI agents: system design](https://mohamedashrafelsaed.com/blog/system-design-local-first-agent-memory.md): 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. - [Loupe system design: pins that survive redeploys](https://mohamedashrafelsaed.com/blog/system-design-loupe-re-anchoring.md): 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. - [How to use aletheia-mem: memory for AI agents](https://mohamedashrafelsaed.com/blog/use-aletheia-mem-memory-and-rules.md): 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. - [How to use Loupe: pin feedback for Claude Code](https://mohamedashrafelsaed.com/blog/use-loupe-with-claude-code.md): 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. - [Why AI coding agents forget between sessions](https://mohamedashrafelsaed.com/blog/why-ai-coding-agents-forget.md): 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. ## Policies - [How this site is made and corrected](https://mohamedashrafelsaed.com/editorial/) - [Privacy policy](https://mohamedashrafelsaed.com/privacy/) - [Terms of use](https://mohamedashrafelsaed.com/terms/) ## Optional - [Full text of every post](https://mohamedashrafelsaed.com/llms-full.txt) - [RSS feed](https://mohamedashrafelsaed.com/feed.xml)