<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>system-design on Ikoma's Blog</title><link>https://blog.yusukeikoma.com/tags/system-design/</link><description>Recent content in system-design on Ikoma's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 13 Aug 2026 10:14:09 +0900</lastBuildDate><atom:link href="https://blog.yusukeikoma.com/tags/system-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Separate the Live Document from the Saved Copy</title><link>https://blog.yusukeikoma.com/posts/live-document-and-saved-copy/</link><pubDate>Thu, 13 Aug 2026 10:14:09 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/live-document-and-saved-copy/</guid><description>Designing collaborative document editing with conflict-free synchronization, saved snapshots, and safeguards against overwriting content before initial sync.</description></item><item><title>Separate Authentication from What an Actor May Do</title><link>https://blog.yusukeikoma.com/posts/separate-authentication-and-authorization/</link><pubDate>Tue, 11 Aug 2026 17:14:04 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/separate-authentication-and-authorization/</guid><description>Designing API authentication and role-based authorization with actors, route permissions, and separate credentials for people and machines.</description></item><item><title>Do Not Load the Whole Past into the Model</title><link>https://blog.yusukeikoma.com/posts/search-before-write/</link><pubDate>Thu, 06 Aug 2026 14:41:04 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/search-before-write/</guid><description>Designing AI agent memory with retrieved context, durable task records, and evidence-based create or update decisions that tolerate search index lag.</description></item><item><title>A Transcript Is Not a Task List</title><link>https://blog.yusukeikoma.com/posts/transcript-is-not-a-task/</link><pubDate>Tue, 04 Aug 2026 22:38:09 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/transcript-is-not-a-task/</guid><description>Designing a meeting AI pipeline with separate transcription, summarization, and task extraction, preserving evidence and resolving deadlines from meeting time.</description></item><item><title>Keeping an Agent Resident Behind NAT</title><link>https://blog.yusukeikoma.com/posts/resident-agent-behind-nat/</link><pubDate>Mon, 03 Aug 2026 19:03:09 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/resident-agent-behind-nat/</guid><description>Designing a resident agent behind NAT with outbound connections, separate liveness checks, and on-demand SSH sessions for interactive access.</description></item><item><title>AI Agent Clean Architecture</title><link>https://blog.yusukeikoma.com/posts/ai-agent-clean-architecture/</link><pubDate>Tue, 07 Apr 2026 12:00:00 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/ai-agent-clean-architecture/</guid><description>Why I built an AI agent platform in Go instead of using LangChain, and how Clean Architecture made model, memory, tool, and streaming concerns independently replaceable.</description></item></channel></rss>